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