新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > BLOB啟動流程與Bootloader程序可移植性研究

        BLOB啟動流程與Bootloader程序可移植性研究

        作者: 時間:2011-09-02 來源:網(wǎng)絡(luò) 收藏
        2 的可

        本文引用地址:http://www.104case.com/article/150266.htm

          大部分的總體結(jié)構(gòu)與類似,一般分為兩個階段運行。其中第一階段與CPU架構(gòu)相關(guān),不同架構(gòu)CPU往往要求不同的與之對應(yīng)[3],只有少數(shù)Bootloader能夠適用于多種架構(gòu)的CPU,如表1。

          

          2.1 相同構(gòu)架下Bootloader

          對于相同的CPU構(gòu)架,Bootloader工作大體上可以分為三部分。

          (1)目標板驅(qū)動部分,針對特定CPU、Flash、SDRAM等對驅(qū)動進行定制。完成處理器各個I/O口的初始化、Flash描述(包括區(qū)塊大小及數(shù)量)和Flash初始化等。一個必要的工作是Flash分區(qū)表的配置,F(xiàn)lash的典型空間分配結(jié)構(gòu)如圖2所示。

          

          (2)目標板相關(guān)的頭文件,文件中包含了目標板配置的宏定義,主要有系統(tǒng)工作頻率、GPIO定義、Flash 各分塊起始地址及容量、Flash 讀/寫命令字、SDRAM寄存器配置、SDRAM起始地址及容量、內(nèi)核裝載地址等。其中大部分GPIO設(shè)置的目的是在Bootloader下做板載開發(fā),這項功能不是必需的。而CPU頻率及Flash的設(shè)置則直接影響到系統(tǒng)能否。對于采用Ramdisk技術(shù)的系統(tǒng)開發(fā),SDRAM的配置也直接關(guān)系到Kernel的加載。因此,各頭文件的代碼修改是移植過程的重點。

          (3)Bootloader總體配置文件修改,包括目標板聲明、指定目標板頭文件、定制文件關(guān)聯(lián)關(guān)系等。

          圖3以在PXA255[4]的目標板上移植為例表現(xiàn)了需要增、改的關(guān)鍵文件之間的內(nèi)在聯(lián)系。

          

        BLOB在PXA255的目標板上移植

          圖3中:

          (1)src/blob/PXA255.c:筆者編寫的針對PXA255目標板驅(qū)動文件,這里是采用默認設(shè)置的最簡情況,必要時還需對文件如Flash.c等進行修改。

          (2)include/blob/arch/PXA255.h:目標板頭文件,它必須通過arch.h及config.h進行指定,最終反映在configure.in中。

          (3)configure.in:添加目標板聲明,如果已有目標板類型,則無需修改該文件;如果沒有,則需要根據(jù)情況添加目標板名稱、CPU型號、必需的.o文件,如:

          PXA255)

          AC_MSG_RESULT(Ipaq PXA255)

          AC_DEFINE(PXA255)

          AC_DEFINE(USE_SERIAL3)

          _PLATFORM_OBJ=″PXA255.o″

          BLOB_FLASH_OBJS=″nullflash.o″

          use_cpu=″PXA255″

          use_lcd=″no″

          (4)Makefile.am:由于添加了PXA255.c和PXA255.h,所以要在它們所在目錄的Makefile.am中進行登記,保證configure.in和Makefile.am在進行./configure處理時能夠生成正確的Makefile文件,最終在執(zhí)行Make命令后生成BLOB的可執(zhí)行文件。

          需要注意的是Linux內(nèi)核必須根據(jù)目標板硬件情況作相應(yīng)的設(shè)置[5],這里不展開論述。

          



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 冕宁县| 襄汾县| 葫芦岛市| 定结县| 乐业县| 铁岭市| 诸暨市| 泸溪县| 新邵县| 察雅县| 瓦房店市| 岳西县| 长宁区| 屏东市| 凤山市| 施秉县| 台南县| 江安县| 偃师市| 邢台县| 贡山| 新安县| 青铜峡市| 武川县| 衡山县| 额敏县| 宣恩县| 西盟| 扶余县| 改则县| 望都县| 句容市| 陇川县| 巴彦淖尔市| 新绛县| 延津县| 樟树市| 汉川市| 金门县| 常德市| 宝山区|