一直在尋找GNU/Linux的工作、生活方式,Linux下的嵌入式開發也一樣
用vivi燒寫root文件系統時,如果通過minicom的xmodem串口傳輸方式,16M要用大約3個半鍾
後來為了提高效率,找到了這個USB方式燒寫軟體DNW,16M文件系統的燒寫只需1分多鐘
下載dnw_linux.rar
解壓后的編譯過程如下
$ cd dnw_linux/
$ ls
dnw secbulk
$ cd dnw/
$ ls
dnw.c
編譯dnw燒寫程序
$ gcc dnw.c -o dnw
$ ls
dnw dnw.c
$ sudo cp dnw /usr/local/bin/
$ cd ..
$ cd secbulk/
$ ls
Makefile secbulk.c
編譯dnw相應的內核模塊
$ make -C /lib/modules/`uname -r`/build M=`pwd` modules
make: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
CC [M] /home/c-aries/下載/dnw_linux/secbulk/secbulk.o
/home/c-aries/下載/dnw_linux/secbulk/secbulk.c: In function ‘secbulk_write’:
/home/c-aries/下載/dnw_linux/secbulk/secbulk.c:58: warning: comparison of distinct pointer types lacks a cast
Building modules, stage 2.
MODPOST 1 modules
CC /home/c-aries/下載/dnw_linux/secbulk/secbulk.mod.o
LD [M] /home/c-aries/下載/dnw_linux/secbulk/secbulk.ko
make: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
$
上一步如編譯出錯,可能是相應的內核頭文件尚未安裝
Debian系統下,可運行如下命令解決
$ uname -r
2.6.26-2-686
$ sudo apt-get install linux-headers-2.6.26-2-686
註冊內核模塊
$ sudo insmod secbulk.ko
$ dmesg | tail -1
[33298.895244] usbcore: registered new interface driver secbulk
$
dmesg輸出說明secbulk模塊已安裝成功(重啟系統會失效)
使用dnw
在minicom中輸入燒寫root文件系統的命令
vivi > load flash root u
USB host is connected. Waiting a download.
提示等待usb方式燒寫
打開另一個虛擬終端,燒入當前目錄中的rootfs.yaffs
$ sudo dnw rootfs.yaffs
file name : rootfs.yaffs
file size : 4515456 bytes
Writing data...
100% 4515466 bytes OK
$
另一個終端顯示
vivi > load flash root u
USB host is connected. Waiting a download.
Now, Downloading [ADDRESS:30000000h,TOTAL:4515466]
RECEIVED FILE SIZE: 4515466 (489KB/S, 9S)
Downloaded file at 0x30000000, size = 4515456 bytes
Found block size = 0x00450000
Erasing... ... done
Writing... ... done
Written 4515456 bytes
vivi >
root文件系統,usb方式燒寫成功
嵌入式
[火星人 ] 用USB方式燒寫ARM板已經有781次圍觀