描述
在ECC算法的编码中存在缺陷,并且它将单比特错误错过到字节0的比特0并且未能检测到一些双比特错误情况。
仅测试奇偶校验计算的奇数一半以检查通过/失败。在启用ECC的情况下从NAND读取数据时,在某些特定情况下,寄存器中指示的结果不正确。
解
影响: | 重大的。有三个含义,请参阅“影响详细信息”段落。解决方法大大降低了错误丢失的可能性。 |
变通办法: | 请参阅解决方案详细信息。 |
受影响的配置: | 使用ECC和NAND的系统。 |
受影响的器件版本: |
请参阅(Xilinx答复47916) – Zynq-7000 SoC芯片版本差异。
|
影响细节
有三个含义:
- 将无法检测到字节0的数据位0中的单位错误。此错误情况将导致数据已通过错误检查的误报。
- 从备用区读取的3个奇偶校验字节的后12位中的单比特错误将被错误地识别为已通过错误检查。该算法应将备用区中发生的错误标记为不可纠正的故障。
- 某些双位错误情况未正确识别为无法纠正的故障。
双位错误检测(含义3):
- 总可能的8485140组合中的90个双位错误(0.001%)未正确识别为无法纠正的故障。这90个案例将导致数据通过错误检查的误报。
- 仅数据字节中的两个错误位:所有可能的位置(总共8386560)将被正确识别为不可纠正的故障。
- 仅奇偶校验字节中的两个错误位:276个可能错误中的66个未被识别为不可纠正的故障。
- 奇偶校验字节中的一位和数据字节中的一位:98304可能错误中的24位将不会被识别为无法纠正的故障。
解决方法细节
有一个软件解决了这个含义(1)。如果字节0的位0发生单位错误,则返回ECC寄存器值。
更复杂的软件解决方法是手动读取存储在备用区域中的ECC奇偶校验数据,然后使用软件独立于硬件机制计算ECC结果。
ecc_fail = 0和ecc_correct = 1.此结果唯一地识别字节0的位0的单个位错误。可以读取寄存器值以识别这种情况,并且可以用软件纠正位错误。
没有回复内容