在 Win CE6 中使用带硬件 ecc 的 nandflash
Using nandflash with hardware ecc in Win CE6
目前,我正在将Win CE6设备适配到新的nand flash芯片。
新的nand对ecc要求更高(4位/512字节),支持片上ecc计算。
Microsoft 闪存文件系统写入扇区而不擦除它们。在 SectorInfo->wReserved2 中写入状态信息时会发生这种情况。这里,只有单个位被翻转为零。
问题是,使用片上 ecc,当文件系统写入 wReserved2 时,芯片也会计算 ecc。但它无法将此 ECC 正确写入设备,因为这需要擦除扇区,而文件系统不会这样做。
page的sparepart也有ecc-unprotected areas,每页15 bytes。我想出了将 SectorInfo 的重要 6 个字节存储两次(即扇区状态的 wReserved2 和逻辑扇区号的 dwReserved1)。
但是当这两个副本中的一个出现比特错误时,我仍然无法弄清楚哪个是正确的。
所以,我的问题:
关于如何使用未受保护的 15 个字节解决这个问题有什么想法吗?
闪存文件系统可以配置为支持'erase before write status information'
还有其他解决这个问题的方法吗?
在此先感谢您的帮助。
此致,Timm。
已解决。
存储 dwReserved1 两次(每次都带有奇偶校验位,因为它只在扇区初始化时写入一次)。
存储 wReserved2 三次(因为这里不能应用奇偶校验位 - 闪存文件系统写入 wReserved2 三次而不擦除扇区,即翻转单个位)。如果 2 个副本相同,则认为它们是正确的。
目前,我正在将Win CE6设备适配到新的nand flash芯片。 新的nand对ecc要求更高(4位/512字节),支持片上ecc计算。
Microsoft 闪存文件系统写入扇区而不擦除它们。在 SectorInfo->wReserved2 中写入状态信息时会发生这种情况。这里,只有单个位被翻转为零。
问题是,使用片上 ecc,当文件系统写入 wReserved2 时,芯片也会计算 ecc。但它无法将此 ECC 正确写入设备,因为这需要擦除扇区,而文件系统不会这样做。
page的sparepart也有ecc-unprotected areas,每页15 bytes。我想出了将 SectorInfo 的重要 6 个字节存储两次(即扇区状态的 wReserved2 和逻辑扇区号的 dwReserved1)。
但是当这两个副本中的一个出现比特错误时,我仍然无法弄清楚哪个是正确的。
所以,我的问题:
关于如何使用未受保护的 15 个字节解决这个问题有什么想法吗?
闪存文件系统可以配置为支持'erase before write status information'
还有其他解决这个问题的方法吗?
在此先感谢您的帮助。
此致,Timm。
已解决。 存储 dwReserved1 两次(每次都带有奇偶校验位,因为它只在扇区初始化时写入一次)。 存储 wReserved2 三次(因为这里不能应用奇偶校验位 - 闪存文件系统写入 wReserved2 三次而不擦除扇区,即翻转单个位)。如果 2 个副本相同,则认为它们是正确的。