问题:Jz2440板子上,运行u-boot,在更改环境变量后,运行save出现。
Saving Environment to NAND...Erasing Nand...
nand_erase: attempt to erase a bad block at page 0x00000080。
尝试解决:开始以为是误标记为坏块了,所以尝试了nand erase 和nand scrub后重新烧u-boot同样出现这种问题。尝试运行nand bad后发现坏块地址0x40000,该地址正好是params的开始地址。
最终解决方案:最终通过扩大bootloder的方法,解决了该问题。步骤如下:
1、修改bootload空间大小为512K。
2、更改CFG_ENV_OFFSET得治为0x80000
3、重新编译,下载。
代码路径:include/congfigs/100ask24x0.h
更改后代码如下:
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:512k@0(bootloader)," \
"128k(params)," \
"2m(kernel)," \
"-(root)"
.............
............
..............
#define CFG_ENV_IS_IN_NAND 1
#define CFG_ENV_OFFSET 0x80000
#define CFG_ENV_SIZE 0x20000 /* Total Size of Environment Sector */