基于Intel PXA270的Windows CE5.0下Boot Loader實(shí)現(xiàn)
Windows CE.NET是微軟公司向嵌入式領(lǐng)域推出的一款操作系統(tǒng),被廣泛應(yīng)用于平板電腦、數(shù)碼相機(jī)、彩屏手機(jī)、PDA等許多產(chǎn)品當(dāng)中。
Windows CE的開(kāi)發(fā)過(guò)程可以分為:0AL(OEM Abstraction Layer)、驅(qū)動(dòng)、應(yīng)用程序開(kāi)發(fā)三個(gè)步驟。其中,0AL開(kāi)發(fā)是Windows CE開(kāi)發(fā)過(guò)程中最基本的一步,而B(niǎo)oot Loader設(shè)計(jì)在0AL開(kāi)發(fā)中又具有極為關(guān)鍵的作用。因此,本文以Windows CE 5.0在Xscale PXA270處理器上的Ethernet Boot Loader的設(shè)計(jì)和實(shí)現(xiàn)為例,對(duì)Boot Loader的實(shí)現(xiàn)進(jìn)行闡述,并分析Boot Loader的架構(gòu)、啟動(dòng)控制流程和配置安裝。
對(duì)于Windows CE嵌入式操作系統(tǒng)來(lái)說(shuō),系統(tǒng)加電后第一條指令就是Boot Loader的代碼。Boot Loader通常位于目標(biāo)設(shè)備上的非易失存儲(chǔ)設(shè)備中(如Flash),并且在系統(tǒng)加電或重置時(shí)自動(dòng)執(zhí)行。通常可以通過(guò)JTAG或串口工具把Boot Loader燒寫(xiě)到目標(biāo)設(shè)備上,Boot Loader的唯一目標(biāo)就是加載并執(zhí)行操作系統(tǒng)映像。
在嵌入式應(yīng)用系統(tǒng)最終產(chǎn)品化后,Boot Loader將不是必須的。因?yàn)閃indows CE不僅提供了利用Boot Loader加載系統(tǒng)的啟動(dòng)方式,而且提供了通過(guò)啟動(dòng)向量ResetVector 加載系統(tǒng)的啟動(dòng)方式。但在系統(tǒng)開(kāi)發(fā)階段,Boot Loader是必須的,它將使開(kāi)發(fā)更加方便高效。
硬件平臺(tái)架構(gòu)
處理器采用英特爾的XScale PXA270系列處理器,可以配合2700G多媒體加速器,提升高分辨率圖像處理和3D加速處理能力。硬件開(kāi)發(fā)板的外設(shè)包括外部存儲(chǔ)器、串口和DM9000AE 100Mb以太網(wǎng)接口芯片。Boot Loader的體系結(jié)構(gòu)
一個(gè)典型的以太網(wǎng)Boot Loader由Blcommon、OEM代碼(針對(duì)不同硬件平臺(tái)需要修改代碼)Eboot和網(wǎng)絡(luò)驅(qū)動(dòng)程序等部分組成組成,如圖1所示。
圖1 Boot Loader框架結(jié)構(gòu)
● Blcommon庫(kù)
BLCOMMON庫(kù)提供了豐富Boot Loader基本功能,包括復(fù)制Boot Loader到RAM 以便高速運(yùn)行,解析 .bin文件,控制系統(tǒng)加載過(guò)程等等。代碼庫(kù)一般放置在%_WINCEROOT% PUBLICCOMMONOAKDRIVERS ETHDBGBLCOMMON。其主要文件為blcommon.c。
● OEM代碼
OEM代碼是與設(shè)備初始化及硬件擴(kuò)展有關(guān)的代碼,位置在%_WINCEROOT% PLATFORM平臺(tái)名稱>SRCBOOTLOADER EBOOT。
● EBoot庫(kù)
Eboot庫(kù)提供了DHCP、TFTP和UDP服務(wù)。BooLoader與Platform Builder建立TFTP連接.并下載系統(tǒng)鏡像。其中TFTP用于從開(kāi)發(fā)工作站的Platform Builder下載Windows CE操作系統(tǒng)鏡像(這是本文所使用的加載調(diào)試方式)。Eboot庫(kù)代碼位于%_WINCEROOT% PUBLIC COMMONOAKDRIVERS ETHDBGEBOOT。
● 網(wǎng)絡(luò)驅(qū)動(dòng)庫(kù)
EDBG驅(qū)動(dòng)程序庫(kù)集成了一些常見(jiàn)以太網(wǎng)驅(qū)動(dòng),為Bootloader和操作系統(tǒng)訪問(wèn)提供了通用接口。Boot Loader利用這些接口下載Windows CE運(yùn)行時(shí)映象,操作系統(tǒng)利用這些接口實(shí)現(xiàn)與Platform Builder的KITL連接。
Boot Loader啟動(dòng)控制流程
由于硬件的差異,Boot Loader的功能可能不同,圖2所示的是Boot Loader的較為通用的啟動(dòng)控制流程。
圖2 Boot Loader啟動(dòng)控制流程
評(píng)論