一種新的BootLoader啟動引導方式研究

來源:互聯網
上載者:User
一種新的BootLoader啟動引導方式研究
[日期:2008-11-24] 來源:單片機與嵌入式系統應用  作者:西安電子科技大學 李波 [字型: ]

 

引 言
    BootLoader通常稱為“系統的引導載入程式”,是系統加電或複位後執行的第一段程式碼。這段程式的主要任務是,實現硬體裝置初始化並建立記憶體空間的映射圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終叫用作業系統核心或使用者應用程式準備好正確的環境。通常,BootLoader包含兩種不同的載入和啟動引導方式,即啟動載入方式和下載方式。
    ①啟動載入(boot loading)方式。這種引導方式也稱為“自主(autonomous)引導方式”,也即BootLoader從目標機的某個固態存放裝置上將作業系統載入到RAM中並引導運行,整個過程並沒有使用者的介入。這種引導方式是BootLoader的正常工作模式下普遍採用的一種引導方式。因此在嵌入式產品發布的時候,BootLoader一般以這種引導方式對核心代碼進行啟動引導。
    ②下載(down loading)方式。在這種引導方式下目標機上的BootLoader將通過串口串連或網路連接等通訊手段從主機下載檔案,如下載應用程式、資料檔案、核心映像等。從主機下載的檔案通常首先被BootLoader儲存到目標機的RAM中,然後再被BootLoader寫到目標機上的固態存放裝置中,其後完成核心的引導運行。BootLoader的這種引導方式通常在系統研發和更新時使用。在嵌入式系統研發階段,現有的BootLoader下載引導方式又可根據載入途徑的不同細分為以下幾種:
    ①通過Ethernet網口從宿主機下載核心到目標板,從而實現軟體系統啟動;
    ②通過串口從宿主機下載核心到目標板從而實現軟體系統啟動;
    ③直接從Flash中提取已儲存的核心,從而實現軟體系統的啟動。
    總結以上幾種引導方式會發現,它們有些共同的弊端;在系統調試時需要進行宿主機與目標板間的硬體線路的實際串連,使用起來不夠方便,且燒片的速度比較緩慢,調試的效率不高;硬體方面需要大容量的Flash的支援,增加了研發成本;進行核心更新時顯得不夠靈活。為此,採用可移動的儲存介質對系統核心進行儲存(如SD卡、CF卡等),從而實現對系統核心的靈活調試和引導。這種引導方式的好處是,在調試時無需把宿主機和目標板進行硬體串連,提高了調試的效率,使用起來更便捷、更靈活;進行核心更新時顯得更為靈活,只需把更新核心轉存到指定目錄,此外它的實現也比較簡單。進行這方面的改進時只需做以下工作:在硬體方面,增加針對特定移動儲存介質的硬體電路,而在中大型系統中,有關移動儲存介質的硬體電路(如SD卡、CF卡等相關的電路)是現成的,所以硬體部分也可忽略;在BootLoader程式內部,只需添加對移動儲存介質(如CF卡、SD卡等)基於檔案系統進行儲存訪問的指令。按此思路,在已有硬體平台的基礎上針對行動裝置SD卡對原有BootLoader進行了改進。下面介紹實現過程。

1 硬體平台
    本次改進測試的硬體平台是由英蓓特公司開發的基於LPC2294 ARM控制器的LPC22EB06一I實驗平台。其上的主要功能模組有:
    ①2 MB的Flash、1 MB的SRAM(可擴充到4 MB)、256B具有I2C介面的E2PROM等儲存空間;
    ②2個RS232(其中一路可接Modem)、RS485、CAN等通訊匯流排介面;
    ③2個調試介面:LPT和JTAG調試介面;
    ④支援CF卡、SD/MMC等移動儲存介質;
    ⑤支援128×128真彩顯示。
    圖1是其硬體功能框圖。

2 BOOtLoader的改進設計
2.1 原有BootLoader功能

    原來的:BootLoader具有如下功能:
    ①串口下載功能,通過串口下載核心到指定RAM區;
    ②Flash燒寫功能,從RAM區燒寫資料到Flash中;
    ③資料區內塊搬移功能;
    ④其他功能。其指令封裝結構如下:


2.2 BootLoader改進實驗
    此次改進就是在原有BootLoader的基礎上,增加對移動儲存介質SD卡以FAT格式進行讀取資料的指令來實現的。命令封裝如下:


其功能是,在SD卡中把指定目錄下的核心檔案提取到SDRAM地區中,從而完成核心的載入。
    另增加3條輔助指令,一條完成SD卡的格式化,另一條完成對系統核心的儲存,最後一條完成對系統核心的啟動載入。命令封裝如下:


    其中,CMD_TBL_SD_FORMAT的功能是完成對SD卡的格式化,CMD_TBL_SD_STORE的功能是把SDRAM地區中的核心代碼備份到SD卡的固定儲存區,CMD_TBL_SD_LDAD的功能是把SD卡的固定儲存區中的核心代碼載入到指定的SDRAM地區中。
    下面分析一下其基於FAT檔案系統的具體讀取和備份方法。首先看一下FAT檔案系統的基本結構。FAT檔案系統的整體結構大體由4大部分組成:MBR區(主引導記錄區)、DBR區(DOS引導記錄區)、FAT區(檔案配置表區,FATl為主檔案分配表區,FAT2為備份檔案分配表區)和DATA區(資料區,包含FDT區——檔案目錄表區)。FAT檔案系統結構如下:

    其各個地區基扇區地址(把MBR區的基扇區地址作為O)計算如下:
    DBR區的基扇區地址=MBR基扇區地址+63
    FAT表的基扇區地址=DBR的基扇區地址+保留扇區數
    FDT區基扇區地址=每FAT表扇區數×FAT表個數+(FDT區的開始簇號一2)×每簇扇區數+FAT表基扇區地址。(簇是系統進行檔案管理的單位,FAT表中的每一項對應一個簇,檔案的存取按簇進行,一簇包含若干個扇區。)
    從FAT檔案系統的組織圖可以看出,從SD卡中讀取系統核心代碼資料到指定的RAM區比較容易,就是根據系統核心檔案名稱在檔案系統中進行尋找定位,隨後完成讀取。對於核心代碼的備份和載入,需要在深入分析FAT檔案系統的組織圖的基礎上對SD卡格式化作一些處理。在格式化時,通過設定MBR區和DBR區的資料實現不對SD卡儲存區的最末8MB地區(根據實際需要可增減)作格式化處理的目的,即把它置為RAW區。所以系統核心備份的實現,就是把系統核心代碼通過SD卡的寫入指令填充到RAW區。系統核心的載入是從RAW區直接讀取備份的核心代碼。

3 總 結
    本文所述的核心載入啟動引導方式已經過實踐驗證。它實現了目標板與宿主機間硬體線路串連的完全脫離.為系統調試者提供了便利,有效地提高了系統調試的效率;與此同時,它還能方便地實現系統的線上更新。可以說要進行系統啟動引導設計,此方法是一個不錯的選擇。最後說明一點,本文介紹的BootLoader改進方法是在LCP2294晶片開發的LPC22EB06一I實驗平台上完成的。由於BootLoader與處理器的體繫結構和具體嵌入式板級裝置的配置密切相關,若要在其他的處理器晶片或平台上採用上述方法,還需對BootLoader中與處理器體繫結構相關的代碼作適當的修改。這部分不是本文探討的主要內容,所以在此不再詳述,若有讀者還想詳細瞭解相關內容,請查閱相關論文或書籍。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.