您好!
我们目前在一款产品上所用的芯片是freescale的i.MX515芯片,现在升级了一款新的NandFlash芯片,出现了kernel读写文件系统失败的问题。
目前老的NandFlash芯片型号是三星的K9F1G08U0D,新的NandFlash芯片型号是K9F1G08U0E。这两款芯片的大小以及页、块的数量都是一样的,芯片厂家说可以不更改任何东西直接替换。
我们替换之后发现大部分新的芯片都不能用。具体问题是这样的:芯片在u-boot中通过tftp烧写uboot、内核和ubi镜像文件系统,烧写完毕之后第一次启动是正常的,关机或者复位再重新启动,
进入内核之后,内核读取NandFlash的文件系统读取失败。内核报如下错误:
Creating 5 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x000000000000-0x000000100000 : "bootloader"
0x000000100000-0x000000600000 : "nand.kernel"
0x000000600000-0x000007c00000 : "nand.rootfs"
0x000007c00000-0x000007e00000 : "kernel.**"
0x000007e00000-0x000008000000 : "boot.**"
UBI: attaching mtd2 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
UnCorrectable RS-ECC Error
UBI error: ubi_io_read: error -74 while reading 64 bytes from PEB 610:0, read 64 bytes
UnCorrectable RS-ECC Error
UBI error: ubi_io_read: error -74 while reading 64 bytes from PEB 611:0, read 64 bytes
UBI error: ubi_read_volume_table: the layout volume was not found
UBI error: ubi_init: cannot attach mtd2
经过我们的查找和验证,目前问题定位在内核往NandFlash写文件系统的时候发生错误,导致第二次启动的时候内核读取文件系统出错。我们在第二次启动的时候进入uboot命令模式,把NandFlash中文件系统的一部分读入内存,再查看内存数据,发现该文件系统跟好的文件系统是不一样的,也就是说内核回写的文件系统有问题。另外,在系统启动起来之后往NandFlash写u-boot和内核都是正常的。目前我们不确定这个写错误是由于什么引起的,是ecc呢还是时序或是其他?希望能帮助我们解决该问题。谢谢!
祝
生活愉快!工作顺利 |