WinCE Boot方式及 Bootloader架构概述
Bootloader的概念就是一個用于引導的loader,在系統上電的時候最先被運行,然后對硬件平臺做最基本的初始化,最后把操作系統加載起來。不同的嵌入式操作系統都有自己的Bootloader,但是本質功能都是一樣的。
在WinCE中用的最多的就是EBOOT,是一個基于網絡的Bootloader,而且可以根據需要帶有命令行菜單功能,網絡調試功能以及文件系統的相關功能。在這里我只談ARM平臺的引導,因為其他架構的CPU我沒用過,就不吹牛了。一般基于不同的硬件設計,會有不同的引導方式:
?
NORFlash Boot:
一般ARM處理器的片選0都會接有NORFlash,這樣在ARM上電以后,會從0地址開始執行程序,也就是從NORFlash的0地址開始執行。所以把EBOOT燒到NORFlash的0地址開始的地方,這樣在上電以后,EBOOT開始執行,可以在NORFlash里面執行,也可以自拷貝到SDRAM中執行。最后加載WinCE image并運行。
?
NANDFlash Boot with EBOOT:
由于NORFlash容量小,價格貴,現在很多ARM處理器支持NandFlash引導。不同廠家的處理器對Nandflash的引導略有區別,具體要看datasheet。但是本質就是先從Nandflash中讀出一個小的Loader來運行,這個Loader再從Nandflash中加載EBOOT到SDRAM中運行,最后EBOOT加載WinCE image,就是NK.bin。
?
NANDFlash Boot without EBOOT:
如果在NandFlash引導的時候不需要EBOOT,也可以不用EBOOT。這樣就是系統啟動后從Nandflash中加載一個小的Loader,小的Loader對硬件系統作基本的初始化,然后直接加載WinCE image,一般應該是NK.nb0,然后運行。
?
?
這里來說一下NK.bin與NK.nb0,兩個不同的WinCE image。
?
NK.nb0:就是一個可以直接運行的WinCE映像文件,直接拷貝到SDRAM中就可以運行。
NK.bin:被稱為Windows CE binary image data format文件格式,是一種包含了多個獨立紀錄(Section)的二進制文件。在加載的時候,需要分別加載,不同的Section加載到不同的地方。所以NK.bin需要Bootloader進行解釋性加載。但是他的Size會比NK.nb0小??梢允褂胿iewbin命令查詢NK.bin中的紀錄信息。
??????????? viewbin –rec nk.bin
?
?
前面已經講過了一般系統會使用到的引導方式,下面介紹一下EBOOT。在WinCE中EBOOT一個作用可以加載WinCE image,還可以通過網絡配合Platform Builder下載WinCE image進行調試。在開發一個新的BSP的時候,首先會基于一個相似的平臺的BSP進行克隆,然后要做的就是要開發和調試EBOOT了,EBOOT的架構如圖:
?
BLCOMMON:相當于EBOOT的一個基本框架,主要完成bootloader相關內存的分配,解析NK.bin文件并進行效驗,初始化平臺,通過網絡下載image等功能。
OEM Code:主要是基于硬件平臺,為BLCOMMON提供相應的接口函數,幫助完成相應的功能。
Eboot:一個小的網絡協議棧,為網絡下載image提供DHCP,TFTP,UDP等網絡服務功能。
Network Driver:硬件平臺的網絡驅動部分,支持上層的網絡功能。
Bootpart:為Flash設備提供分區功能,bootloader可以創建一個BinFS分區和一個文件系統分區。還可以用它來創建一個引導分區用來存放引導參數。
Flash Memory:硬件平臺的Flash驅動。
總結
以上是生活随笔為你收集整理的WinCE Boot方式及 Bootloader架构概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 60秒看各地家长花式送考 穿上旗袍手举向
- 下一篇: 领克全新概念车亮相:四扇全是“剪刀门”