一,U-boot入門
1.1.1 編譯U-boot
1,解壓uboot文件,我學習用的是tiny6410的開發板,所以解壓uboot_tiny6410.tar.gz,進入uboot_tiny6410目錄。
tar xvzf uboot_tiny6410.tar.gz
cd uboot_tiny6410
2,配置並編譯
make tiny6410_config
make ARCH=arm CROSS_COMPILE=arm-linux-
3,使用dnw下載uboot.bin
4,下載完成後,將開發板從nand flash啓動,並迅速按任意鍵,進入uboot命令行模式。
1.1.2 U-boot命令集
1,help
查看當前開發板運行的uboot所支持的命令
2,環境變量
(1)printenv(print)
查看環境變量
(2)setenv(set)
修改環境變量
setenv name value
setenv name
(3) saveenv(save)
保存環境變量,將當前定義的所有變量及其值存入flash中。
3,文件下載
使用tftp通過網絡下載文件,需要配置好網絡。
//(1)設置開發板mac地址
setenv ethaddr 12:34:56:78:9A:BC
//(2)設置開發板ip地址,須和主機(tftp服務器)在同一個網段
setenv ipaddr 192.168.3.115
//(3)設置主機(tftp服務器)ip地址
setenv serverip 192.168.3.111
//(4)在開發板上ping主機(tftp服務器)
ping 192.168.3.111
//如果Ping不通,關閉windows和linux的防火牆
//(5)把主機(tftp服務器)上的內核文件下載到開發板
tftp 0xc0008000 uImage
//(6)啓動linux內核
bootm 0xc0008000
//bootm執行固定格式的二進制文件。固定格式指的是在內核文件開頭有固定格式的信息(如cpu信息).
4,內存
(1)查看內存內容-md
格式:md[.l/.w/.b] address
採用十六進制和ASCII碼兩種形式來顯示存儲單元的內容。這條命令還可以採用長度標識符.l(雙字),.w(字),.b(字節)。
(2)修改內存內容-mm
格式:mm[.b/.w/.l] address
修改內存,地址自動遞增。mm提供了一種互動修改存儲器內容的方法。它會顯示地址和當前值,然後提示用戶輸入。如果你輸入了一個合法的十六進制數,這個新的值將會被寫入到該地址。然後提示下一個地址。如果你沒有輸入任何值,只是按下了回車,那麼該地址的內容保持不變。如果想結束輸入,則輸入空格,然後回車。
5,Nand Flash
(1)擦除nand flash
nand erase [addr] [len]
擦除addr處開始的,長度爲len的區域。
(2)讀/寫nand flash
nand write [mem_addr] [flash_addr] [len]
將mem_addr地址處,長度爲len的數據,寫入flash_addr地址處。
nand read [mem_addr] [flash_addr] [len]
將flash_addr地址處,長度爲len的數據,讀到mem_addr地址處。
6,設置自動啓動
(1)設置從nand flash自動啓動
tftp c0008000 uImage
nand write c0008000 4000000 5000000
setenv bootcmd nand read c0008000 4000000 5000000 \;bootm c0008000
#saveenv
(2)設置自動下載內核到內存後自動啓動
setenv tftp c0008000 uImage \;bootm c0008000
saveenv