在 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)。

但是当这两个副本中的一个出现比特错误时,我仍然无法弄清楚哪个是正确的。

所以,我的问题:

在此先感谢您的帮助。

此致,Timm。

已解决。 存储 dwReserved1 两次(每次都带有奇偶校验位,因为它只在扇区初始化时写入一次)。 存储 wReserved2 三次(因为这里不能应用奇偶校验位 - 闪存文件系统写入 wReserved2 三次而不擦除扇区,即翻转单个位)。如果 2 个副本相同,则认为它们是正确的。