一、U-Boot入門
Uboot是業界老大,那如何編譯uboot,燒寫,和uboot命令的使用
1、編譯uboot
進入uboot_tiny6410的文件夾,使用命令:make tiny6410_config (對uboot先進行配置,具體配置在Makefile文件中,感興趣的話可以自己去看)。
編譯uboot:make ARCH=arm CROSS_COMPILE=arm-linux-(使用交叉編譯,cpu為arm,交叉編譯鏈為arm-linux-)
2、uboot使用命令
使用dnw將uboot下載到nand_flash中,從nand_flash啟動開發板,在倒計時的地方,回車就進入了uboot的命令行。
盡管uboot提供了豐富的命令集,但不同的開發板所支持的命令卻不一樣(可配置),help命令可用於查看當前單板所支持的命令。
#help 查看命令
#printenv或print:查看環境變量
#setenv name value...add/modify environment variable 'name' to 'value'
#setenv name delete environment variable 'name'
#saveenv 保存環境變量 將當前定義的所有變量及其值存入flash中。
下面配置一下tftp,目的是使用tftp將uImage內核下載到開發板中
注意:使用tftp首先要配置好網絡
#setenv ipaddr 192.168.142.83
#setenv serverip 192.168.142.84
一定要配置在一個網段,不然會出現ping不通的現象,也就不能使用tftp下載文件了。
pring一下服務器,看有沒有連通。
記得還要在服務器端啟動tftp,如果沒有安裝的話,還要安裝一個。
查看tftp是否安裝:netstat -a | grep tftp
安裝tftp:rpm -ivh 安裝包名
在啟動tftp之前要先配置:#vi /etc/xinetd.d/tftp
disable = no
server_args = -s /tftpboot tftp服務器共享文件夾
這個時候開發板作為客戶端,linux _pc機作為服務端。就可以登錄客戶端從服務器下載資料了(uboot已經安裝了tftp客戶端)
客戶端輸入:
tftp 0xc0008000 uImage把tftp服務器上的uImage下載到0xc0008000處。
說明:編譯內核會生產兩個鏡像文件zImag和uImag,uImag是有頭說明的,共64個字節。
bootm 0xc0008000 執行固定格式的2進制程序
md:顯示內存區的內容。
md采用十六進制和ASCII碼兩種形式來顯示存儲單元的內容。這條命令還可以采用長度標示符.l,.w和.b:
md [.b,.w,.l]address
mm修改內存,地址自動遞增。
mm [.b,.w,.l] address
mm提供一種互動修改存儲器內容的方法。它會顯示地址和當前值,然後提示用戶輸入。如果你輸入了一個合法的十六進制數,這個新的值就會被寫入該地址。然後提示下一個地址。如果你沒有輸入任何值,只是按了一下回車,那麼該地址的內容保存不變。如果想結束輸入,則輸入空格,然後回車
nand erase 起始地址start長度len
擦除start處開始的,長度為len的區域
范例:#nand erase 0x4000000 0x500000
寫和讀NAND_FLASH
nand write 內存起始地址 flash起始地址 長度len
將內存起始地址處,長度為len的數據,寫入flash起始地址處。
#nand write c0008000 400000 500000
nand write 內存起始地址 flash起始地址 長度len
將flash起始地址處,長度為len的數據,讀到內存起始地址處。
#nand read c0008000 400000 500000
設置自啟動
1:設置從nand flash自動啟動
#setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000
2:設置自動下載內核到內存後啟動
#setenv bootcmd tftp c0008000 uImage.bin \;bootm c0008000