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