新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Intel PXA270的Windows CE5.0下Boot Loader實現

        基于Intel PXA270的Windows CE5.0下Boot Loader實現

        作者: 時間:2012-05-17 來源:網絡 收藏


        ● 啟動函數StartUp

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

        實現這些功能的代碼一般放置在StartUp.s文件中。由于此處是用匯編語言編寫的,有較強的硬件相關性,所以一般參考板的CPU與開發平臺的CPU考慮采用相同的架構,這樣做可以不需要對寄存器的定義和初始化流程的等進行修改。

        ● 主控部分Main函數

        StartUp函數初始化CPU等核心硬件并跳轉到Main函數后,系統轉入了C語言代碼執行環境。Main函數的主要任務時調用 BLCommon中的BootloaderMain()函數。而BootloaderMain()函數是Boot Loader的主控函數,它控制了Boot Loader的完整執行流程。它的主要工作如下。

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

        (2)初始化調試端口函數OEMDebugInit,主要任務是初始化調試輸出用的硬件端口,方便輸出調試信息。本方案初始化FFUART(全功能串口)用來輸出調試信息,在終端開發機上進行接收。

        (3)初始化平臺函數OEMPlatformInit(),其作用是初始化目標板上的的設備如實時時鐘,顯示屏、Flash、網卡等。

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

        (5)下載映像函數DownloadeImage(),該函數完成從遠程開發機上下載操作系統映像。

        (6)啟動映象函數OEMLaunch。

        在實際開發中,本方案利用同屬Intel Xscale 270 CPU的MainstoneII開發板進行克隆,這樣使得大量的代碼可以共享,只需修改少許的OEM代碼和實現一些可選的OEM函數即可完成開發,減少未知錯誤。

        Boot Loader通過對以上函數的調用,完成了對操作系統的映像的加載控制,函數的流程及其代碼位置如圖3所示。

        圖3 Boot Loader函數調用流程


        ● Boot Loader的配置

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

        (1)配置目標設備上的內存分配信息,如目標設備上的物理內存起始地址、長度以及用途等;

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

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

        對于Boot Loader文件的下載,可以通過仿真器下載,也可以通過其他調試程序下載,本方案采用的是直接燒寫到Flash中,因此要得到純二進制格式的映像以便燒寫進Flash。Boot Loader是系統啟動后第一個運行的程序,因此它必須放在CPU 上電和復位后立即運行的地址處。Xscale在上電和復位后是從物理地址0x00000000(片選0 Boot Flash的起始地址)開始運行的。

        結束語

        作為Windows CE操作系統的啟動部分,Boot Loader負責把Windows CE操作系統加載到內存中,然后開始執行。雖然最終的產品中可能不含Boot Loader,但是在開發和調試的時候Boot Loader是不可或缺的。只有得到一個穩定工作的Boot Loader程序,才能夠更進一步開發Windows CE的BSP,直至最后整個系統的成功。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中超| 宜都市| 保山市| 合川市| 洮南市| 沂南县| 慈利县| 南雄市| 平凉市| 留坝县| 延安市| 黎平县| 天峨县| 金溪县| 黄石市| 淅川县| 华容县| 肥乡县| 双柏县| 吉安县| 西贡区| 安化县| 大荔县| 余干县| 嘉禾县| 永登县| 静海县| 上饶市| 蒙山县| 志丹县| 安国市| 墨江| 阿拉善盟| 天长市| 苏尼特左旗| 长沙市| 乾安县| 岢岚县| 南溪县| 湖口县| 渭源县|