【問題】 別人遇到的問題:
我是TQ2440開發(fā)板,移植好uboot后,使用nand erase命令擦除nand flash時(shí)候,出現(xiàn)如下提示:
【解決過程】 1.網(wǎng)上搜了搜,只找到,類似的: 6410板子操作系統(tǒng)燒不進(jìn)nandflash 編寫LEDdriver驅(qū)動(dòng)后,生成的NK.bin燒錄到開發(fā)板中不能運(yùn)行 很明顯,其錯(cuò)誤都是-5,而不是此處的-22. 2.所以就去找uboot源碼。 找到之前就搜藏的: 可惜現(xiàn)在不可用了。 3.所以就去: 找到: 去下載一個(gè)最新的: 4.用SourceInsight建好了Uboot的項(xiàng)目后,去搜: MTD Erase failure 然后找到了,對(duì)應(yīng)的源碼位置:
5.接下來,就是去分析,-22具體是什么錯(cuò)誤。 想要去找-22,找了半天,終于從當(dāng)前的 Nand_util.c (e:\dev_root\uboot\u-boot-2013.01\drivers\mtd\nand) 20543 2013/1/16 找到其所包含的頭文件: 中,是對(duì)應(yīng)的是: Errno.h (e:\dev_root\uboot\u-boot-2013.01\include\asm-generic) 7058 2013/1/16 即,此處的-22的錯(cuò)誤,原因就是參數(shù)是非法的(Invalid argument) 6.然后再去分析看看上述nand erase中的參數(shù): 到底為何是非法的。 先去看看nand erase的命令含義和語法的解釋: 參考: 知道語法是: 然后再來對(duì)照上述命令,即此處的是: off=offset=要erase的位置=0x5a0000 size=大小=要erase的大小=0xf9000000
而對(duì)于0xf9000000,去算了一下 0xf9000000=4079616KB=3984MB=3GB 即,此處要erase的大小是3G 而注意到,此處的nand flash是:
即,最大大小一共才256MB,但是你卻要擦除3GB,所以當(dāng)然是參數(shù)錯(cuò)誤了。 解決辦法就很簡單了: 需要自己搞懂,要擦除的大小,到底是多少。 當(dāng)然要確保,offset+size,不會(huì)超過nand flash的總大小才行。
【總結(jié)】 對(duì)于uboot中的nand flash的各種命令,要在使用之前,去搞懂具體的語法。
提示: 問:如何搞懂uboot中的某個(gè)命令? 答:參考我之前寫的: 去使用: help nand 就可以查看到,nand 相關(guān)的命令了。 其中就包括此處的nand erase的語法和含義。 |
|