U-Boot在LPC2210上的移植分析
5.4 board/dx2210開發(fā)板相關(guān)文件
在這個目錄中主要包含dx2210.c、config.mk、flash.c、memsetup.S、u-boot.lds幾個文件。在 dx2210.c文件中主要工作為初始化開發(fā)板,在文件中編寫int board_init(void)函數(shù)定義各個復(fù)用I/O端口的信息、初始化RAM芯片等完成初始化工作。由于在u-boot代碼中是用抽象成一種結(jié)構(gòu)體來描述開發(fā)板硬件信息以便于移植工作,因此在文件中修改:
gd->bd->bi_arch_number=MACH_TYPE_LPC2210; //開發(fā)板架構(gòu)ID號
gd->bd->bi_boot_params=0x81000100; //傳遞給ucinux內(nèi)核的參數(shù)
gd->bd->bi_dram[0].start=PHYS_SDRAM_1;
gd->bd->bi_dram[0].size=PHYS_SDRAM_1_SIZE; //RAM內(nèi)存配置
u-boot.lds是給Linker程序使用的配置文件,主要修改部分:
SECTIONS
{ .=0x80000000; //起始地址為0x80000000
.=ALIGN(4); //4字節(jié)對齊
.text :
{ cpu/LPC2210/start.o (.text)
*(.text) //text段的起始是start.S的text段
memsetup.S匯編文件主要是用來初始化RAM,在memsetup.S文件中配置開發(fā)板用到的存儲器組,然后根據(jù)MT45W4MW16芯片手冊驅(qū)動RAM;Flash芯片的驅(qū)動代碼在flash.c文件中,由于開發(fā)板的Flash芯片SST39VF160與B2開發(fā)板芯片相同,直接復(fù)制后即可。
6.生成目標(biāo)文件完成移植工作
移植工作完成后在SHELL環(huán)境下依次運(yùn)行如下命令:make clean; make dx2210_config;make。成功編譯后生成4個映像文件分別是:u-boot.hex文件: U-Boot映像原始的INTEL HEX格式文件;u-boot.map文件:U-Booty映像的符號表;u-boot.srec文件:U-Boot映像的S-Record格式文件;System.map文件: U-Boot映像的符號表。使用Flash燒寫工具將u-boot.hex文件按照16進(jìn)制格式下載到Nor Flash中,再將uclinux內(nèi)核映像文件和根文件系統(tǒng)影響文件init.img燒寫到Nor Flash的指定地址后,可以看到如圖2所示的存儲空間分布:
圖2 存儲空間映射
其中u-boot映像文件存放在Flash的起始地址0x80000000處,相當(dāng)于程序的邏輯地址0x0處與硬件確定的復(fù)位向量相符合;u-boot在stage2部分將Flash中的內(nèi)核映像和根文件系統(tǒng)映像復(fù)制到從0x81008000開始的2MB內(nèi)存范圍內(nèi),空出來的32K內(nèi)存空間主要來存放uclinux內(nèi)核的一些全局的數(shù)據(jù)結(jié)構(gòu),如啟動參數(shù)和內(nèi)核頁表等信息。
7.結(jié)束語
本文首先闡述了Bootloader引導(dǎo)程序得基本原理,在介紹了開放源代碼Bootloader程序U-Boot軟件基礎(chǔ)上,以LPC2210 ARM7處理器及其相關(guān)開發(fā)板為例,完成了U-Boot軟件的移植工作。前期的啟動引導(dǎo)程序的移植工作是嵌入式系統(tǒng)開發(fā)的重要環(huán)節(jié),在此基礎(chǔ)上可以更加深入的進(jìn)行嵌入式系統(tǒng)開發(fā)。
本文作者創(chuàng)新點(diǎn):本文在詳細(xì)的分析U-Boot軟件的基礎(chǔ)上,針對U-Boot軟件本身并不支持的ARM7 LPC2210,本文介紹了在U-Boot軟件中添加相關(guān)代碼的方法并完成移植的實(shí)例,為更加深入的后續(xù)嵌入式開發(fā)打下良好基礎(chǔ)。
參考文獻(xiàn):
[1] The Denx U-Boot and Linux Guide. http://www.denx.de/twiki/bin/view/DULG/Manual.
[3] 周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京航空航天大學(xué)出版社.2005.1; 129-154
[4] 孫瓊.嵌入式Linux應(yīng)用程序開發(fā)詳解[M].人民郵電出版社.2006.7; 108-128
[5] 白偉平,包啟亮.基于ARM的嵌入式Boot Loader淺析[J].微計(jì)算機(jī)信息,2006,4:99-100
評論