U-Boot在MPC8265平臺上的移植與分析
3 U-Boot的移植
U-Boot在設計時(shí)已考慮到支持使用不同CPU處理器的開(kāi)發(fā)板,根據具體板級硬件配置的設計要求,修改與其相關(guān)的源代碼,將U-Boot移植到新的開(kāi)發(fā)板上。這里開(kāi)發(fā)板TDS8265外圍接口主要有100 M網(wǎng)口、RS232串口和JTAG調試接口等。
3.1 修改U-Boot源代碼
為了簡(jiǎn)化移植工作,可在U-Boot源碼中選擇一個(gè)與開(kāi)發(fā)板接近的參考平臺,然后從移植U-Boot的要求和開(kāi)發(fā)板能正常啟動(dòng)的角度出發(fā)進(jìn)行修改。
這里以在U-Boot/board目錄下為T(mén)DS8265開(kāi)發(fā)板新建文件夾TDS8265為例進(jìn)行說(shuō)明。
1)修改頭文件TDS8265.h路徑是U-Boot/include/configs/TDS8265.h,是開(kāi)發(fā)板的主要配置元件,配置CPU、系統時(shí)鐘、SDRAM、Flash以及其他開(kāi)發(fā)板相關(guān)信息。設置CPU寄存器參數,需仔細對照處理器datasheet中各寄存器的定義、參考設置、目標板實(shí)際情況等做出選擇并測試。MPC82xx系列處理器較為關(guān)鍵的寄存器有SIUMCR、PS-DMR、SCCR、BRx、ORx等。設置CPU寄存器基地址IMMR時(shí),注意與硬件配置相對應。如:
設置與Flash控制相關(guān)的寄存器BR0、OR0時(shí),根據目標板所用Flash的數據手冊與BR0和OR0的相關(guān)位含義合理設置,這不僅關(guān)系到Flash能否正常工作,而且與串口調試直接相關(guān)。設置Flash、SDRAM,包括基址、大小、環(huán)境變量的偏移,內存刷新周期。設置環(huán)境變量,網(wǎng)絡(luò )接口,IP地址,MAC地址,用于網(wǎng)絡(luò )下載和啟動(dòng);設置Linux內核啟動(dòng)參數init=/sbin/init。
2)編寫(xiě)tds8265.c文件 路徑是U-Boot/board/tds8265/tds8265.c。tds8265.c是目標板的SDRAM的驅動(dòng)程序,涉及I/0端口表、相關(guān)寄存器的設置及SDRAM上電初始化過(guò)程3個(gè)主要部分。任何一部分有問(wèn)題,都會(huì )影響U-Boot、嵌入式操作系統甚至應用程序的運行,所以SDRAM的驅動(dòng)不僅關(guān)系到U-Boot本身能否正常運行,而且還與后續部分相關(guān)。根據MPC8265處理器datasheet和開(kāi)發(fā)板的硬件電路圖,配置8265的I/0端口表;設置寄存器PSDMR和BRl、0R1;向SDRAM中寫(xiě)入8次以初始化SDRAM等。SDRAM的初始化是由/lib_ppc/board.c中的board_init_f()調用的,入口為tds8265.c的函數initdram。
3)修改config.mk文件 路徑是U-Boot/board/tds8265/config.mk。修改中,對該文件中的TEXT_BASE賦值應與TDS8265.h中對CF-G_FLASH_BASE的賦值保持一致。
4)編寫(xiě)flash.c文件 路徑是U-Boot/board/tds8265/flash.c。flash.c是Flash的驅動(dòng)程序,是U-Boot讀/寫(xiě)、刪除Flash的源代碼
文件,其中包括多個(gè)函數,以實(shí)現不同的操作。如:
編寫(xiě)flash.c文件時(shí)需參考Flash的數據手冊,嚴格按照其中的說(shuō)明實(shí)現Flash的各種操作。
5)創(chuàng )建U-boot.lds,U-boot.lds.debug,makefile文件 這些文件均在目錄U-Boot/board/tds8265之下。設置U-boot中各個(gè)目標文件的連接地址。
6)修改MAKEALL文件 路徑是U-Boot/MAKEALL。因為使用的是MPC8265,屬于82xx系列,所以在“LIST_82xx”下加入目標板名稱(chēng)“TDS8265”。
7)修改Makefile文件 路徑是U-Boot/Makefile。在Makefile文件中增加TDS8265開(kāi)發(fā)板的配置行,指定交叉編譯器的完整路徑名。
評論