uboot開發流程

uboot其實就是一段比較複雜的單片機代碼用來作爲引導程序,它的主要任務是初始化硬件設備,將系統的軟硬件環境帶到一個合適的狀態,再將內核從一種存儲介質讀入到內存中,然後跳到內核的入口點去運行,即操作系統。

uboot有兩種工作模式:啓動模式和下載模式。

uboot啓動過程屬於兩階段stage1(彙編)和stage2(C語言),stage1完成初始化硬件,爲stage2準備內存空間,並將stage2的代碼複製到內存中,設置好堆棧,然後跳到stage2,在stage2中調用內核。

1.uoobt移植(暫時不介紹)

2.編譯生成u-boot.bin文件

以mini2440移植uboot爲例(未經移植的uboot不支持mini2440\)

(1)選擇要使用的board

make mini2440_config

(2)編譯生成u-boot.bin

make  CROSS_COMPILE=arm-linux-

3.uboot的使用-基本命令

不同單板所支持的命令不一定會一樣

(1) help 用於查看當前單板所支持的所有命令

(2) printenv 查看環境相關變量

(3) setenv 添加、修改、刪除環境變量

            setenv name value  修改或添加變量name

            setenv name   刪除變量name

(4) saveenv 保持環境變量,將當前的定義的所有環境變量保存到flash

(5) tftp 通過網絡下載文件(需要先配置網絡)

例:

Uboot> setenv ethaddr 12:34:56:78:9A:BC

Uboot> setenv ipaddr 192.168.2.118

Uboot> setenv serverip 192.168.2.1 (tftp服務器的地址)

Uboot> tftp 32000000 uImage (把severip中的服務目錄下的uImage通過tftp讀入到0x32000000)

(6) md 顯示內存區的內容

md採用16進制和ASCII碼兩種形式來顯示存儲單元的惡內容

md可以採用標示符.l(長字),.w(字),.b(字節)

Uboot> md.w  100000  以字的形式顯示在0x100000處的內容

(7) mm 修改內存,地址自動增加

用法 mm [.b,.w,.l] address

mm提供一種互動修改存儲器內容的方法,它會顯示地址和當前的值,然後提示用戶輸入。如果輸入了一個合法的16進制的值將會被寫入該地址,然後提示下一個地址。如果沒有任何輸入值,只是按下回車,那麼該地址的內容保持不變。結束輸入,則輸入空格在回車。

Uboot> mm 100000

(8) flinfo 查看flash扇區信息

(9) protect  flash寫保護,打開或關閉扇區寫保護。

用法 protect off|on all 關閉|打開所有扇區的寫保護

         protect off|on start end  關閉|打開從start到end扇區的寫保護(start和end是指定扇區的地址)

(10) erase  插除flash扇區

用法 erase start end

在使用cp命令向nor flash寫入數據之前必須要先使用erase命令查除flash,應爲nor flash按字節寫入時,無法寫入1,所以必須通過查除來寫入1。

Uboot> erase 3000 1effff

(11) cp 拷貝數據

用法 cp [.b,.w,.l] sddress  daddress len 將內存saddress地址處的數據(長度爲len)拷貝到daddress處

cp提供了一種內存與內存,內存與flash之間數據拷貝的方法

Uboot> cp.b 31000000 50000 d0000

(12) go  執行內存中的二進制代碼

用法 go addr  [arg...]

(13) bootm 執行內存中的二進制代碼,要求二進制代碼有固定的頭文件

用法 bootm [addr [arg...] ]

(14) bdinfo (簡寫爲bdi) 顯示開發板信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章