U-boot2009.08当无法保持环境变量到NAND时候的解决方法

更新时间:2024-05-03 09:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

完全按照这个来就可以解决了

按照网上的教程移植uboot2009.08到ok2440,移植到从nandflash启动这步,无论如何saveenv时都是保存到flash。 问题:

my2440.h文件中nandflash设置部分: #if defined(CONFIG_CMD_NAND)

#define CONFIG_SYS_NAND_BASE 0x4e000000 #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_MTD_NAND_VERIFY_WRITE 1

#define NAND_SAMSUNG_LP_OPTIONS 1 //大页要添加这个 #define CONFIG_NAND_S3C2440 1 #define CONFIG_S3C2440_NAND_BOOT 1 #undef CONFIG_ENV_IS_IN_FLASH

#define CONFIG_ENV_IS_IN_NAND 1 /* 环境变量的保存位置 */ #define NAND_CTL_BASE 0x4E000000 #define oNFCONF 0x00 #define oNFCONT 0x04 #define oNFADDR 0x0c #define oNFDATA 0x10 #define oNFCMD 0x08 #define oNFSTAT 0x20 #define oNFECC 0x2c

#define CONFIG_ENV_OFFSET 0x40000 #define CONFIG_ENV_SIZE 0x20000 #endif

我设置了#define CONFIG_ENV_IS_IN_NAND 1 可是启动时还是

Saving Environment to Flash...

Error: start and/or end address not on sector boundary 解决过程:

Saving.....师傅跟我说是common/cmd_nvedit.c里的, 开始找,在其前面加了这句

#if defined(CONFIG_ENV_IS_IN_NAND)

printf(\#else

printf(\#endif

Error...这句是cmd_flash里的 找之,在其前面加上上面代码 结果启动时竟然

Have defined CONFIG_ENV_IS_IN_NAND

Saving Environment to Flash...

Have defined CONFIG_ENV_IS_IN_NAND

Error: start and/or end address not on sector boundary 有点崩溃。。 改common/Makefile

把添加env_flash.c这行去了

编译,启动,还是一样!!!!!!!!!!!!!!!! 崩溃。

又想了好久,这次得来狠的,

直接把common/cmd_nvedit.c输出Saving。。。。这句话前面加上env_name_spec=\

把return (saveenv() ? 1 : 0);改成return (saveenv_nand()?1:0); 再在开头extern 声明一下saveenv_nand这个函数,

把common/env_nand.c中的saveenv函数名改成saveenv_nand

编译,终于有错误了,说common/libcommon.a里还有env_flash.o,还重复定义很多函数

终于找着元凶了,果断把libcommon.a删了 编译,通过,启动板子,保存到nandflash上了 还原函数

还是能够保存到nandflash上,折腾了几天,终于搞定了。

本文来源:https://www.bwwdw.com/article/bzjg.html

Top