基于AT91RM9200的ARM Linux的移植方法
目前基于嵌入式系統(tǒng)的Bootloader版本很多,如Blob、Redboot、Vivi和U-Boot等,下面就以現(xiàn)在最流行的U-Boot為例,詳細介紹如何將它移植到自己的目標板上。U-boot移植主要步驟如下:
首先基于自己的目標板的硬件資源,修改或添加U-Boot源代碼的board/at91rm9200目錄中如下源碼文件:(1)重寫FLASH的設備控制程序flash.c , U-Boot讀、寫和刪除Flash設備的源代碼文件。由于在不同目標板中FLASH存儲器種類各不相同,參照自己flash的datasheet重寫 flash的設備控制程序flash.c,該程序完成的功能包括Flash初始化、打印Flash信息、Flash擦除和Flash寫入等操作。(2)添加memsetup.s。該匯編源碼文件初始化時鐘、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中各個目標文件的連接地址,基本不做修改。(6)config.mk。根據(jù)目標板的一級boot來修改,修改后TEXT BASE=0x21f00000。
其次,修改目錄include/configs的頭文件at91rm9200dk.h,根據(jù)目標板的資源配置,修改內容包括CPU ,系統(tǒng)時鐘、RAM 、Flash等配里信息以及內存映射相關參數(shù)。該頭文件還定義了U-Boot的一些環(huán)境變量和內核啟動參數(shù).可在U-Boot啟動后通過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的種類,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在開發(fā)板上能正常啟動,調試成功后,燒寫U-Boot到FLASH,燒寫完成后,復位目標板,串口終端就顯示U-Boot的啟動信息。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論