移植前的准备 

(1)、首先读读uboot自带的readme文件,了解了一个大概。 
(2)、看看common.h,这个文件定义了一些基本的东西,并包含了一些必要的头文件。再看看flash.h,这个文件里面定义了 flash_info_t为一个struct。包含了flash的一些属性定义。并且定义了所有的flash的属性,其中,AMD的有:AMD_ID_LV320B,定义为“#define AMD_ID_LV320B 0x22F922F9”。 
(3)、对于“./borad/at91rm9200dk/flash.c”的修改,有以下的方面: 
“void flash_identification(flash_info_t *info)”这个函数的目的是确认flash的型号。注意的是,这个函数里面有一些宏定义,直接读写了flash。并获得ID号。 
(4)、修改:”./board/at91rm9200dk/config.mk”为 
TEXT_BASE=0x21f80000 为TEXT_BASE=0x21f00000 (当然,你应该根据自己的板子来修改,和一级boot的定义的一致即可)。 
(5)、再修改”./include/configs/at91rm9200dk.h”为 
修改flash和SDRAM的大小。 
(6)、另外一个要修改的文件是: 
./borad/at91rm9200dk/flash.c。这个文件修改的部分比较的多。 
a. 首先是OrgDef的定义,加上目前的flash。 
b. 接下来,修改”#define FLASH_BANK_SIZE 0x200000”为自己flash的 容量 
c. 在修改函数flash_identification(flash_info_t * info)里面的打印信息,这部分将在u-boot启动的时候显示。 
d. 然后修改函数flash_init(void)里面对一些变量的赋值。 
e. 最后修改的是函数flash_print_info(flash_info_t * info)里面实际打印的函数信息。 
f. 还有一个函数需要修改,就是:“flash_erase”,这个函数要检测先前知道的flash类型是否匹配,否则,直接就返回了。把这里给注释掉。 

(7)、接下来看看SDRAM的修改。 
这个里面对于“SIZE”的定义都是基于字节计算的。 
只要修改”./include/configs/at91rm9200dk.h”里面的 
“#define PHYS_SDRAM_SIZE 0X200000”就可以了。注意,SIZE是以字节为单位的。 
(8)、还有一个地方要注意 
就是按照目前的设定,一级boot把u_boot加载到了SDRAM的空间为:21F00000 -> 21F16B10,这恰好是SDRAM的高端部分。另外,BSS为21F1AE34。 

(9)、编译后,可以写入flash了。 
a. 压缩这个u-boot.bin 
“gzip –c u-boot.bin > u-boot.gz” 
压缩后的文件大小为: 
43Kbytes 
b. 接着把boot.bin和u-boot.gz烧到flash里面去。 
Boot.bin大约11kBytes,在flash的0x1000 0000 ~ 0x1000 3fff 

 

7. U-Boot移植主要修改的文件 
从移植U-Boot最小要求-U-Boot能正常启动的角度出发,主要考虑修改如下文件: 
① <目标板>.h头文件,如include/configs/RPXlite.h。可以是U-Boot源码中已有的目标板头文件,也可以是新命名的配置头文件;大多数的寄存器参数都是在这一文件中设置完成的; 
② <目标板>.c文件,如board/RPXlite/RPXlite.c。它是SDRAM的驱动程序,主要完成SDRAM的UPM表设置,上电初始化。 
③ FLASH的驱动程序,如board/RPXlite/flash.c,或common/cfi_flash.c。可在参考已有FLASH驱动的基础上,结合目标板FLASH数据手册,进行适当修改; 
④ 串口驱动,如修改cpu/mpc8xx/serial.c串口收发器芯片使能部分。 

posted on 2010-05-17 18:05  灰太狼大王  阅读(562)  评论(0编辑  收藏  举报