U-Boot在S3C44B0上的移植方法
(2) 硬件資源支持修改后的代碼。開發(fā)者已經(jīng)選用某種類型的嵌入式微處理器,自行設(shè)計(jì)了嵌入式系統(tǒng)的開發(fā)板或者直接從廠家購(gòu)買的開發(fā)系統(tǒng)。在這種情況下,硬件資源已經(jīng)確定,只能在不改變U-Boot整體結(jié)構(gòu)的條件下,通過修改U-Boot的相關(guān)代碼,匹配已有的開發(fā)板。
在實(shí)際應(yīng)用中,最常遇到的是第2種情況。這時(shí)應(yīng)該保證嵌入式主板能夠正常運(yùn)行,沒有硬件故障,具備相應(yīng)的存儲(chǔ)媒介( FLASH、SDRAM) 用來存儲(chǔ)和運(yùn)行U-Boot。由以上分析可以看出,Bootloader 的移植條件包括;①相匹配的微處理器硬件結(jié)構(gòu); ②可對(duì)Boot-loader 進(jìn)行調(diào)整修改的開發(fā)環(huán)境。
注意:以上兩個(gè)條件必須同時(shí)具備,才能著手進(jìn)行Bootloader 的移植工作。
U-Boot 移植操作
Bootloader的移植操作前需要作如下兩個(gè)工作。
(1) 對(duì)嵌入式系統(tǒng)進(jìn)行硬件分析,判定是否滿足移植條件。根據(jù)目標(biāo)板上CPU、FLASH、SDRAM的情況,以盡可能一致的原則先找出一個(gè)與目標(biāo)板為同一個(gè)或同一系列微處理器的U-Boot的支持板為參考,復(fù)制相似的目錄,修改文件名及內(nèi)容。
(2) 確定下載U-Boot所需要的FLASH地址。這由嵌入式微處理器的中斷復(fù)位向量決定,嵌入式板的硬件資源不同,中斷復(fù)位向量就不同,所以不同嵌入式系統(tǒng)板對(duì)Bootloader在固件( EEPROM、FLASH) 中的存放地址各不相同。U-Boot 的起始地址必須和硬件復(fù)位向量一致,本文分析的ARM7嵌入式系統(tǒng)板的中斷復(fù)位向量設(shè)置為0x0C000000,所以U-Boot的映像文件必須燒寫到 FLASH的0x0地址處。
上述兩項(xiàng)工作是移植Bootloader必需完成的前期準(zhǔn)備工作。以下結(jié)合本文完成的移植工作,介紹移植操作的具體內(nèi)容和過程。
硬件配置條件
根據(jù)前文對(duì)移植條件的分析可知,本文的移植操作屬于第2 種情況,即嵌入式系統(tǒng)目標(biāo)板上硬件資源已經(jīng)確定,目標(biāo)板具有硬件資源如表2所列。
表2 硬件資源
移植操作內(nèi)容
U-Boot 移植所需的硬件資源得到滿足后,可以開始移植操作。
首先需要在主機(jī)建立交叉編譯移植開發(fā)環(huán)境,編譯生成目標(biāo)板上可執(zhí)行映像。主機(jī)端( PC) 開發(fā)平臺(tái)選用linux 操作系統(tǒng),使用交叉編譯工具為arm-elf-tools-20030314.sh。Bootloader 移植操作,實(shí)際上就是根據(jù)嵌入式系統(tǒng)硬件資源提供的數(shù)據(jù),對(duì)有關(guān)的文件進(jìn)行修改。移植工作中的文件修改包括匯編和C 文件兩部分。
移植文件修改
針對(duì)本文提供的主板硬件資源,并考慮U-Boot能夠正常運(yùn)行的最低條件,在移植過程中需要修改文件如表3所列。
表3 修改文件
表3 中,memsetup.S 文件是對(duì)S3C44B0外部存儲(chǔ)空間的配置; smdk4110.c 是對(duì)S3C44B0各個(gè)復(fù)用I/ O口的初始化,flash.c 是S3C44B0外接FLASH 芯片的驅(qū)動(dòng)程序。除表3 需要修改的數(shù)據(jù)外,公共代碼(/common目錄下的文件)、網(wǎng)絡(luò)傳輸代碼(/ net 目錄)、驅(qū)動(dòng)程序(/drivers目錄) 3部分根據(jù)不同的移植要求修改。
一般情況是要對(duì)U-Boot的功能進(jìn)行擴(kuò)充或者U-Boot不支持目標(biāo)板上的設(shè)備時(shí),添加相應(yīng)程序。
評(píng)論