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