jz2440開發板基本操作
1 燒寫裸板程式的4種方法
1.1 使用並口工具燒寫
1.2 使用jlink燒寫(只能燒寫nor flash)
1.3 使用openjtag工具燒寫(配合oflash)
1.4 nor flash上的uboot燒寫:
1.4.1 利用u-boot的選單功能通過usb燒寫
將開發板調為nor flash啟動,接好開發板串列埠線後上電,u-boot啟動倒計時按任意鍵進入選單,選擇n,下載程式到nand flash,接著接上usb線(串列埠旁的usb口),利用dnw軟體傳送程式。下載完後開發板斷電,將開發板調到nand flash啟動,上電觀察效果。
Ubuntu下使用dnw:
sudo cp dnw /bin
sudo chmod +x /bin/dnw
sudo chmod +s /bin/dnw(使其具有超級許可權,使用時就不用總是加sudo命令)
lsusb檢視多了一個usb裝置
dnw uImage
dnw是一個USB工具,通過USB傳送檔案給具有USB下載功能的bootloader。
命令本身的使用方法為(要傳送成功,單板必須執行具有USB下載功能的bootloader):
sudo dnw <file> [address]
意思為:它將檔案<file>通過USB口傳送到單板上;
[address]用來表示dnw想告訴開發板,這個檔案想儲存在的SDRAM地址;
可以不寫[address],預設為0x30000000;
bootloader會自己決定把檔案儲存在SDRAM哪裡,是否使用[address]取決於bootloader。
另外無論是Ubuntu或Windows下也可以不使用u-boot的選單,輸入q退出選單,然後使用u-boot的命令進行操作。
usb命令的使用方法可以輸入“help usbslave”命令看到:
usbslave [wait] [loadAddress](只起)
"wait" is 0 or 1, 0 means for return immediately, not waits for the finish of transferring
這表示:執行usbslave即可啟動USB下載,[wait]、[loadAddress]這兩個地址是可選的;
如果[wait]的值是0,u-boot將不等待USB傳輸完成,這時你可以立刻輸入下一條u-boot命令;
如果[wait]的值是1,u-boto將等待USB傳輸完成,完成之後你才能輸入下一個u-boot命令;
如果指定[loadAddress],那麼下載的檔案將儲存在SDRAM地址[loadAddress]處,否則存放地址由主機的dnw命令指定
注意,dnw和usbslave命令配合只是把程式下載到SDRAM中,還得用nand erase和nand write寫到nand flash中。
1.4.2 TFTP下載
電腦端下載tftpd32服務端軟體,指定下載程式目錄,指定網絡卡(我的是無線網絡卡)。開發板調成nor flash啟動,接好串列埠,將開發板的網線接到無線路由器上,上電後任意鍵進入u-boot選單,q退出選單,可以利用help tftp檢視使用方法,接著print檢視ip,ipaddr為開發板ip,serverip為tftp伺服器ip(即電腦ip),輸入如下三條命令:
set ipaddr 192.168.3.11,set servip 192.168.3.2,save,然後利用ping 192.168.3.2,此處應注意關閉電腦的防火牆,還有就是不能用電腦ping主機板,u-boot不會回ping包。
tftp 30000000 lcd.bin(將lcd.bin這個程式下載到SDRAM中),利用mtd命令檢視nand flash分割槽,nand erase bootloader(擦除這個分割槽),nand write 30000000 bootloader
(將程式下載到nand flash),下載完後開發板斷電,將開發板調到nand flash啟動,上電觀察效果。
1.4.3 NFS下載
nfs 30000000 192.168.3.6:/work/nfs_root/uImage(Ubuntu主機ip與其nfs配置的路徑)
2 重新燒寫整個系統
2.1 燒寫u-boot。
2.2 燒寫核心:dnw或者tftp
dnw: 在選單裡輸入k, 然後使用dnw.exe傳送檔案
tftp:
tftp 30000000 uImage
nand erase kernel
nand write.jffs2 30000000 kernel
2.3 燒寫檔案系統
dnw: 在選單裡輸入y, 然後使用dnw.exe傳送yaffs2檔案
或
dnw: 在選單裡輸入j, 然後使用dnw.exe傳送jffs2檔案, 再參考使用手冊P44設定bootargs
tftp:
tftp 30000000 fs_qtopia.yaffs2
nand erase root
nand write.yaffs 30000000 0x00260000 $(filesize)
or:
tftp 30000000 fs_qtopia.jffs2
nand erase root
nand write.jffs2 30000000 0x00260000 $(filesize)
燒寫完後,輸入reset
3 uboot打補丁、建source insight工程、編譯、燒寫
打補丁:tar -xjvf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6
patch -p1 < ../u-boot-1.1.6_100ask24x0.patch
tar -cjvf ../u-boot-1.1.6_jz2440.tar.bz2 ../u-boot-1.1.6
patch命令p後面的數字代表去掉第n個斜線前的內容,我們現在已經在u-boot-1.1.6目錄,所以是-p1。
編譯:cd u-boot-1.1.6
make 100ask24x0_config
make
4.核心打補丁、建source insight工程、編譯、燒寫
打補丁:tar -xjvf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6/
patch -p1 < ../linux-2.6.22.6_jz2440.patch
tar -cjvf ../linux-2.6.22.6_jz2440.tar.bz2 ../linux-2.6.22.6
編譯:cp config_ok .config
make uImage
問題:"mkimage" command not found - U-Boot images will not be built
執行sudo apt-get install uboot-mkimage提示:However the following packages replace it: u-boot-tools:i386 u-boot-tools,然後執行sudo apt-get install u-boot-tools