Zynq-7000 SoC,SMC - 具有ECC的NAND错过了单比特和一些双比特错误

描述

在ECC算法的编码中存在缺陷,并且它将单比特错误错过到字节0的比特0并且未能检测到一些双比特错误情况。

仅测试奇偶校验计算的奇数一半以检查通过/失败。在启用ECC的情况下从NAND读取数据时,在某些特定情况下,寄存器中指示的结果不正确。

影响: 重大的。有三个含义,请参阅“影响详细信息”段落。解决方法大大降低了错误丢失的可能性。
变通办法: 请参阅解决方案详细信息。
受影响的配置: 使用ECC和NAND的系统。
受影响的器件版本:
请参阅(Xilinx答复47916) - Zynq-7000 SoC芯片版本差异。


影响细节

有三个含义:

  1. 将无法检测到字节0的数据位0中的单位错误。此错误情况将导致数据已通过错误检查的误报。
  2. 从备用区读取的3个奇偶校验字节的后12位中的单比特错误将被错误地识别为已通过错误检查。该算法应将备用区中发生的错误标记为不可纠正的故障。
  3. 某些双位错误情况未正确识别为无法纠正的故障。

    双位错误检测(含义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的单个位错误。可以读取寄存器值以识别这种情况,并且可以用软件纠正位错误。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 14:52:05 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它