1. 程式人生 > >jz2440開發板基本操作

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