u-boot下载地址:ftp://ftp.denx.de/pub/u-boot/ 尽量选择新的版本来移植,因为新版本支持的cpu更多,可以减少移植的工作量。
我移植选择的版本是:u-boot-2010.03.tar.bz2
编译器是 arm-softfloat-linux-gnu-
1. 解压后,切换到目录/u-boot-2010.03/lib_arm/
打开 config.mk 如下修改
CROSS_COMPILE ?= arm-linux-
改为
CROSS_COMPILE ?= arm-softfloat-linux-gnu-
2. 切换到目录\u-boot-2010.03\include\configs\
打开 at91sam2963ek.h
#define CONFIG_SYS_AT91_MAIN_CLOCK 16367660 /* 16.367 MHz crystal */
改为
#define CONFIG_SYS_AT91_MAIN_CLOCK 18432000 //cpu的晶振频率
#define CONFIG_ENV_IS_IN_DATAFLASH 1
#define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
注释:0x8400为一级启动文件设置的u-boot在dataflash里的地址
#define CONFIG_ENV_OFFSET 0x4200
注释:0x4200为uboot环境变量保存的地址
#define CONFIG_ENV_ADDR (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
#define CONFIG_ENV_SIZE 0x4200
注释:0x4200为环境变量保存空间的大小,注意0x4200+0x4200 不能超过0x8400
如果一级启动文件设置uboot在dataflash里的地址为0x8000,则环境变量的地址为0x4000,空间大小为0x4000,不能超过0x8000。
#define CONFIG_BOOTCOMMAND "cp.b 0xC0042000 0x22000000 0x210000; bootm"
#define CONFIG_BOOTARGS "console=ttyS0,115200 " \
"root=/dev/mtdblock0 " \
"mtdparts=atmel_nand:-(root) "\
"rw rootfstype=jffs2"