基于U-BOOT的S3C44B0引導(dǎo)裝載程序的設(shè)計(jì)與實(shí)現(xiàn)
⑶include/configs目錄下
◆myboard.h頭文件。此文件是目標(biāo)板的頭文件,大多數(shù)寄存器參數(shù)是在這一文件中設(shè)置完成的。為了使串口能夠正常工作,需要設(shè)置正確的波特率,本嵌入式板波特率為115200bps.根據(jù)片上資源配置,修改內(nèi)存映射相關(guān)參數(shù)。該頭文件里還定義了U-BOOT的一些環(huán)境變量,這時(shí)可以不用修改,U-BOOT啟動(dòng)后可以通過setenv命令來設(shè)定。其它參數(shù)與啟動(dòng)操作系統(tǒng)內(nèi)核有關(guān),需要與內(nèi)核啟動(dòng)參數(shù)相匹配。
⑷Makefile文件修改
在U-BOOT根目錄下的makefile文件進(jìn)行修改,加入:
Myboard_config:unconfig
@./mkconfig $ (@:_config=) arm S3C44B0 myboard
其中“arm”是CPU的種類,S3C44B0是ARM CPU對(duì)應(yīng)的代碼目錄,myboard是自己開發(fā)板對(duì)應(yīng)的目錄。
除了以上修改外,可以根據(jù)目標(biāo)板和實(shí)際開發(fā)需要,添加一些其它功能支持,如以太網(wǎng)、LCD、NVRAM等。與串口和SDRAM調(diào)試相比,在已有的基礎(chǔ)上,添加這些功能還是較容易的。大多只是在參考現(xiàn)有源碼的基礎(chǔ)上,進(jìn)行一些修改和配置[5]。
4.U-BOOT編譯與運(yùn)行
配置好以后,進(jìn)入U-BOOT主目錄,重新編譯u-boot代碼,運(yùn)行命令:
#make myboard_config
#make
編譯成功,將生成三個(gè)文件:
u-boot——ELF格式的文件,可以被大多數(shù)Debug程序識(shí)別。
u-boot.bin——二進(jìn)制bin文件,純碎的U-BOOT二進(jìn)制執(zhí)行代碼,不保存ELF格式和調(diào)試信息。這個(gè)文件用于燒到用戶的開發(fā)板中。
u-boot.srec——Motorola S-Record格式,可以通過串口下載到開發(fā)板中。
將得到的u-boot.bin文件借住于FLASH芯片燒寫工具Flashpgm通過JTAG口下載到目標(biāo)板后,檢查U-BOOT能否正常工作[6]。如果能從串口輸出正確的啟動(dòng)信息,就表明移植基本成功。若沒有按任意鍵,U-BOOT將自動(dòng)加載操作系統(tǒng)內(nèi)核和文件系統(tǒng)。若按下任意鍵,U-BOOT停止自動(dòng)加載,進(jìn)入U(xiǎn)-BOOT命令行,可以輸入命令進(jìn)行調(diào)試。
5.結(jié)束語
本文創(chuàng)新點(diǎn):根據(jù)U-BOOT的運(yùn)行機(jī)理,在硬件資源固定,不改變Bootloader框架的前提下,對(duì)與目標(biāo)板硬件相關(guān)的代碼進(jìn)行移植,使之能夠成功的引導(dǎo)嵌入式操作系統(tǒng)。通過分析引導(dǎo)裝載程序在uclinux中的啟動(dòng)流程與運(yùn)行機(jī)理,結(jié)合U-BOOT,設(shè)計(jì)并實(shí)現(xiàn)了基于S3C44B0X目標(biāo)板上的bootloader。在移植過程中,需要對(duì)Bootloader的結(jié)構(gòu)和工作流程,以及相關(guān)硬件有一定的了解,靈活的選用bootloader,根據(jù)具體情況進(jìn)行裁減,最大程度發(fā)揮bootloader的功能,根據(jù)嵌入式目標(biāo)板與CPU等硬件配置對(duì)相關(guān)代碼進(jìn)行了修改。目前移植后的U-BOOT能夠穩(wěn)定的運(yùn)行在嵌入式目標(biāo)板上,并能順利的引導(dǎo)嵌入式Linux系統(tǒng),完全實(shí)現(xiàn)了設(shè)計(jì)目的,達(dá)到了嵌入式系統(tǒng)設(shè)計(jì)的要求。
參考文獻(xiàn):
1. 詹榮開.嵌入式系統(tǒng)Bootloader技術(shù)內(nèi)幕[DB/OL]. http://www.zidonghua.com.cn /news/detail.asp?id=9641
2. 孫天澤.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開發(fā)指南[M].北京:電子工業(yè)出版社,2005.
3. 張進(jìn),姜威.U-BOOT的啟動(dòng)流程及移植[J].國外電子元器件,2005,5: 11-14
4. 張永強(qiáng),田紫君.基于ARM的HM30C7202平臺(tái)的嵌入式Linux移植[J].微計(jì)算機(jī)信息,2005
5. Karim Yagbmour.構(gòu)建嵌入式LINUX系統(tǒng)[M].北京:中國電力出版社,2004.
6. 李程遠(yuǎn),劉文峰,李善平.ARM Linux在EP7312上的移植[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,24970: 73-77
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論