This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1224:FEE - ECC 和 CRC 元数据

Guru**** 2382480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1420873/tms570ls1224-fee---ecc-and-crc-metadata

器件型号:TMS570LS1224

工具与软件:

您好!

在 FEE 配置头文件(ti_fee_cfg.h)内、有用于启用错误检测/校正以及校验和计算的定义。

#define TI_FEE_DEV_ERROR_DETECT                 STD_ON

#define TI_FEE_FLASH_ERROR_CORRECTION_ENABLE    STD_ON

#define TI_FEE_FLASH_CHECKSUM_ENABLE            STD_ON

FEE 驱动器将 ECC 和 CRC 数据存储在何处、它是如何处理这些数据的?

它对于 API 是否完全透明、或者需要考虑该元数据是否存在专用字节偏移(并视为保留字节)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Varban、

    ECC 将存储在以下突出显示部分:

    这个 ECC 不是在 FEE 驱动器中创建的、它是 TMS570LS12x 控制器本身支持的 ECC、它将被存储在上面突出显示的部分。 但是、如果 EEPROM 组或 EEPROM 组 ECC 段中的任何数据损坏、则会向我们显示 ESM 错误。

    和校验和将与数据一起存储在块标头中、如下图中突出显示的部分所示:

    同样、我不建议您启用该校验和、因为它是使用 Fletcher 校验和算法构建的、有一些局限性。 请参阅以下主题。

    (+) TMS5701224:当写入前相应的 FEE 内容是0x00和0xFF 的组合并且所需的写入数据也是0x00和0xFF 的组合时、FEE 写入操作失败-基于 Arm 的微控制器-内部论坛-基于 Arm 的微控制器-内部- TI E2E 支持论坛

    但是、您可以对整个 EEPROM 存储器使用 ECC 验证、因此可能不需要启用校验和。

    ——
    谢谢、此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Jagadish:

    让我们考虑一个示例场景:用户将一定数量的数据存储在 eEEPROM 中、存储在多个块中、一段时间后、块 N 中的3位会被损坏。

    我还不清楚的是:
    1) 1) ECC 控制器何时会检测损坏的位并尝试 修复  块 N 中的数据-通常会进行检查、或者仅在某个时候触发控制器(如读取命令)?

    2)如果 ECC 控制器无法修复 数据、您表示 ESM 将生成错误、但它是否会在某个位置(可能在状态寄存器中)指定哪个 块恰好 是包含损坏数据的块?

    谢谢!

    Varban

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Varban、

    1) ECC 控制器何时会检测到损坏的位并尝试 修复  块 N 中的数据-例行检查或仅在触发某种控制器时(如读取命令)?

    短路

    1.第一个明显是当你读取对应的位置时,我的意思是每当我们读取对应的损坏位置时, ECC 验证将失败,我们将得到不可纠正的 ECC 错误。

    2.除第一种情况外、CPU 还将推测取数据到 ATCM 存储器中的不同位置(闪存或者 RAM)。 只要这种推测取数据发生在损坏的存储器位置、那么它将根据错误类型再次立即创建可纠正或不可纠正的 ECC ESM 错误标志。

    2)如果 ECC 控制器无法修复 数据、您表示 ESM 将产生错误、但它是否会指定某个位置(可能在状态寄存器中)哪个 块究竟 是哪个块有损坏数据?

    是的、会提供。

    下面突出显示的寄存器将提供相应的错误地址。

    ——
    谢谢、此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Jagadish:

    感谢您提供信息丰富的回复。 最后一点:

    如果读取操作时出现可纠正的错误-闪存控制器是否会返回校正的数据?

    或者、程序员需要执行一些额外的操作来查询 ECC 逻辑来对其进行纠正?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Varban、

    [报价 userid="208956" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1420873/tms570ls1224-fee---ecc-and-crc-metadata/5453013 #5453013"]

    如果读取操作时出现可纠正的错误-闪存控制器是否会返回校正的数据?

    或者、程序员需要执行一些额外的操作来查询 ECC 逻辑来对其进行纠正?

    [报价]

    不需要执行任何其他操作、但务必启用 ECC。

    为主闪存(组0和组1)启用 ECC:

    设置 ARM ACTLR 寄存器(辅助控制寄存器)的位25将在 CPU 中启用用于主程序闪存(组0和组1)的 SECDED 逻辑。

    为 EEPROM 启用 ECC:

    用于 EEPROM 和 OTP 的 ECC 保护逻辑电路只在闪存包装程序内执行

    可以通过将0xA 写入到闪存模块错误校正控制寄存器1 (FEDACCTRL1)的 EDACEN 字段来启用到 EEPROM 仿真闪存组和 OTP 闪存组的 ECC 保护。

    有关更多详细信息、请参阅以下主题一次:

    (26) TMS570LS3137:在闪存包装程序中启用 ECC 与在 CPU 中启用 ECC -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    ——
    谢谢、此致、
    Jagadish。