目前,我正在适应一个新的nand闪存芯片的Win CE6设备。新的nand具有较高的ecc要求(4位/ 512字节),支持片上ecc计算。
Microsoft闪存文件系统写入扇区而不删除扇区。当将它的状态信息写入SectorInfo->wReserved2 2中时,就会发生这种情况。在这里,只有一个位被翻转到零。
问题是,在片上ecc中,当文件系统写入wReserved2时,芯片也会计算ecc.但是它不能正确地将此ECC写入设备,因为这将要求删除扇区,而文件系统则不这样做。
也有ecc-不受保护的区域在页面的其余部分,每页15字节。我计算出两次存储SectorInfo的6个重要字节(即扇区状态的wReserved2和逻辑扇区号的dwReserved1 )。
但是当这两个拷贝中的一个出现位错误时,我仍然不知道哪一个是正确的。
所以,我的问题是:
提前感谢您的帮助。
你好,提姆。
发布于 2015-03-09 15:35:10
这个问题解决了。存储两次dwReserved1 (每一次使用奇偶校验位,因为在扇区初始化时只写一次)。存储三次wReserved2 (因为奇偶校验位不能在这里应用-闪存文件系统写入wReserved2三次而不擦除扇区,即翻转单个比特)。如果两个副本是相同的,他们被假定是正确的。
https://stackoverflow.com/questions/28882838
复制相似问题