Embedded 在Win CE6中使用带硬件ecc的nandflash

Embedded 在Win CE6中使用带硬件ecc的nandflash,embedded,windows-ce,windows-embedded-compact,Embedded,Windows Ce,Windows Embedded Compact,目前,我正在将Win CE6设备改装为新的nand闪存芯片。 新的nand具有更高的ecc要求(4位/512字节),并支持片上ecc计算 Microsoft flash文件系统在不删除扇区的情况下写入扇区。在SectorInfo->wReserved2中写入其状态信息时会发生这种情况。在这里,只有单个位被翻转为零 问题是,对于片上ecc,当文件系统写入wReserved2时,芯片也会计算ecc。但它无法将此ECC正确写入设备,因为这需要擦除扇区,而文件系统则不这样做 在页面的sparepart中

目前,我正在将Win CE6设备改装为新的nand闪存芯片。 新的nand具有更高的ecc要求(4位/512字节),并支持片上ecc计算

Microsoft flash文件系统在不删除扇区的情况下写入扇区。在SectorInfo->wReserved2中写入其状态信息时会发生这种情况。在这里,只有单个位被翻转为零

问题是,对于片上ecc,当文件系统写入wReserved2时,芯片也会计算ecc。但它无法将此ECC正确写入设备,因为这需要擦除扇区,而文件系统则不这样做

在页面的sparepart中还有ecc未受保护的区域,每页15字节。我决定将SectorInfo的关键6字节存储两次(即wReserved2表示扇区状态,dwReserved1表示逻辑扇区号)

但当这两个副本中的一个出现位错误时,我仍然无法确定哪一个是正确的

所以,我的问题是:

  • 关于如何使用不受保护的15字节来解决这个问题,有什么想法吗

  • 能否将闪存文件系统配置为支持“写入前擦除状态信息”

  • 还有其他办法解决这个问题吗

提前感谢您的帮助

你好,蒂姆。

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