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