Bootloader NORFLASH NANDFlash EBOOT NBOOT UBOOT SDRAM NK.bin NK.nb0

理清一下Bootloader NORFLASH NANDFlash EBOOT NBOOT UBOOT SDRAM NK.bin NK.nb0的關係

一、在掌上電腦裏要使用NAND FLASH存儲數據和程序,但是必須有NOR FLASH來啓動。除了SAMSUNG處理器,其他用在掌上電腦的主流處理器還不支持直接由NAND FLASH啓動程序。因此,必須先用一片小的NOR FLASH啓動機器,再把OS等軟件從NAND FLASH載入SDRAM中運行。

二、Bootloader的概念就是一個用於引導的loader,在系統上電的時候最先被運行,然後對硬件平臺做最基本的初始化,最後把操作系統加載起來。不同的嵌入式操作系統都有自己的Bootloader,但是本質功能都是一樣的。

三、在WinCE中用的最多的就是EBOOT,是一個基於網絡的Bootloader,而且可以根據需要帶有命令行菜單功能,網絡調試功能以及文件系統的相關功能。在這裏我只談ARM平臺的引導,一般基於不同的硬件設計,會有不同的引導方式:

1、NORFlash Boot:一般ARM處理器的片選0都會接有NORFlash,這樣在ARM上電以後,會從0地址開始執行程序,也就是從NORFlash的0地址開始執行。所以把EBOOT燒到NORFlash的0地址開始的地方,這樣在上電以後,EBOOT在NORFlash裏面開始執行,也可以自拷貝到SDRAM中執行。最後加載WinCE image並運行。

2、NANDFlash Boot with EBOOT:由於NORFlash容量小,價格貴,現在很多ARM處理器支持NandFlash引導。不同廠家的處理器對Nandflash的引導略有區別,具體要看datasheet。但是本質就是先從Nandflash中讀出一個小的Loader來運行,這個Loader再從Nandflash中加載EBOOT到SDRAM中運行,最後EBOOT加載WinCE image,就是NK.bin。
a、如果在NandFlash引導的時候不需要EBOOT,也可以不用EBOOT。這樣就是系統啓動 後從Nandflash中加載一個小的Loader,小的Loader對硬件系統作基本的初始化,然後 直接加載WinCE image,一般應該是NK.nb0,然後運行。

3、這裏來說一下NK.bin與NK.nb0,兩個不同的WinCE image。
a、NK.nb0:就是一個可以直接運行的WinCE映像文件,直接拷貝到SDRAM中就可以運行。
b、NK.bin:被稱爲Windows CE binary image data format文件格式,是一種包含了多個獨立紀錄(Section)的二進制文件。在加載的時候,需要分別加載,不同的Section加載到不同的地方。所以NK.bin需要Bootloader進行解釋性加載。但是他的Size會比NK.nb0小。可以使用viewbin命令查詢NK.bin中的紀錄信息。

nboot,eboot和uboot三者均爲bootloader。

----nboot是samsung系列cpu爲了能將nondflash裏的前4KB程序複製到SRAM中運行,而寫的。nboot很小(小於等於4k),一般用在從nandflash啓動的情況,nandflash不支持xip,所以必須有一個可以執行的程序將燒寫在其中的eboot搬到內存中,nboot就是幹這個的。所以nboot一般配合eboot一起使用。

----eboot,即ethernet boot,因爲起始時,都是通過網口更新的。現在大都加入了USB下載功能,eboot可以單獨使用,就是把eboot燒寫到norflash中,norflash支持xip,所以eboot可以自己把自己搬到內存中。

----uboot是linux下主要使用的,不過現在已經剝離開來,ce下已經可以移植了,只是用來debug的多,實際合入工程的少,畢竟與wince系統的契合度不高。

NOR:EBoot->WinCE(NK.bin)
NAND:NBOOT->EBoot->WinCE(NK.bin)
NAND:EBoot->WinCE(NK.nb0)

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