AM1808的RBL UBL

源地址:http://blog.csdn.net/chlputi/archive/2011/05/11/6411004.aspx

 

RBL  ARM ROM Boot Loader )在芯片出廠的時候就已經燒寫到 ROM 裏了,這不需要大家關心,上電後, RBL 會自動從 EMIFA EM_CS2 memory space (0x0200 0000). 執行指令,這個地址就是 NAND FLASH  NOR FLASH 的片選起始地址。當你的系統設置爲 NAND BOOT 的時候, UBL  User Boot Loader )是必不可少的,否則 RBL 不能直接把 UBOOT 給 BOOT 起來,因爲 RBL 只支持 14K NAND FLASH 的 BOOT 程序,而 UBOOT 編譯出來後的 bin 文件一般都大於 80K ,特別是版本越高, UBOOT 的代碼越大,所以這時候就需要寫一個 UBL 。 UBL 從 NAND FLASH 讀取 UBOOT ,然後把 UBOOT COPY  DDR2(RAM) 的相關地址上,然後把 UBOOT  BOOT 起來。根據 TI DAVIN RBL 的規定,不同型號的 NAND FLASH  UBL 保存的地址是不同的, 512 字節 PAGE  NAND (即 SMALL PAGE ),保存的地址是: 0x00004000(16K,32頁)  2048 字節 PAGE  NAND (即 LARGE PAGE )保存的地址是: 0x20000 (128K,64頁)。

 

 

------------------------------------------------------我想說的話-----------------------------------------------------------------------

看來TI的片子與三星的有所不同。

據我瞭解,三星的片子上電後會自動從nandflash中搬移4kb到RAM,然後這4K的程序會完成後面的搬移工作。

而TI的片子,說RBL會從nand裏執行指令,所以先nand的頭上要放個ubl來幫助uboot boot起來。

不知道我這樣理解是否正確。

——————————————————————————————————————————————

2011-8-11 添加

RBL, UBL, Uboot的關係:RBL=ROM Bootloader,UBL=user Bootloader。RBLTI固化在芯片ROM中的bootloader,OMAP上電啓動過後首先將運行RBL,然後通過RBL加載UBL,再通過UBL加載uboot,而uboot就是用來加載Linux內核的。如果在具體應用過程中不需要使用到Linux(實際上一般都會用到的),uboot甚至是UBL都可以省去。UBL爲一級Bootloader,uboot二級Bootloader,一級Bootloader的大小是有限制的(應該是64KB以下,沒查到具體數值),這也是爲什麼會有二級Bootloader的原因。如果一個應用程序小於這個大小,那麼我們可以不需要燒寫UBL,而只用燒寫該應用程序相應的bin文件(下面第3點將闡述如何得到這個文件)就行了。


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