基于PxA255的U-B00t啟動分析及移植
3.4.1 目標(biāo)板配置文件的修改
目標(biāo)板配置文件inclLlde/configs/xsbase255.h,是移植過程中最重要的文件。在這個文件中,包括兩種類型的配置,一類是選項,前綴是CONFIG_,用來選擇處理器、接口、命令、屬性等;另一類是CFG_用來定義總線頻率、串口波特率等。例如:
#define CONFIG_PXA255 1
#define CFG_SDRAMBASE O xa0000000
在這個頭文件中,配置相當(dāng)?shù)闹匾?,里面配置著主要硬件的參?shù),配置時必須結(jié)合相應(yīng)的硬件手冊才能正確的完成。主要的配置參數(shù)如表1所示。本文引用地址:http://www.ex-cimer.com/article/152485.htm
除了上述表格列舉的以外,還有一些其他的參數(shù)需要修改,例如控制臺串口缺省的通信波特率,缺省的環(huán)境變量設(shè)置(包括本地IP地址、以太網(wǎng)接口的掩碼和MAC地址、服務(wù)器IP地址、傳遞給內(nèi)核的命令行參數(shù)等),啟動參數(shù)列表配置等。頭文件的修改需要對目標(biāo)板的硬件資源有相當(dāng)?shù)牧私?,主要參考處理器和目?biāo)板的開發(fā)文檔。
3.4.2 目標(biāo)板支持文件的修改
目標(biāo)板支持文件board/xsbase255/xsbase255.c也需要修改,此文件中的重點(diǎn)是board_init()函數(shù),這個函數(shù)里包含與開發(fā)板密切相關(guān)的設(shè)備的初始化。bi_arch_number為系統(tǒng)啟動時傳遞給內(nèi)核的MACH號,如果這個參數(shù)與內(nèi)核配置的不相同,則內(nèi)核啟動解壓縮完成后將出現(xiàn)“Error:a”錯誤,提示用戶這個是體系結(jié)構(gòu)參數(shù)傳遞不正確。bi_boot_params為啟動參數(shù)的地址,一般放在RAM起始的16 Kb處,在此設(shè)置為Oxa0000100。
3.4.3 驅(qū)動的移植
在這一部分主要包括閃存和網(wǎng)卡驅(qū)動程序的移植。
(1)FLASH驅(qū)動。這里所使用的目標(biāo)板采用2片NOR型閃存,單片容量16 MB,數(shù)據(jù)線寬度為16 b,2片并作1個32 MB的數(shù)據(jù)寬度為32 b的。BANK。U-Boot本身支持CFI接口規(guī)范的閃存(CFI是針對NOR型FLASH提出的一種獲取閃存和結(jié)構(gòu)參數(shù)的操作規(guī)程和標(biāo)準(zhǔn)),涉及到的文件主要包括drivers/cfi-FLASH.c,comrhand/cmd_FLASH.c。要使U-Boot,支持CFI驅(qū)動,只需在include/configs/xsbase255.h中添加:
#define CFG_FLASH_CFI
#defineCFG_FLASH_CFl_DRIVER 1
(2)網(wǎng)卡驅(qū)動。這里使用的目標(biāo)板上采用的網(wǎng)卡是LAN91C96,U-Boot自帶的驅(qū)動程序drivers/lan91c96.c恰好支持這個網(wǎng)卡,因此只需在include/Configs/xsbase255.h中添加相應(yīng)的配置即可:
#define CONFIG_DRIVER_IAN91C96
#define CONFIG_LAN91C96_BASE 0x0C000300
CONFIG_LAN91C96_BASE定義的值,應(yīng)當(dāng)由網(wǎng)卡的片選地址和I/O基址決定。如果U-Boot固有的驅(qū)動程序沒有對目標(biāo)板的支持,就需要自行在board/xsbase255目錄下添加驅(qū)動程序,然后將其添加到本目錄的Makefile中進(jìn)行編譯和鏈接。
4 U-Boot的編譯和下載調(diào)試
在U-Boot根目錄里輸入命令:
make xsbase255_config
該命令通過./mkconfig腳本生成include/config.mk的配置文件,然后運(yùn)行make命令,完成編譯。如果在編譯過程中出現(xiàn)錯誤,可根據(jù)錯誤的提示逐一排查。完成了錯誤的修改,在重新編譯前,先運(yùn)行make distclean命令,對先前編譯生成的文件進(jìn)行徹底的清除。
成功編譯后,會生成3種不同的映像格式,分別是:u-boot:.bin(二進(jìn)制格式),u-boot(ELF格式)和u-boot.srec(S―Record格式),根據(jù)加載器的不同,選擇合適的格式燒寫到FLASH中進(jìn)行運(yùn)行調(diào)試。在此選擇u-boot.bin,直接按照二進(jìn)制格式下載。
最有效的調(diào)試方法是下載映像到FLASH,使用硬件仿真器進(jìn)行跟蹤調(diào)試。但是由于硬件仿真器價格高等客觀因素,采用軟件跟蹤的方法,利用目標(biāo)板上的LED燈做出判斷。一旦可以打印串口信息,就可以利用串口,將調(diào)試信息輸出到屏幕上。
5 結(jié) 語
U-Boot是一個功能強(qiáng)大的:Bootloader開發(fā)軟件,對多種開發(fā)板的支持使得它可以方便地移植到目標(biāo)板上。首先詳細(xì)分析U-Boot啟動流程,然后詳細(xì)介紹U-Boot在PXA255目標(biāo)板上移植的全過程。目前U-Boot已經(jīng)在目標(biāo)板上穩(wěn)定的運(yùn)行,為Linux內(nèi)核的移植打下了堅實(shí)的基礎(chǔ)。
評論