Bootloader在AT91RM9200系統(tǒng)中的實(shí)現(xiàn)
這個(gè)OrgDef數(shù)組給出了Flash中的段的信息。在函數(shù)flash_identification(flash_info_t * info)中修改打印的信息,flash_init(void)和 flash_print_info(flash_info_t * info)中的變量要相應(yīng)的修改,最后 flash_erase()中的身份判斷部分相應(yīng)的修改(如果只支持一種Flash芯片的話可以去掉)。
按照本系統(tǒng)硬件情況,關(guān)鍵是Flash的驅(qū)動(dòng)部分的修改。由于Bootloader是為了引導(dǎo)操作系統(tǒng),如本文的第2部分分析完成最基本的硬件的初始化即可,所以在實(shí)際移植中經(jīng)常需要做的一般如上文所述。
接下來在Linux下進(jìn)行編譯,設(shè)置環(huán)境變量PATH為交叉編譯器的路徑所在目錄,如:
PATH=$PATH:/usr/local/arm/2.95/bin
在代碼的頂層目錄下執(zhí)行以下命令:
make distclean
make at91rm9200dk_config
make
編譯成功可以得到得到三個(gè)文件:u-boot,u-boot.bin,u-boot.srec。其中boot包含有很多調(diào)試信息,可以被很多調(diào)試程序讀,開發(fā)者也可以用readelf、objdump等命令來查看里面包含的段地址等信息。u-boot.bin文件是ARM可以直接執(zhí)行的二進(jìn)制的文件。u-boot.srec是 MotololarMT srec格式的文件。
按照1.2中介紹的方法燒寫U-boot到Flash芯片,設(shè)置跳線,使BMS引腳為低電平,CPU從外部啟動(dòng),從超級(jí)終端顯示U-boot的啟動(dòng)信息。
3.3 調(diào)試
調(diào)試過程中遇到的問題可能是移植的問題,也有可能是硬件的問題,需要開發(fā)者做出判斷。仔細(xì)的閱讀U-boot的源代碼,對(duì)于了解硬件環(huán)境,進(jìn)行調(diào)試有很大好處。同時(shí)代碼有一些用于調(diào)試的條件編譯,用dbg ()、debug()等函數(shù)輸出調(diào)試信息,開發(fā)者可以通過這些調(diào)試信息輸出函數(shù)得到編譯以得到相關(guān)部分的調(diào)試信息。
編譯通過之后將u-boot.bin載入SDRAM中運(yùn)行,分別試驗(yàn)erase,cp,printenv,saveenv等命令檢測(cè)對(duì)Flash的操作,使用tftp命令以檢測(cè)網(wǎng)口下載功能,然后裝載操作系統(tǒng)內(nèi)核,完成以上的任務(wù)則移植成功。經(jīng)過以上步驟移植的U-Boot已經(jīng)在本人開發(fā)的ARM板上順利的引導(dǎo)Linux操作系統(tǒng)。
4 總結(jié)
本文是筆者結(jié)合AT91RM9200的開發(fā)經(jīng)驗(yàn),首先介紹了該處理器的特點(diǎn),探討了利用GNU開發(fā)bootloader的一般方法和步驟,最后詳細(xì)地分析了U-boot在嵌入式系統(tǒng)上的移植。基于其他的CPU的嵌入式平臺(tái)上的Bootloader的移植與此相似,希望本文能對(duì)嵌入式開發(fā)人員有借鑒意義。 AT91RM9200是適合于工業(yè)控制、汽車電子、醫(yī)療器械等領(lǐng)域的一款基于ARM920T核的高性能芯片,屬于當(dāng)前比較高端的RISC處理器。文章首先分析了AT91RM9200芯片引導(dǎo)的特點(diǎn),然后在基于AT91RM9200的嵌入式系統(tǒng)上實(shí)現(xiàn)Bootloader(操作系統(tǒng)的引導(dǎo)裝載程序)的方法,特別是通過對(duì)移植U-boot的方法和常見問題的詳細(xì)介紹。
本文作者創(chuàng)新點(diǎn):闡明了在基于RISC芯片(ARM、MIPS,PPC等)的系統(tǒng)開發(fā)中實(shí)現(xiàn)bootloader的方法,為廣大的嵌入式開發(fā)人員提供了一個(gè)參考。
參考文獻(xiàn):
[1] 朱義君 楊育紅 趙凱 段志英,AT91系列ARM微控制器體系結(jié)構(gòu)與開發(fā)實(shí)例[M],北京航空航天大學(xué)出版社,2005
[2] Atmel Corporation, ARM920TTM Based Microcontroller AT91RM9200,2004
[3] Wookey, Chris Rutter, Jeff Sutherl, Paul Webb, The GNU Toolchain for ARM Targets HOWTO.
[4] The DENX U-BOOT and Linux Guide (DULG), http://www.denx.de/twiki/bim/view/DULG/Mannual
[5] 萬永波 張根寶 田澤 楊峰,基于ARM的嵌入式系統(tǒng)Bootloader啟動(dòng)流程分析, 微計(jì)算機(jī)信息, 2005年,第21卷11-2期,90頁
評(píng)論