FL2440--YAFFS2文件系统移植之错误总结

来源:互联网 发布:tsp遗传算法的实现 编辑:程序博客网 时间:2024/06/07 03:02

这篇文件是我这十几天来的所有的痛苦的集结... 好悲剧的说....

1、从uboot的错误开始:

在以前修改的uboot中使用了自动对齐2K字节,这样做的目的是方便烧写uboot和内核时的字节对齐问题..但是在现在看来,这东东确实是害了我不少时间...由于烧写YAFFS2是

2112字节对齐的(2K+64B)...所以...老是出现 Attempt to write error length data!/n 的错误.. 字节对不上... 后来发现了,才把它改了过来.. (实验室人员请把一下代码去掉)

3384 diff -Nuar u-boot-2010.09/common/cmd_nand.c u-boot-2010.09-fl2440/common/cmd_nand.c3385 --- u-boot-2010.09/common/cmd_nand.c    2010-09-29 05:20:55.000000000 +08003386 +++ u-boot-2010.09-fl2440/common/cmd_nand.c 2013-04-25 17:06:35.289436811 +08003387 @@ -148,6 +148,11 @@3391 +    /*Add by yanshifu, if the size is not aligment, then let it's page alignment bug*/3392 +    if(0 != (*size%nand->writesize)) 3393 +    {3394 +        *size = (*size / nand->writesize + 1) * nand->writesize;  3395 +    }

这样就可以解决字节自动对齐2K的问题了.. yaffs2文件系统也能顺利的烧进去了.. 烧写过程有点久,请耐心等待... 具体多久,有兴趣的可以在uboot相关函数下打印

datapages.. 我的文件系统是7.4M的 貌似datapages大概是3000多好像.. 也就是要循环3000多次....慢慢等哈...

2、内核

请把 linux-3.0/drivers/mtd/nand/s3c2410.c 下的

chip->ecc.mode      = NAND_ECC_SOFT 改成 chip->ecc.mode      = NAND_ECC_NONE; 具体原因也是跟 yaffs2系统的 ECC 和 oob 读写有关.. 

这个问题导致了我写入文件系统的整个分区都出现了假坏块...具体是如下:

Scanning device for bad blocks
Bad eraseblock 234 at 0x000001a00000

。。。。。。。。

。。。。。。。
Bad eraseblock 235 at 0x0000077a0000

至此,也就是我犯的最大的两个错误了... 

还有些小错误都忘了.... 有些网上经常出现的错误请参考此博客:  http://blog.csdn.net/liukun321/article/details/6645088 这位大大大大牛已经说得很全面了...

原创粉丝点击