目前,我正在将 Win CE6 设备适配到新的 nand flash 芯片上。新的nand对ecc要求更高(4位/512字节),支持片上ecc计算。
Microsoft 闪存文件系统写入扇区而不擦除它们。在 SectorInfo->wReserved2 中写入状态信息时会发生这种情况。在这里,只有单个位被翻转为零。
问题是,对于片上 ecc,当文件系统写入 wReserved2 时,芯片也会计算 ecc。但它无法将此 ECC 正确写入设备,因为这需要擦除扇区,而文件系统不会这样做。
页的备用部分也有ecc-unprotected区,每页15个字节。我想出将重要的 6 个字节的 SectorInfo 存储两次(即 wReserved2 用于扇区状态,dwReserved1 是逻辑扇区号)。
但是当这两个副本中的一个发生位错误时,我仍然无法确定哪个是正确的。
所以,我的问题:
关于如何使用未受保护的 15 个字节解决此问题的任何想法?
闪存文件系统是否可以配置为支持“写状态信息前擦除”
任何其他方法来解决这个问题?
提前感谢您的帮助。
问候,蒂姆。