新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PXA272的Bootloader的設計與實現

        基于PXA272的Bootloader的設計與實現

        作者: 時間:2012-09-17 來源:網絡 收藏
        1前言

        PC機中的引導程序一般由BIOS和位于MBR的OS(例如LILO或者GRUB)一起組成。然而在嵌入式系統中通常沒有像BIOS那樣的固件程序(有的嵌入式CPU有),因此整個系統的加載啟動任務就完全由來完成。但是隨著嵌入式系統的發展,已經逐漸在基本功能的基礎上進行了擴展,Bootloader可以更多地增加對具體系統的板級支持,即增加一些硬件模塊功能上的使用支持,以方便開發人員進行開發和調試。編寫BootLoader是開發WinCE系統第一步,也是關鍵的一步。只有得到一個穩定工作的Loader程序,才能夠更進一步開發WinCE的BSP,直至最后整個系統的成功。

        2硬件平臺結構

        我們的硬件平臺采用PXA 272 作為處理器,工作頻率為512M HZ,內部集成了64 M bytes NOR Flash。Intel PXA27X處理器是Intel公司推出的32位,基于Xscale架構的高性能的嵌入式芯片。【2】硬件平臺結構中主要還包括了如下的主要器件:128 M SDRAM、AC97 codec、 LCD 控制器、IrDa芯片、藍牙UART、USB控制器。另外還集成了3.5吋、240×320 QVGA的TFT-LCD 觸摸屏、PCMCIA、SD/MMC等外設接口,WLAN模塊。

        Intel的PXA 27X內部支持SD Host的控制模塊,有SD Host控制寄存器和可以用于SD Host控制器的IO引腳,可用編程的方法對其功能進行選擇;但對于的檢測,寫保護和插槽的電源使能

        等功能沒有專門的引腳。在本文實現中,對于卡檢測、電源引腳,通過GPIO擴展來實現。和硬件相關的部分引腳定義如表1所示:【3】【4】

        表1 PXA 272部分GPIO引腳功能定義

        信號

        方向

        Intel 272功能引腳

        說明

        SD_nPWREN

        輸入

        SDPWEN/GPB2

        SD插槽電源使能信號線

        SD_DATA3

        輸入/輸出

        SDDATA0/GPF5

        4bit模式:DATA3

        SD_DATA2

        輸入/輸出

        SDDATA0/GPF4

        4bit模式:DATA2

        SD_DATA1

        輸入/輸出

        SDDATA0/GPE5

        4bit模式:DATA1

        SD_DATA0

        輸入/輸出

        SDDATA0/GPG2

        4bit模式:DATA0

        SD_CMD

        輸入/輸出

        SDCMD/GPG1

        SD命令線

        SD_CLK

        輸入

        SDCLK/GPF3

        SDIO/時鐘線

        SD_nCD

        輸出

        EINT23/GPF1

        SD卡檢測引腳

        SD_WP

        輸出

        GPC3

        SD卡寫保護引腳

        3Bootloader的設計和實現

        一個嵌入式WinCE系統從軟件的角度看通常可以分為兩部分:Bootloader 和 Wince嵌入式系統。從Bootloader和Wince嵌入式系統的關系看,Bootloader包含兩種不同的操作模式:“本地啟動”模式和“下載啟動”模式。【5】在本地啟動模式下Bootloader從Flash上將Wince操作系統加載到RAM中運行。在下載啟動模式下,目標機上的Bootloader將通過串口或者網絡連接或者USB等從主機下載操作系統文件,也可以直接從SD/MMC卡、CF卡上加載操作系統鏡像文件。在下載啟動模式下,Bootloader通過串口給用戶提供簡單的命令行接口。

        3.1Bootloader的流程

        當系統上電后,ARM CPU會從物理地址零處開始執行第一條指令的執行,通常會在該地址處放置一條跳轉指令。在我們的硬件平臺中物理地址零是64M Flash的物理起始地址。這里值得需要說明的是64M Flash 是固化在Intel PXA 272中的。所以我們的Bootloader燒入也必須從Flash的物理地址零開始。Bootloader二進制文件的最前面的4個字節就是一條跳轉指令。

        接著系統會跳轉到一段用ARM匯編編寫的代碼中去執行。其作用是完成系統啟動所必須的最小配置,例如配置cpu的工作頻率,配置GPIO,配置時鐘等。然后為我們處理器的工作模式設置棧指針。

        接著把Bootloader從Flash搬運到SDRAM中,配置MMU,創建頁表,使能MMU,然后把自己后半部重定位到SDRAM中去執行。在后半部的執行中會根據用戶做的動作(是否按住一個按鈕)來判斷是要本地啟動還是下載啟動。具體的流程圖如圖1所示。

        當用戶選擇特定下載啟動方式后,就進入具體的下載流程。首先需要對用戶選定的介質的硬件進行必要的初始化。之前做的一些硬件的初始化是不夠的,因為沒必要在前面進行全面的硬件初始化,現在要具體使用了就需要進行具體的配置。

        3.2軟件實現的關鍵

        Bootloader是依賴于硬件而實現的,特別是在嵌入式系統中。不同的體系結構需求的Bootloader是不同的;除了體系結構,Bootloader還依賴于具體的嵌入式板級設備的配置。所以根據不同的板級配置需要修改相應的Bootloader。【5】我們使用的bootloader是Microsoft提供的和Wince配套的Eboot。下面幾點是在我們的硬件平臺上修改Eboot的關鍵。

        3.2.1配置內存映射表

        WinCE嵌入式系統通過定義OEMAddressTable來定義虛擬內存到物理內存的映射表.這個表在我們的實現中是bootloader和WinCE系統公用的。【5】當然這不是強制性的.我們需要根據硬件平臺的不同定制自己的映射表。在我們的設計中,這個表把4GB的物理空間映射到512M的內核虛擬空間。

        表中的每一項由虛擬地址,物理地址,和映射的M數組成。其格式如下所示

        OEMAddressTable

        DCD SDRAM_BASE_C_VIRTUAL, SDRAM_BASE_PHYSICAL, 64

        DCD SDRAM1_BASE_C_VIRTUAL, SDRAM1_BASE_PHYSICAL, 64

        DCD IM_STORAGE_BASE_C_VIRTUAL, IM_STORAGE_BASE_PHYSICAL, 1

        .....

        DCD 0x00000000, 0x00000000, 0

        第一項和第二項分別使64M的虛擬地址映射到64M物理地址,因為我們采用兩條64M的SDRAM。第二項使1M的內部內存的虛擬地址映射到物理地址,因為我們使用1M大小的內部存儲。最后一項必須是零,因為建立頁表的時候程序通過它來判斷是否結束映射過程。在配置MMU的時候會使用這個表來完成虛擬地址到物理地址的映射的頁表的建立。


        上一頁 1 2 下一頁

        關鍵詞: PXA272 Bootloader SD卡

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 三亚市| 临夏县| 营口市| 唐河县| 福泉市| 遂昌县| 英吉沙县| 东方市| 鄱阳县| 韶关市| 定日县| 突泉县| 溧水县| 贵溪市| 敦化市| 宜章县| 开平市| 胶南市| 广昌县| 高邮市| 故城县| 德钦县| 溆浦县| 新巴尔虎右旗| 铜梁县| 东源县| 闸北区| 蓝田县| 汉源县| 庆云县| 阿拉尔市| 广安市| 镇宁| 信阳市| 乌鲁木齐县| 庆云县| 江门市| 沐川县| 于田县| 宁陕县| 高碑店市|