發表文章

目前顯示的是 4月, 2009的文章

DTMF

圖片

如何在ARM Embedded Linux實作automount功能

這是在"阿中部落格"上看到了,這功能滿好了。有機會來試試。 如何在ARM Embedded Linux實作automount功能 一般來說,目前我們桌上電腦當插入USB DISK,系統是使用udev來達成automount 在Embedded Linux中,我們並沒有跑udev這麼大的service,而是使用busybox的mdev 原理大概如下 Linux Kernel的hotplug -> 收到USB DISK insert/delete event -> 根據/proc/sys/kernel/hotplug指名的程式 -> 呼叫mdev -> mdev在根據/etc/mdev.conf設定檔指定batch file -> 執行相對應的/sbin/automount.sh 實作部份 Linux Kernel部份 ================ 在.config 將hotplug function打開 代碼: CONFIG_HOTPLUG=y 如果proc file system和sysfs file system沒打開的話也要記得打開(應該很少人會這個不開吧) 代碼: CONFIG_PROC_FS=y CONFIG_SYSFS=y 重新編譯kernel Busybox部份 =========== 很遺憾的Busybox 1.2版的mdev有bug,我是在Busybox 1.9版mdev source code發現已經fix這個bug了 Busybox的make menuconfig 請把mdev打開 P.S. 因為等下還有batch 需要grep 如果busybox沒開的話也要打開 target board file system部份 ============================ vi /etc/inittab 代碼: ttyRI0::sysinit:/bin/mount -t sysfs sysfs /sys ttyRI0::sysinit:/sbin/mdev -s ttyRI0::sysinit: /bin/echo /sbin/mdev > /proc/sys/kernel/hotplug 掛載sys

Keil 51 Compiler的memory model and Optimize

Keil 51 Compiler的memory model and Optimize Memory Model Keil C 51的Memory有三種: Small : variable in DATA Compact: variable in PDATA Large : variable in XDATA 其中variable的意思是指 宣告在function中的local variable。 雖 然依照一般C的implementation,function的local variable應該要從stack中allocate,但是可能是為了防止Stack過深,超過51的限制(51的stack是在idata)。所以 compiler會自動作function間的dependency checking,採用共用變數的方式,將local variable放在 _DATA_GROUP_。 Compiler的選項:Small,Compact,Large的設置就是決定這個segment存放的記憶體位置。 Small : variable in DATA,會將所有local variable放在 DATA,segment name叫_DATA_GROUP. Compact : variable in PDATA,會將所有local variable放在PDATA,segment name叫_PDATA_GROUP_. Large : variable in XDATA,會將所有local variable放在XDATA,segment name叫_XDATA_GROUP_. PDATA,XDATA都在外部,但是PDATA是在位址256以內,所以使用R0/R1 就可以index到,不需要用DPTR。 但是PDATA的size也被限制在256。 複習一下51的memory architeture,51內部有記憶體,但是也可以外加記憶體,使用外加的記憶體時,同時可以使用內不的記憶體。 用兩個不同的指令來區分對內部和外的memory動作: MOV : 對內 MOVX : 對外 對外的操作一定要用間接定址,index register可以用dptr或是R0/1。 對 內的操作,因為受到51是8bit cpu的影響,一個instruction只有8 bit,所以只能直接

Xshell 另一個免費的 telnet 軟體

在使用 putty & Pietty 後雖然不錯用。免費的。而且知需一隻執行檔。 但.....偶而會當掉,需要重新執行。 搜尋後,有人介紹 Xshell。支援ssh Xshell:官網網址 http://www.netsarang.com/products/xsh_detail.html 授權:個人使用免費 而且有支援中文(UTF-8)。 試用中。慢慢再把一些小技巧補上。 1. XShell的右鍵貼上功能設定 [Tools]>[Options]->[General頁籤] 1. 在 Delimiters 把 . (英文句點)拿掉,這樣就可以選擇包含副檔名的完整檔案名稱。 2. 選取下面的"Copy selected text to the clipboard automatically"。(按左鍵複製到剪貼簿功能) 3. Middle Button選取"Open the popup menu"。 4. Right Button選取"Paste the clipboard contents."。(按右鍵貼上功能) 參考: http://plog.hlps.tcc.edu.tw/plog/post/1/3321 比較詳細的介紹就去 綠色工廠 看看囉

悶!!!就是悶.....

搞了一個早上的TFTP...... 原本以為是STAR的u-BOOT有問題。 因為以前試的時候,有時會不行。但也不應該這麼慘,試了一個早上都不行...... 換條網路線就好了!!! 真是悶!!

How to dump HID report descriptor under Linux

You can detach and attach drivers by hand. To unbind hiddev from a device: cd /sys/bus/usb/drivers/hiddev ls Find the filename for the interface you want to unbind. Interface filenames have the form B-P:C.I where B is the bus number, P is a string of port numbers separated by periods, C is the configuration value, and I is the interface number. Having found the filename for the interface you want to unbind, do echo -n interface-filename >unbind To re-attach the driver, do echo -n interface-filename >bind Example: $# ls 1-3:1.0 1-5:1.0 1-7:1.0 1-7:1.1 bind module new_id uevent unbind $# su - Password: $# cd /sys/bus/usb/drivers/usbhid/ $# ls 1-3:1.0 1-5:1.0 1-7:1.0 1-7:1.1 bind module new_id uevent unbind $# echo -n 1-7:1.0 >unbind $# echo -n 1-7:1.1 >unbind $# lsusb -vvv | more

PuTTY SSH 軟體

putty.exe是一個可在windows平台上ssh連線的一套免費軟體。 可到下列網址下載: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 原本一為不支援中文,所以又上網查了一下, PieTTY 是一套國人修改著名的連線軟體 PuTTY 而來的 SSH/Telnet 連線軟體,它解決了 PuTTY 不適合中文輸入的問題,讓使用者不僅可以用它來進行 SSH 連線,也能夠用它來上 BBS 進行所需要的中文輸入。此外, PieTTY 來提供了一些增強的功能,如中英文版本合一、透明視窗、網址解析、自動傳輸等功能,都讓它在使用上比原來的 PuTTY 更加順手喔! 但,總覺得不好用。PuTTY 的介面已經不好用了,PieTTY 感覺更爛。 在用了一段時間後,再次上網查詢,發現0.56版後,就已經支援。 設定如下: 連線以後,選左上角 icon > Change Settings > Translation 把 charsetset 選成 utf-8 何謂ssh ssh是一種加密的連線方式,能夠避免因telnet明碼傳輸所造成的安全問題.

grepWin:Linux grep 指令的 GUI Interface For Windows

圖片
grepWin:Linux grep 指令的 GUI Interface For Windows 之前操作Linux系統時常常會用到“grep”這個指令,當一個目錄的檔案數量眾多時,在Linux為了過濾目錄檔案名稱都會下“ls –al | grep config”,這樣檔案清單有符合“config”字串的才會被顯示,在操作設定檔察月的時候grep一樣是很好用。前幾天在Windows修改廠商的某個.NET專案,那個程式真的是寫得很…恩…古典又帶有初學者的味道Orz~這個專案中共連接了10個以上不同的DB ,一般來說將Connection String寫在Web config中,然後在.cs中呼叫定義的連線字串。這一個專案非常好樣的~原本廠商的程式設計師居然將10個DB的連線分佈在好幾百個不同的.cs中!!在這幾百個檔案中也不知道有幾個是所需要修改的檔案!!太可怕了… 一般檔案數量少的話TigerLin會用Notepad++這套免費編輯工具一次拖進去進行修改,但這次光是用WINDOWS內建的搜尋介面–>內含文字功能我就要重複輸入N次做搜尋…聽起來一點都不SMART Orz~ 正當我在思索應該如何更Smart work時, Will推薦給我曙光般的工具– grepWin Google一下之後,在這裡 下載 完安裝後,試用了一下果然威力驚人!!更迷人的是還有整合滑鼠右鍵的ShellExtension功能(請看下圖)~     針對要進行搜尋的資料夾按下滑鼠右鍵,就會看到grepWin了,點一下滑鼠後即可進入GUI介面。這裡我使用了一個C#專案的資料夾,並以“NameSpace”進行測試搜尋,搜尋結果如下(順便附上常用欄位說明避免以後自己也忘了  ): 太黯然太銷魂了~且還支援正規表示式,在搜尋比對過濾清單的過程中列出的清單準確度高,再X配Notepad++真的是修改大量檔案必備的工具。還有一個小”眉角”要說明一下,請看下圖: 如果把grepWin下方的檔案清單權選拉到Notepad++後,拉到一般文字的編輯視窗會將檔案變成清單一般的輸出路徑;而拉到上方的Dock則會將所有拖曳的檔案全數開啟~就看各位的需求是怎樣了~最後要強調~正規表示式+ grepWin真的是超好用的啦^^b~推薦給各位~ 參考: http://bbs.mychat.to/reads.php?tid=