新聞中心

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

        基于PXA272的Bootloader的設計與實現

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

        3.2.2 為中斷模式設置分配堆棧

        我們知道ARM的堆棧是分模式的,在程序中要為每種要用到的模式分配堆棧。如果沒有為某種模式分配堆棧,那么在進入這種模式之后系統不能繼續運行了。系統首先運行在SVC模式。在下載模式中,我們要通過USB ,網絡,SD/MMC和CF接口等下載文件,而這些都要用到中斷。所以我們要為中斷模式分配堆棧,其代碼片段如下:

        ldr r2, =(Mode_IRQ :OR: NoIntsMask) ;中斷模式

        msr cpsr_c,r2

        ldr sp,=(EBOOT_IRQ_STACK_TOP+SDRAM_VIR_C_EBOOT_PARTITION) ;分配堆棧

        在為中斷模式分配堆棧之后,還要進行堆棧切換,使程序重新回到SVC模式運行。

        3.2.3 通過加載系統鏡像的實現

        當用戶選取作為下載系統鏡像的目標后,bootloader就進入對SD處理的流程。首先通過檢測引腳判斷是否有SD卡插在插槽。如果有就要對SD控制的硬件進行初始化,例如SD插槽電源使能,設置時鐘,設置功能GPIO等。

        其中需要說明的是Intel PXA 272的時鐘管理比較復雜,它有兩個鎖相環路PLL:外圍設備鎖相環路,核心鎖相環路。其中外圍設備鎖相環路為外圍總線和USBC,I2S接口,SD接口等外圍設備提供時鐘。在時鐘控管理寄存器里,寄存器CKEN用來控制如USB,UART,SD等接口模塊的時鐘使能。【1】

        接著是對SD卡協議棧的軟件實現.為了減少中SD Host驅動的復雜性,能夠易于調試,實現了總線驅動模塊,客戶端驅動模塊和FAT16文件系統模塊。所以在我們的實現中對SD卡上的文件系統要有一定的限制,必須是格式化成FAT16的文件系統才能被我們的bootloader識別。當然在具體的實現中我們還可以使用另外的文件系統格式。其協議棧結構如圖2所示:

        3.3實驗結果

        我們使用一個22.7M的WinCE鏡像,在中分別用USB,SD卡,TFTP,本地四種方式使用進行加載啟動測試,分別測試了50次。因為在中SD Host的實現沒有使用DMA方式,為了進行性能比較,我們又調用WinCE系統下使用DMA的SD Host驅動加載同樣大小的文件進行了50次測試。表2是我們測試的結果。表中數據為平均值。
        表2 測試結果

        SD卡

        USB

        TFTP

        使用DMA的SD

        本地啟動

        加載時間(秒)

        51

        96

        53

        28

        3

        從表中數據可知,本地啟動是最快的,這是不容置疑的。其次是通過SD卡啟動。另外值得說明的是,通過USB和TFTP下載啟動在都需要的在通信的另一端軟件的支持和用戶的介入操作。而SD卡的數據通信傳輸完全由硬件實現,這也是SD卡加載相對比較快的主要原因。而且使用TFTP下載還需要進行相對復雜的配置。而在使用SD的加載中Bootloader會自動去搜尋系統鏡像,自動下載。這對用戶的使用來說是方便快捷的。

        另外從使用DMA的SD 驅動下載文件和Bootloader中的實現做比較,可以看出使用DMA后大大提高了使用SD下載的性能。當然我們也可以在Bootloader中使用DMA方式來實現以提高性能。但這樣一來會大大增加Bootloader的復雜性。我們在Bootloader中實現使用SD做加載啟動的主要目的是方便開發和調試SD硬件模塊,而且實際使用中絕大部分會是本地啟動。我們的實現中目的已經達到,所以可以不考慮這些。

        4 結束語

        Bootloader是操作系統和硬件的樞紐,相對于操作系統內核來說它是一個硬件抽象層。嵌入式領域中操作系統的移植關鍵在于Bootloader的移植和操作系統內核硬件相關部分移植。所設計并實現的基于Intel PXA 272嵌入式處理器的從SD卡加載并啟動WinCE系統的Bootloader能提高WinCE操作系統移植的穩定性并加快WinCE操作系統移植的周期。

        本文作者創新點: 在基于Intel PXA 272 處理器的bootloader中實現了SD卡的協議棧,并實現了從SD卡加載并啟動WinCE嵌入式系統鏡像的功能.

        參考文獻:
        【1】杜春雷.ARM體系結構與編程.北京:清華大學出版社,2004-12
        【2】Intel PXA 27X Processor Family Developer's Manual[M]. Intel, 2004-04
        【3】J?rg Henkel, Xiaobo Sharon Hu, Shuvra S. Bhattacharyya. Taking on the Embedded System Design Challenge[J], IEEE Computer (4): 35-37 (2003)【4】SD-Memory Card Specifications /Part1 Physical Layer Specification Version 1.01[M]. SD Group, 2001
        【5】陳向群王雷 馬洪兵.Windows.CE.NET 系統分析及實驗教程.北京:機械工業出版社,2003
        【6】萬永波 張根寶 田澤 楊峰. 基于ARM的嵌入式系統Bootloader啟動流程分析.微計算機信息. 2005年第11-2期.第一頁


        上一頁 1 2 下一頁

        關鍵詞: PXA272 Bootloader SD卡

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石阡县| 独山县| 建始县| 松原市| 上虞市| 泸水县| 陆丰市| 巴彦县| 上犹县| 西林县| 贵阳市| 襄汾县| 霍林郭勒市| 霍城县| 黑河市| 汝阳县| 额济纳旗| 建宁县| 安溪县| 平陆县| 舒兰市| 曲沃县| 桐梓县| 肇源县| 临沧市| 南岸区| 来凤县| 呼伦贝尔市| 库伦旗| 金塔县| 万年县| 新巴尔虎右旗| 澄迈县| 九江县| 惠来县| 台北市| 七台河市| 南宁市| 遂宁市| 富顺县| 凭祥市|