我原来用的uboot是所购开发板厂家提供2011.9版本的,现在我自己做板子,音频、网络等接口芯片都重新根据需要做了调整,为了方便调试我的uboot也采用了2014.1版本,现在都已经基本完成,只剩下在boot中写文件系统,原来版本是通过nandecc选择软件ecc来写的文件系统,现在只是什么也不选择的写入,文件系统无法正常启动。因为从官网上下载的uboot中没有nandecc命令,我下载了官网上的2011.9里也没有这部分的内容,感觉是后来加上的,不知道是开发板厂家加的?还是ti官方加的?我把原来的nandecc考到2014.1版里,里面又有好多冲突的东西,一时之间不知道从哪下手了,请赐教
Yaoming Qin:
首先问下,您打算用device tree吗?
如果是,请使用我们ezsdk 7.0中的uboot,如果不是, 请使用ezsdk 6.0中的uboot。
我们的uboot已经merge到mainline,但是用我们的sdk中的版本,稳定性更好。
liqin xiao:
回复 Yaoming Qin:
没用sdk7.0的uboot,如果是用这个稳定性好的话,那我就先移植sdk7.0的,谢谢
liqin xiao:
回复 Yaoming Qin:
你好,移植完了sdk7中的uboot2013.10之后,也仿照arch\arm\cpu\armv7\omap3\board.c把nandecc加入到我的移植的boot中,现在出现的问题是通过uboot的nandecc hw 命令然后nand write.i写uImage,然后再启动的时候也采用其方式读出uImage,kernel能够启动 ,如果文件系统是通过此uboot的nandecc sw写入的,就没法正常启动文件系统;如果文件系统是通过厂家提供的uboot的nandecc sw方式写入,则能够正常启动文件系统,厂家的nandecc 是调用ti81xx_nand_switch_ecc(),不知道怎样能够通过uboot正确的写入文件系统?
Jian Zhou:
回复 liqin xiao:
我用SDK06.00.00里的U-boot烧写的NAND UBIFS(SDK7之前的版本),里面确实没有了nand ecc的命令,但是烧写之后是可以正常起来的。
我会在论坛上把文档总结出来。
Yaoming Qin:
回复 liqin xiao:
如果您对device tree还不熟悉,建议使用ezsdk 6.0,毕竟这个版本的uboot资料毕竟多。
在我们的uboot中,已经把nandecc默认配置为了BCH8,nandecc命令在uboot origin中已经关闭了,可以找cmd中找找,打开看看。
Jian Zhou:
回复 Yaoming Qin:
我总结一篇制作NAND UBIFS的文档:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/59921.aspx
不知道是否对您有所帮助
liqin xiao:
回复 Jian Zhou:
看了您关于ubifs的总结,首先感谢您的支持,不过我的问题还是没有解决,同一个文件系统,如果用写入工具写入或者用以前的uboot tftpboot 82000000 ubi.img;nandecc sw ;nand write.i 82000000 780000 xxxxxxx ,此时的uboot是飞凌提供的2011.9版本的,文件系统写入可以正常启动 ,然后重新写入sdk7版本的uboot,内核和文件系统不动,系统照常能够正常运行,如果用sdk7版本的uboot重新写入文件系统则文件系统无法正常启动反复打印如下信息[ 1.882843] UBI: VID header offset: 2048 (aligned 2048)[ 1.889221] UBI: data offset: 4096[ 1.895080] uncorrectable error : [ 1.898773] uncorrectable error : [ 1.902709] uncorrectable error : [ 1.906555] uncorrectable error : [ 1.910217] UBI error: ubi_io_read: error -74 (ECC error) while reading 512 bytes from PEB 0:2048, read 512 bytes[ 1.921325] Backtrace: [ 1.923980] [<c0017d68>] (dump_backtrace+0x0/0x110) from [<c04c9e84>] (dump_stack+0x18/0x1c)[ 1.932983] r6:00000004 r5:df5a7000 r4:ffffffb6 r3:c06d2e48[ 1.939056] [<c04c9e6c>] (dump_stack+0x0/0x1c) from [<c02860f0>] (ubi_io_read+0x1c4/0x39c)[ 1.947875] [<c0285f2c>] (ubi_io_read+0x0/0x39c) from [<c0286820>] (ubi_io_read_vid_hdr+0x68/0x304)[ 1.957519] [<c02867b8>] (ubi_io_read_vid_hdr+0x0/0x304) from [<c028b870>] (ubi_scan+0x2fc/0x154c)[ 1.967071] [<c028b574>] (ubi_scan+0x0/0x154c) from [<c027fe5c>] (ubi_attach_mtd_dev+0x710/0xdcc)[ 1.976531] [<c027f74c>] (ubi_attach_mtd_dev+0x0/0xdcc) from [<c0692e18>] (ubi_init+0x210/0x300)[ 1.985900] [<c0692c08>] (ubi_init+0x0/0x300) from [<c000876c>] (do_one_initcall+0x3c/0x180)[ 1.994903] [<c0008730>] (do_one_initcall+0x0/0x180) from [<c0672884>] (kernel_init+0x9c/0x130)[ 2.004180] [<c06727e8>] (kernel_init+0x0/0x130) from [<c0040a3c>] (do_exit+0x0/0x67c)[ 2.012603] r5:c06727e8 r4:00000000[ 2.016448] UBI warning: process_eb: valid VID header but corrupted EC header at PEB 0[ 2.025604] uncorrectable error : [ 2.029327] uncorrectable error : [ 2.033203] uncorrectable error : [ 2.037078] uncorrectable error : [ 2.040740] UBI error: ubi_io_read: error -74 (ECC error) while reading 512 bytes from PEB 1:2048, read 512 ,感觉是文件系统没有正确找到
liqin xiao:
回复 Yaoming Qin:
您好,我有查看了源码,默认的是ECC_BCH8_CODE_HW,我也把uboot中nandecc打开了,可是无论怎么设置hw/sw开关,用sdk7中uboot写入的ubi文件系统还是不能正常启动,我觉得好您说的device tree没有什么关系吧?应该还是nandecc开关的问题,但是不知道问题出在哪儿了?是不是omap_nand_switch_ecc函数哪里有问题?
Jian Zhou:
回复 liqin xiao:
您好,我写的那个guide是用SDK06.00.00里面的U-boot验证的,不是SDK7的U-boot。
SDK06.00.00里面确实没有nandecc这个命令了,但是烧写进去也没发现什么问题。
我多问一下,您是在飞凌的板子上做的吗?
liqin xiao:
回复 Jian Zhou:
是在飞凌的板子上做的,和板子应该没有关系