1、一级启动代码Bootstrap修改的文件在Bootstrap-v1.16\board\at91sam9261ek\nandflash目录下的at91sam9261ek.h中的(在项目程序中未作修改)
#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */
#define IMG_SIZE 0x40000 /* Image Size in NandFlash */
IMG_ADDRESS为Uboot在Nandflash中存放的起始地址,IMG_SIZE为文件大小,单位为KB,根据实际情况设定。
另外添加了支持的Nandflash的信息在Bootstrap-v1.16\include目录下的nand_ids.h文件中的
{0xecF1, 0x400, 0x20000, 0x800, 0x40, 0x0, "K9F1G08U0B\0"},
具体意义见Bootstrap-v1.16\include目录下的nandflash.h中的介绍
Bootstrap编译过程:在Bootstrap-v1.16\board\at91sam9261ek\nandflash目录下有个makefile文件,只需用gcc编译工具(本程序是在Cygwin环境下)make目录中的makefile文件即可在当前文件下生成所需的可执行文件,然后用SAM-BA工具烧写到Nandflash中(具体方法在此不做说明)。
2、Uboot修改的文件在u-boot-1.3.4\include\configs目录下的at91sam9261ek.h文件中的
#undef CFG_USE_DATAFLASH_CS0
/*#undef CFG_USE_NANDFLASH */
#define CFG_USE_NANDFLASH 1
和
#define CFG_ENV_IS_IN_NAND 1
#define CFG_ENV_OFFSET 0x60000
#define CFG_ENV_OFFSET_REDUND 0x80000
#define CFG_ENV_SIZE 0x20000 /* 1 sector = 128 kB */
#define CONFIG_BOOTCOMMAND "nand read 0x22000000 0xa0000 0x200000; bootm"
CFG_ENV_OFFSET和CFG_ENV_OFFSET_REDUND为存放uboot环境变量的起始地址,大小为0x20000。从0xa0000为应用程序代码存放的起始地址,大小为0x200000。
编译过程:修改完以上环境变量后,在根用户下进入到u-boot-1.3.4目录执行以下命令
[root@localhost u-boot-1.3.4]#make distclean
[root@localhost u-boot-1.3.4]# make at91sam9261ek_config
Configuring for at91sam9261ek board...
[root@localhost u-boot-1.3.4]#make
然后等待编译完成,需要一段时间,编译完成后在u-boot-1.3.4文件目录下就会生成u-boot.bin文件
然后通过SAM-BA烧写到Nandflash中。