我使用了ubi文件系统和mtd子系统在NAND闪存的顶部工作。一切都很顺利。
但现在我发现了以下错误:
UBI错误: ubi_io_read: error -74当从PEB 2701:8192读取516096字节时,读取516096字节
end_request: I/O错误,dev mtdblock5,扇区49160
我刚才提到这些错误的原因是什么?如何从这些错误中恢复?
发布于 2013-10-24 07:58:05
两者都显示与NAND上的损坏或坏块相关的I/O错误,请尝试使用另一个闪存并使用它。你也可以尝试擦除闪光灯,再试一次。
感谢和问候,
阿洛克·塔克尔
发布于 2013-12-06 16:49:00
错误-74是EBADMSG。看着https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/mtd/ubi/ubi.h#n94我们可以看到,
每个UBI块都是一个闪存擦除块(典型的128 K),这些块有两个UBI头,它们是一个页面大小(典型的2k)。读取此页时,出现了一个错误。它不能通过纠错代码或ECC恢复。
如果您在UbiF之上使用UBI,则应该对这些块进行测试。这涉及擦除和重写擦除块.如果读了很多遍,闪光灯就会过时。比特可以翻转并要求重写数据。它可能会发现,UBI头只是需要重新编程和闪光灯将是好的。
如果不是,所有NAND驱动程序都有一个坏块表。在数据确实无法恢复的情况下,擦除块将在此表中被标记为“坏”,并且Ubi不应该再使用此扇区。
如果错误仍然存在,那么这是一个可能的问题。然而,它的一些预期与正常使用NAND闪光灯。NAND闪光灯的典型周期是1,000到10,000。经过一定量的磨损,闪光有可能完全无法使用。这取决于闪存类型、文件系统(和磨损平整)以及系统上的应用程序。
错误配置的闪存驱动程序可能导致这些错误。不正确的闪存ECC代码可能会导致预成熟的错误(flash为4位ECC提供空间,但驱动程序仅实现1位)。这也可能是由一个糟糕的应用程序造成的,该应用程序每隔1ms-100 1ms就会不断地对磁盘进行fsync();即使所有其他组件都是最优的,这种行为也会在几年内耗尽闪存。Ubi应该有一些最好的磨损平整可用。如果你不断地重新闪现一个图像,你可以折扣的this磨损水平,并造成这种问题。
https://stackoverflow.com/questions/19559468
复制相似问题