demonguy 发表于 2014-10-29 23:42:29

u-boot永远把环境变量所在区域标记为坏块

本帖最后由 demonguy 于 2014-10-30 15:26 编辑

我想自己开发一个u-boot上的nand flash 驱动,目前测试读写似乎都挺正常,就是在坏块标记非常有问题,概括起来应该是,擦除之后一个坏块都没有,但是只要往任何一个block写数据, nand dump出来之后数据都是对的,但是一旦重启,这个被写过数据的块就会被u-boot标记为坏块,不知道为啥
我做了以下步骤:





[*]擦除整个nand(是用我自己的代码擦除的,并且没有发现坏块)..........启动u-boot, 提示"bad CRC ,using default environment".
[*]然后我调用saveenv命令,没啥问题
[*]这个时候使用nand bad, 没有任何坏块
[*]重启开发板
[*]这时候提示 "readenv() failed, using default environment".
[*]nand bad 命令显示, 正好在我设置的"CONFIG_ENV_OFFSET" 这个地址上的块成为了坏块
[*]然后我就修改了一下CONFIG_ENV_OFFSET的值,发现无论修改什么值,重复上面几个步骤,最后都会被u-boot标记为坏块
当然,在做这些实验之前,我也测试了一下nand的读写是否正常
[*]擦除后,执行 nand dump 0, 显示都是0xff,一切正常
[*]"nand write 20000000 0 800"将 0x20000000内存中的 2048个字节写入nand 块0里
[*]然后 "nand dump 0",读出块0数据,然后把md 0x20000000 数据也dump出来比较,发现是一致的, 这个时候应该就可以判定读写正常了吧?

页: [1]
查看完整版本: u-boot永远把环境变量所在区域标记为坏块