發表文章

目前顯示的是 2月, 2013的文章

gdb-7.5.1 crosee compilier

################### ##       termcap       ## ################### gdb 需要 termcap wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz tar xvzf termcap-1.3.1.tar.gz cd termcap-1.3.1 ./configure --target=arm-linux --prefix=`pwd`/./install configure 沒辦法改 toolchain 手動修改 vim Makefile -CC = gcc -AR = ar -RANLIB = ranlib +CC = arm-linux-gcc +AR = arm-linux-ar +RANLIB = arm-linux-ranlib make make install ################### ##           gdb          ## ################### wget http://ftp.gnu.org/gnu/gdb/gdb-7.5.1.tar.bz2 tar xjvf gdb-7.5.1.tar.bz2 這個例子 target board 是 ARM,因為要支援 remote gdb,所以 host 是 PC 1. build gdb for PC (不需要 termcap) ./configure \ --host=i686-pc-linux-gnu --target=arm-mv5sft-linux-gnueabi \ --program-prefix=arm-linux- \ --prefix=`pwd`/./install_pc tui 版本沒編出來??再研究... --enable-tui make && make install 會產出 arm-linux-gdb 2. build gdb & g...

網路 Transformer 的用途

圖片
在 Ethernet 電路的時候,在 PHY 和 RJ45 介面中間我們會用到一個很常用的器件 — Transformer ,又叫做網路變壓器。 當然,現在很多 Transformer 是整合在 RJ45 connect 的,這會為產品的設計節省空間和時間,減小出錯的概率。 那麼為什麼需要這個 Transformer 呢? 其實,從理論上說,是可以不接這個網路變壓器的,我們直接將 PHY 晶片和 RJ45 連上,設備也能正常工作,但是這時傳輸距離就會受到限制, 而且由於外部其他網路的 PHY 的電位不是固定的(有 2.5V 、 3.3V 等),當外接不同電位的網路時也會受到影響,同時外部干擾也會對設備造成很大的影響。 但是,我們有了網路變壓器這個好東東之後,它就可以用於信號電位耦合和隔離外部的干擾以及實現阻抗匹配。 這樣就可以增加傳輸距離,同時使晶片與外部隔離,增強抗干擾能力。 如上面兩個圖所示,在發送差分線和接收差分線之間會並聯兩個 49.9 或者 50 Ω ( 1% )的終接電阻,這個電阻的作用是為了實現阻抗匹配,對於匝數比 1 : 1 的變壓器,其輸入電阻和輸出電阻之比也是 1 : 1 ,這樣並聯的結果,在輸出端看來就是 100 Ω 的匹配電阻,現在我們所用的雙絞線的特徵阻抗大多是 100 Ω 。 我們仔細觀察上圖會發現,變壓器的中心抽頭有的接了 3.3V 的電位,有的接了 2.5V 的電位,有的懸空了。實際上這個主要與 PHY 的 UTP 電路類型決定的。這種驅動類型有兩種,電壓驅動和電流驅動。電壓驅動的接電源,電流驅動的直接接電容到底即可。至於為什麼接電源時,所接的電壓會不同呢?這是由所用的 PHY 規定的 UTP 埠電位決定的。所以對於不同的 PHY ,網路變壓器的中心抽頭會有不同的解法,我們在進行設計時,需要仔細查看 datasheet 和 reference design 。 由此看來,網路變壓器的主要作用就是信號傳輸、阻抗匹配、波形修復、信號雜波抑制和電壓隔離等。 refernece: http://www.emsym.com/blog/?p=1779

C語言測試 想成為嵌入式程序員應知道的0x10個基本問題

============================================== C語言測試 想成為嵌入式程序員應知道的0x10個基本問題 原文出處 A 'C' Test: The 0x10 Best Questions for Would-be Embedded Programmers: http://www.embedded.com/2000/0005/0005feat2.htm 以下是網路上找到中文版,作者不詳。 ============================================== C語言測試是徵選嵌入式系統程式員過程中必須而且有效的方法。這些年我既參加也組織 了許多這種測試,在這過程中我意識到這些測試能為面試者和被面試者提供許多有用訊息 ,此外,撇開面試的壓力不談,這種測試也是相當有趣的。 從被面試者的角度來講,你能瞭解許多關於出題者或監考者的情況。這個測試只是出題者 出某個字符的ASCII值。這些問題著重考察你的系統調用(invoke)和記憶體分發策略方面 的能力嗎?這反映出出題者也許花時間在微處理機上而不在嵌入式系統上。 如果上述任何問題的答案是「是」的話,那麼我知道我得認真考慮我是否應該去做這份工 作。 從面試者的角度來講,一個測試也許能從多方面揭示應試者的素質。最基本的,你能瞭解 應試者C語言的水準。不管怎麼樣,看一下這人如何回答他不會的問題也是滿有趣。應試 者是以好的直覺做出明智的選擇,還是只是瞎蒙呢?當應試者在某個問題上卡住時是找藉 口呢,還是表現出對問題的真正的好奇心,把這看成學習的機會呢?我發現這些訊息與他 們的測試成績一樣有用。 有了這些想法,我決定出一些真正針對嵌入式系統的考題,希望這些令人頭痛的考題能給 正在謀職的人一點幫住。這些問題都是我這些年實際碰到的。其中有些題很難,但它們應 該都能給你一點啟發。 這個測試適用於不同水準的應試者,大多數初級水準的應試者的成績會很差,經驗豐富的 程式員應該有很好的成績。為了讓你能自己決定某些問題的偏好,每個問題沒有分發分數 ,如果選擇這些考題為你所用,請自行按你的意思分發分數。 ============================================== 預處理器 (Preprocessor) 1.用預處理指令#define 聲...

busybox syslogd & klogd

圖片
上面這張圖可以完整解釋 syslog 的原理。 用法: openlog ("MyProgram", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL0); syslog (LOG_INFO, "Program started by User %d", getuid ()); syslog (LOG_ERR, "Ouch an ERROR!"); closelog (); openlog & closelog 可以不需要 而 klogd 則是抓取 kernel 並送給 syslog 存起來,可以從下面看出來。 static void doKlogd(...) {     ...     syslog(priority, "%s", message);     ... } reference: http://fanqiang.chinaunix.net/a4/b8/20010524/190000219_b.html http://www.codealias.info/technotes/syslog_simple_example http://www.linuxselfhelp.com/gnu/glibc/html_chapter/libc_18.html http://www.cyut.edu.tw/~ywfan/netlab/20060912chapter11-log.htm http://moto.debian.tw/viewtopic.php?t=9059& http://www.softpanorama.org/Logs/syslog.shtml

用pure C寫CGI的輔助工具-CGIC library

http://daydreamer.idv.tw/rewrite.php/read-29.html

cut,sed,awk 字串處理

cut 教學:   cut -b 10- filename //刪除該列的前10個字元   cut -d(分界字元) filename //指定欄位的分界字元 sed 教學:   sed -e '3d' //刪除第3列   sed -e '2,5d' //刪除第2~5列   sed -e '4,$d' //刪除第4列,但第4列是最後一列;錢字號『 $ 』代表最後一行!   sed -e "/${var}/"d //在shell中,用變數代替   sed 's/^...//' //刪除該列的前3個字元   sed 's/...$//' //刪除該列的最後3個字元   sed '/Hello/d' dataf3 //刪除Hello該列   sed -i “s/\r//”FILENAME //刪除檔案中的^M字元   sed 's/要被取代的字串/新的字串/g'   ex: sed 's/*//g' //將「*」符用空白字元取代 awk教學:   awk 'NR!=3 {print $0}' //刪除第3列   awk '!(NR>=2 && NR<=5){print $0}' //刪除第2~5列 綜合:   捉取第一列的「 : 」前的資料   awk 'NR==1' aaa . a | cut - f 1 - d :   捉取第一列的「 : 」前的資料並計算個數   awk 'NR==1' aaa . a | cut - f 1 - d : | wc - m    cat test.sh | awk -F = '/Sub 1/ {print NR}' //抓test.sh的Sub 1所在的列數   抓取Channel方法   iwconfig ra0 2>/dev/null | grep Channel | awk '{print $2}' | cut -b 9- 節錄自...

如何在 Linux 下快速建立一個虛擬網卡 (虛擬 IP)

ifconfig eth0:0 192.168.9.9 up ifconfig eth0:0 down

轉貼:IR Driver (kernel 2.6.18)

先紀錄,再研究 http://personlin118.pixnet.net/blog/post/69022

readelf 可用來知道需要哪些 so 檔

arm-mv5sft-linux-gnueabi- readelf -d /NFS/marvell_rfs/usr/sbin/thttpd  Dynamic section at offset 0x10f10 contains 25 entries:   Tag        Type                         Name/Value  0x00000001 (NEEDED)                     Shared library: [libcrypt.so.1]  0x00000001 (NEEDED)                     Shared library: [libc.so.6]  0x0000000c (INIT)                       0x9488  0x0000000d (FINI)                       0x15694  0x00000019 (INIT_ARRAY)                 0x20f04  0x0000001b (INIT_ARRAYSZ)               4 (bytes)  0x0000001a (FINI_ARRAY)           ...

thttpd Web server 使用

httpd 是 busybox 中自帶的 web server,功能弱,不支持認證和 CGI。 t httpd 支持認證 CGI,功能比較全, 所以選擇 thttpd 作為 web server。 下面是 thttp 的介紹:             thttpd - tiny/turbo/throttling HTTP server                     version 2.25b of 29dec2003 thttpd is a simple, small, portable, fast, and secure HTTP server. Simple: It handles only the minimum necessary to implement HTTP/1.1. Small: See the size comparison chart at http://www.acme.com/software/thttpd/notes.html#sizes.  It also has a very small run-time size, since it does not fork and is very careful about memory allocation. Portable: It compiles cleanly on FreeBSD 2.x/3.x, SunOS 4.1.x, Solaris 2.x, BSD/OS 2.x, Linux 1.2.x, OSF/1 (on a 64-bit Alpha), and no doubt many others. Fast: In typical use it's about as fast as the best full-featured servers (Apache, NCSA, Netscape).  Under extreme load it's much faster. Secure: It goes to great lengths to p...

thttpd-2.25b crosee compilier

圖片
wget http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz CC=arm-mv5sft-linux-gnueabi-gcc ./configure make  / # thttpd  thttpd: unknown user - 'nobody' 因為需要指定登入者 / # thttpd -u root -p 8000 指定為 root 登入, port number: 8000 接下來測試是否可用, 利用網頁登入(http://ip-address:8000/), 可以看到下面資訊

Linux framebuffer 簡介

基本上,framebuffer是一塊連續的記憶體,其內容就是從LCD看到的螢幕內容(display),由CPU寫入。因此,螢幕的改變,包括滑鼠的移動,視窗拖移,都會改變framebuffer的內容。 所以可以如下清空螢幕:   dd if=/dev/zero of=/dev/fb 也可複製螢幕的snapshot: dd if=/dev/fb of=snapshot 然後再把它寫回去 dd if=./snapshot of=/dev/fb0