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