【问题】 别人遇到的问题:
我是TQ2440开发板,移植好uboot后,使用nand erase命令擦除nand flash时候,出现如下提示:
【解决过程】 1.网上搜了搜,只找到,类似的: 编写LEDdriver驱动后,生成的NK.bin烧录到开发板中不能运行 很明显,其错误都是-5,而不是此处的-22. 2.所以就去找uboot源码。 找到之前就搜藏的: 可惜现在不可用了。 3.所以就去: 找到: 去下载一个最新的: 4.用SourceInsight建好了Uboot的项目后,去搜: MTD Erase failure 然后找到了,对应的源码位置:
5.接下来,就是去分析,-22具体是什么错误。 想要去找-22,找了半天,终于从当前的 Nand_util.c (e:\dev_root\uboot\u-boot-2013.01\drivers\mtd\nand) 20543 2013/1/16 找到其所包含的头文件: 中,是对应的是: Errno.h (e:\dev_root\uboot\u-boot-2013.01\include\asm-generic) 7058 2013/1/16 即,此处的-22的错误,原因就是参数是非法的(Invalid argument) 6.然后再去分析看看上述nand erase中的参数: 到底为何是非法的。 先去看看nand erase的命令含义和语法的解释: 参考: 知道语法是: 然后再来对照上述命令,即此处的是: off=offset=要erase的位置=0x5a0000 size=大小=要erase的大小=0xf9000000
而对于0xf9000000,去算了一下 0xf9000000=4079616KB=3984MB=3GB 即,此处要erase的大小是3G 而注意到,此处的nand flash是:
即,最大大小一共才256MB,但是你却要擦除3GB,所以当然是参数错误了。 解决办法就很简单了: 需要自己搞懂,要擦除的大小,到底是多少。 当然要确保,offset+size,不会超过nand flash的总大小才行。
【总结】 对于uboot中的nand flash的各种命令,要在使用之前,去搞懂具体的语法。
提示: 问:如何搞懂uboot中的某个命令? 答:参考我之前写的: 去使用: help nand 就可以查看到,nand 相关的命令了。 其中就包括此处的nand erase的语法和含义。 |
|
来自: dwlinux_gs > 《u-boot》