基于A(yíng)T91RM9200的ARM Linux的移植方法
目前基于嵌入式系統的Bootloader版本很多,如Blob、Redboot、Vivi和U-Boot等,下面就以現在最流行的U-Boot為例,詳細介紹如何將它移植到自己的目標板上。U-boot移植主要步驟如下:
首先基于自己的目標板的硬件資源,修改或添加U-Boot源代碼的board/at91rm9200目錄中如下源碼文件:(1)重寫(xiě)FLASH的設備控制程序flash.c , U-Boot讀、寫(xiě)和刪除Flash設備的源代碼文件。由于在不同目標板中FLASH存儲器種類(lèi)各不相同,參照自己flash的datasheet重寫(xiě) flash的設備控制程序flash.c,該程序完成的功能包括Flash初始化、打印Flash信息、Flash擦除和Flash寫(xiě)入等操作。(2)添加memsetup.s。該匯編源碼文件初始化時(shí)鐘、SMC控制器和SDRAM控制器。(3)添加網(wǎng)卡芯片DM9161E的設備控制程序dm9161.c 和dm9161.h,程序。(4)修改Makefile文件。對上述修改或添加的源代碼文件編譯后,在Makefile里面主要做如下修改: OBJS :=at91rm9200dk.c at45.o dm9161.o flash.o SOBJS:=memsetup.o(5) U-Boot.lds ,設置U-boot中各個(gè)目標文件的連接地址,基本不做修改。(6)config.mk。根據目標板的一級boot來(lái)修改,修改后TEXT BASE=0x21f00000。
其次,修改目錄include/configs的頭文件at91rm9200dk.h,根據目標板的資源配置,修改內容包括CPU ,系統時(shí)鐘、RAM 、Flash等配里信息以及內存映射相關(guān)參數。該頭文件還定義了U-Boot的一些環(huán)境變量和內核啟動(dòng)參數.可在U-Boot啟動(dòng)后通過(guò)setenv和 saveenv命令修改。U-Boot-1.1.2版本對at91rm9200處理器提供良好的支持,因此對于目錄CPU at91rm9200中的源碼基本不做修改。在U-Boot-1.1.2的Makefile中加入如下代碼:
at91rm9200dk_config: unconfig@/mkconfig $(@: _config=) arm at91rm9200 at91rm9200dk
其中“arm”是CPU的種類(lèi),at91rm9200是ARM CPU對應的代碼目錄,at91rm9200dk是目標板對應的目錄。由于交叉編譯器安裝在目錄/usr/local/arm,應把環(huán)境變量 CROSS_COMPILE設置成相應路徑:CROSS_COMPILE=/usr/local/arm/2.95.3 /bin/arm-linux-
最后,調試U-Boot源代碼,直到U-Boot在開(kāi)發(fā)板上能正常啟動(dòng),調試成功后,燒寫(xiě)U-Boot到FLASH,燒寫(xiě)完成后,復位目標板,串口終端就顯示U-Boot的啟動(dòng)信息。
評論