编译at91sam9x5ek的dataflash专用uboot

昨天将MYS_SAM9X5的板子从nandflash启动改为dataflash启动,重新编译了bootstrap。但是uboot还是使用于nandflash的原始版本。导致开启时候会检测nand devices,若此时jp3处于断开(即禁用nand)状态,则会跳出。

于是我想出了如何编译出适用于dataflash的新uboot的方法:

首先打开配置文件

cd  uboot/configs/
vim at91sam0x5ek.h


找到(大概在182行)

#ifdef CONFIG_SYS_USE_DATAFLASH

编译at91sam9x5ek的dataflash专用uboot_第1张图片


这个意思是说如果打开CONFIG_SYS_USE_DATAFLASH
则下面的定义全部生效,比如环境变量在0x5000这个地方读取,放在ddr的0x10005000这个地方,环境变量的二进制文件大小为0x3000  。。。

所以要做的就是打开
CONFIG_SYS_USE_DATAFLASH
于是我在123行加入
#define CONFIG_ATMEL_SPI                1    /*start spi  by: dcy*/



然后编译。。。。
嘿嘿,出错了, 来看看报错
build.c:50: error: #error Malloc area too small for UBI, increase CONFIG_SYS_MALLOC_LEN to >= 512k


编译at91sam9x5ek的dataflash专用uboot_第2张图片

错误在drivers/mtd/ubi/build.c 的第50行
#if (CONFIG_SYS_MALLOC_LEN < (512 << 10))
#error Malloc area too small for UBI, increase CONFIG_SYS_MALLOC_LEN to >= 512k
#endif



原来是CONFIG_SYS_MALLOC_LEN设置的太小了,于是找到这个宏
继续看我的配置文件

vim  uboot/configs/at91sam0x5ek.h

#define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)


改为

#define CONFIG_SYS_MALLOC_LEN           (512 << 10)     /* Reserve 512 kB for malloc()  */


然后再次编译,OK,成功了
最后将编译的u-boot.bin烧dataflash的0x8400,上电重启

新编译的uboot中还有有了sf等指令了






你可能感兴趣的:(嵌入式)