0

目前,我正在将 Win CE6 设备适配到新的 nand flash 芯片上。新的nand对ecc要求更高(4位/512字节),支持片上ecc计算。

Microsoft 闪存文件系统写入扇区而不擦除它们。在 SectorInfo->wReserved2 中写入状态信息时会发生这种情况。在这里,只有单个位被翻转为零。

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

页的备用部分也有ecc-unprotected区,每页15个字节。我想出将重要的 6 个字节的 SectorInfo 存储两次(即 wReserved2 用于扇区状态,dwReserved1 是逻辑扇区号)。

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

所以,我的问题:

  • 关于如何使用未受保护的 15 个字节解决此问题的任何想法?

  • 闪存文件系统是否可以配置为支持“写状态信息前擦除”

  • 任何其他方法来解决这个问题?

提前感谢您的帮助。

问候,蒂姆。

4

1 回答 1

0

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

于 2015-03-09T15:35:10.943 回答