AR# 47520

Zynq-7000 SoC、SMC — NAND ECC 状态寄存器可能会错误地报告一个时钟周期的故障

描述

软件可能会触发一个中止,在 ecc_status 位变低后,该中止可能会导致针对一个周期错误地显示 ecc_last_status 值。

在软件检测到非零值时,它必须重新读取 ecc_last_status。

解决方案

影响:非常小,必要时,重新读取 ECC 状态。
解决方法:如果软件从 ecc_status 寄存器的 ecc_last_status 位读取非零值,就必须再次读取 ecc_status 寄存器中的值,以确保返回正确的值。
受影响的配置: 使用支持 ECC 功能 NAND 的系统。
受影响的器件修订版本:全部,无计划修复。查看 (Xilinx Answer 47916) - Zynq-7000 SoC 芯片版本差异


ecc_status 寄存器包含一个 2 位 ecc_last_status 值,以报告之前 ECC 操作的成败。ecc_last_status 值只有在同一寄存器中的 ecc_status 位变低时才有效,表明 ECC 为空闲。在 ecc_last_status 中报告的所有故障模式都是由于软件错误导致的,即软件出错:

  1. ecc_last_status = 01 的实例:软件试图在一个超出范围或没有与 512 字节边界正确对齐的地址启动 ECC 操作。
  2. ecc_last_status = 10 的实例:软件为 ECC 操作提供了数量不正确的数据。
  3. ecc_last_status = 11 的实例:软件编程控制器,使其不在页面上跳跃,以将 ECC 代码写入内存,然后无法提供整个页面的数据。

如果驱动程序犯了一个上述错误,中止代码就会正确报告。但如果它随后执行了一个成功的序列,在 ecc_status 位降低后,ecc_last_status 值将错误地显示 1 个周期的同一个中止。

影响详情

在正常运行过程中,NAND 软件不会导致任何由 ecc_last_status 位报告的中止代码。只有错误的失败(从不错误的传递)可以被报告为该问题导致的结果,所以读回数据时,对数据完整性或 ECC 操作没有任何影响。

影响将来自于软件如何针对中止代码做出响应。但必须实施适当的错误处理,因为本勘误表只有在真正的中止发生并由软件处理之后才会出现。

解决方法详情

如果软件从 ecc_status 寄存器的 ecc_last_status 位读取非零值,就必须再次读取 ecc_status 寄存器中的值,以确保返回正确的值。

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 SoC 器件:芯片修订差异 N/A N/A
AR# 47520
日期 06/13/2018
状态 Active
Type 设计咨询
器件