uboot結構與使用

2021-06-04 14:15:36 字數 954 閱讀 3323

如果系統上電時bms為低電平,則系統從片外的flash啟動。為了從片外的flash啟動uboot,我們必須把boot.bin放到0x0位址出,使得從flash啟動後首先執行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內rom啟動uboot。然後再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經啟動了uboot,可以這樣操作:

uboot>protect off all

uboot>erase all

uboot>loadb 20000000

uboot>cp.b 20000000 10000000 5fff

uboot>loadb 21000000

uboot>cp.b 210000000 10010000 ffff

然後系統復位,就可以看到系統先啟動boot,然後解壓縮uboot.gz,然後啟動uboot。注意,這裡uboot必須壓縮成.gz檔案,否則會出錯。

怎麼編譯這三個原始碼包呢,首先要建立乙個arm的交叉編譯環境,關於如何建立,此處不予說明。建立好了以後,分別解壓原始碼包,然後修改makefile中的編譯器專案,正確填寫你的編譯器的所在路徑。

對loader和boot,直接make。對uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會在當前目錄下分別生成*.bin檔案,對於uboot.bin,我們還要壓縮成.gz檔案。

也許有的人對loader和boot搞不清楚為什麼要兩個,有什麼區別嗎?首先有區別,boot主要完成從flash中啟動uboot的功能,他要對uboot的壓縮檔案進行解壓,除此之外,他和loader並無大的區別,你可以把boot理解為在loader的基礎上加入了解壓縮.gz的功能而已。所以這兩個並無多大的本質不同,只是他們的使命不同而已。

特別說名的是這三個軟體包都是開放原始碼的,所以使用者可以根據自己的系統的情況修改和配置以及裁減,打造屬於自己系統的bootloder。

U boot記憶體結構。

u boot,除非在ram中除錯,一般情況下都是從flash中執行一段 然後將flash中儲存的 和資料搬移到ram中,然後跳轉到ram中執行。當然這應該也是一般的bootloader的執行方式,大家都差不多,但是各個bootloader的記憶體規劃 棧,堆之類的 也 不太一樣,而且u boot還在...

uboot目錄結構

universal boot loader,普遍的引導程式。是非常常用的乙個引導程式,可作為主流系統的引導程式,如openbsd,netbsd,freebsd,4.4bsd,linux,svr4,esix,solaris等等,當然同時也支援多種常見的cpu處理器,如mips x86 arm nios...

使用skyeye編譯u boot

本試驗的執行環境 vmware workstation redhat 9.0 本實驗需要的檔案 arm linux gcc 3.4.1.tar.bz2 arm linux gcc 3.3.2.tar.bz2 arm elf 20040427.tar.bz2 u boot 1.2.0.tar.bz2 ...