tiny210上uboot移植备忘

最近在学习tiny210上uboot的移植(使用的是u-boot for tiny210 ver3.1 (by liukun321咕唧咕唧)),以前对nand flash 一无所知,最近学习了一些,做个备忘。

tiny210上nand flash 容量1G,结构如下:

1 Page = 2K;

1 Block=64 page=128K;

1 Device=8192 block=1024M;

记得:擦除操作的最小单位一定是 块(block)

前面关于uboot移植过程中出现的状况就不一一赘述了,总之每一步都出现了问题,(理论跟实践果然是有差距的),作为一名菜鸟,只能各种搜答案,各种问别人...所幸,边学习边进步总算是做好了uboot移植。

在做引导内核的时候,问题出现了,配置好了uboot,设置好了环境,将内核写入了nand flash 中,结果每次uboot 启动完读nand flash的时候,总是提示

NAND read from offset 600000 failed -74

这问题困扰了好久,试着从nand flash中直接读的时候,但读取64K数据的时候还OK,但当读取超过64K的时候老是出现这个问题。

于是各种找答案啊.....

终于在 liukunmcu回答别人的帖子中看到他说: 出现上面的问题,是因为你nand中的内容是用Superboot210 烧写的,它的ECC配置和u-boot for tiny210 存在差异,在读取oob时会出问题,所以读的时候出错。读不超过2k的内容会显示读取成功,实际是读取失败的。如果你用u-boot for tiny210擦除整片nand然后用u-boot for tiny210烧写,再读就不会出现问题了。

于是,按照他的指示,试着去先擦除nand flash,然后重写,结果擦除的时候用了这个命令 nand erase 0x50000 0x419100 ,结果一直出错:

NAND erase: device 0 offset 0x50000, size 0x419100         

nand0: MTD Erase failure: -22

于是自己又找不到原因了......

还好在网上找到了原因.....

这种情况一般是地址问题 ,次地址必须是块的起始地址比如0x320000

按照这个说法,将erase 的地址换成块的起始地址,(0x20000的倍数)

于是问题解决了,接下来,开始整文件系统...



你可能感兴趣的:(Linux,UBOOT)