<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Intel PXA270的Windows CE5.0下Boot Loader實(shí)現(xiàn)

          基于Intel PXA270的Windows CE5.0下Boot Loader實(shí)現(xiàn)

          作者: 時(shí)間:2012-05-17 來(lái)源:網(wǎng)絡(luò) 收藏


          ● 啟動(dòng)函數(shù)StartUp

          StartUp函數(shù)是Boot Loader的入口函數(shù),在CPU啟動(dòng)后它將立即運(yùn)行。該函數(shù)使用匯編語(yǔ)言編寫(xiě),完成初始化CPU、內(nèi)存(包括建立存儲(chǔ)器訪問(wèn)和初始化緩存)等核心硬件,其主要完成的功能包括:使CPU進(jìn)入正確的運(yùn)行模式,以便CPU 能夠訪問(wèn)所有的硬件資源;禁用所有的CPU中斷;關(guān)閉MMU和TLB;禁用Cache和write Buffer;初始化內(nèi)存控制器;初始化其他硬件設(shè)備,如時(shí)鐘等;將Boot Loader本身復(fù)制到內(nèi)存中;跳轉(zhuǎn)到C代碼中。

          實(shí)現(xiàn)這些功能的代碼一般放置在StartUp.s文件中。由于此處是用匯編語(yǔ)言編寫(xiě)的,有較強(qiáng)的硬件相關(guān)性,所以一般參考板的CPU與開(kāi)發(fā)平臺(tái)的CPU考慮采用相同的架構(gòu),這樣做可以不需要對(duì)寄存器的定義和初始化流程的等進(jìn)行修改。

          ● 主控部分Main函數(shù)

          StartUp函數(shù)初始化CPU等核心硬件并跳轉(zhuǎn)到Main函數(shù)后,系統(tǒng)轉(zhuǎn)入了C語(yǔ)言代碼執(zhí)行環(huán)境。Main函數(shù)的主要任務(wù)時(shí)調(diào)用 BLCommon中的BootloaderMain()函數(shù)。而B(niǎo)ootloaderMain()函數(shù)是Boot Loader的主控函數(shù),它控制了Boot Loader的完整執(zhí)行流程。它的主要工作如下。

          (1)重定位全局變量函數(shù)KernelRelocate(),它將Boot Loader中的全局變量重定位到RAM中。這樣做的原因在于Boot Loader是在目標(biāo)設(shè)備的只讀媒體上運(yùn)行的(本實(shí)際方案是在NOR Flash上),這樣的情況下將使得Boot Loader的代碼對(duì)全局變量進(jìn)行讀寫(xiě)操作就會(huì)失敗。所以需要把全局變量所在的數(shù)據(jù)段移到RAM中,來(lái)確保全局變量可寫(xiě)。

          (2)初始化調(diào)試端口函數(shù)OEMDebugInit,主要任務(wù)是初始化調(diào)試輸出用的硬件端口,方便輸出調(diào)試信息。本方案初始化FFUART(全功能串口)用來(lái)輸出調(diào)試信息,在終端開(kāi)發(fā)機(jī)上進(jìn)行接收。

          (3)初始化平臺(tái)函數(shù)OEMPlatformInit(),其作用是初始化目標(biāo)板上的的設(shè)備如實(shí)時(shí)時(shí)鐘,顯示屏、Flash、網(wǎng)卡等。

          (4)預(yù)下載函數(shù)OEMPreDownloade(),主要任務(wù)是完成以太網(wǎng)下載前的一些準(zhǔn)備工作,如通過(guò)DHCP獲得IP地址或者初始化TFTP服務(wù)等。

          (5)下載映像函數(shù)DownloadeImage(),該函數(shù)完成從遠(yuǎn)程開(kāi)發(fā)機(jī)上下載操作系統(tǒng)映像。

          (6)啟動(dòng)映象函數(shù)OEMLaunch。

          在實(shí)際開(kāi)發(fā)中,本方案利用同屬Intel Xscale 270 CPU的MainstoneII開(kāi)發(fā)板進(jìn)行克隆,這樣使得大量的代碼可以共享,只需修改少許的OEM代碼和實(shí)現(xiàn)一些可選的OEM函數(shù)即可完成開(kāi)發(fā),減少未知錯(cuò)誤。

          Boot Loader通過(guò)對(duì)以上函數(shù)的調(diào)用,完成了對(duì)操作系統(tǒng)的映像的加載控制,函數(shù)的流程及其代碼位置如圖3所示。

          圖3 Boot Loader函數(shù)調(diào)用流程


          ● Boot Loader的配置

          程序可以通過(guò)PB的集成編譯環(huán)境編譯鏈接,控制文件為.bib文件,.bib文件主要完成以下工作。

          (1)配置目標(biāo)設(shè)備上的內(nèi)存分配信息,如目標(biāo)設(shè)備上的物理內(nèi)存起始地址、長(zhǎng)度以及用途等;

          (2)包含ROM信息,如起始位置、寬度等,這樣就可以正確的生成可以在ROM上運(yùn)行的映像文件;

          (3)需要打包文件列表。

          對(duì)于Boot Loader文件的下載,可以通過(guò)仿真器下載,也可以通過(guò)其他調(diào)試程序下載,本方案采用的是直接燒寫(xiě)到Flash中,因此要得到純二進(jìn)制格式的映像以便燒寫(xiě)進(jìn)Flash。Boot Loader是系統(tǒng)啟動(dòng)后第一個(gè)運(yùn)行的程序,因此它必須放在CPU 上電和復(fù)位后立即運(yùn)行的地址處。Xscale在上電和復(fù)位后是從物理地址0x00000000(片選0 Boot Flash的起始地址)開(kāi)始運(yùn)行的。

          結(jié)束語(yǔ)

          作為Windows CE操作系統(tǒng)的啟動(dòng)部分,Boot Loader負(fù)責(zé)把Windows CE操作系統(tǒng)加載到內(nèi)存中,然后開(kāi)始執(zhí)行。雖然最終的產(chǎn)品中可能不含Boot Loader,但是在開(kāi)發(fā)和調(diào)試的時(shí)候Boot Loader是不可或缺的。只有得到一個(gè)穩(wěn)定工作的Boot Loader程序,才能夠更進(jìn)一步開(kāi)發(fā)Windows CE的BSP,直至最后整個(gè)系統(tǒng)的成功。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: PXA270 BootLoader WindowsCE5.0

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();