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.

[参考译文] TMS570LS3137:启用内核闪存 ECC

Guru**** 2465890 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/663995/tms570ls3137-enabling-the-core-flash-ecc

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

我正在尝试在我的应用中启用闪存 ECC 保护、但是初始化早期对 coreEnableFlashECC 的调用会导致我的应用在运行时稍后生成未定义的指令异常。 我找到了 Hercules 安全演示(ATCM_Correctable_Error)中的测试代码、该代码使用特定 OTP 存储器位置测试闪存 ECC、我感到惊讶的是、名为_coreDisableFlashECC_()的函数的末尾- 使用闪存 ECC 的应用是否应该始终启用内核闪存 ECC (我假设我永远不会调用此_coreDisableFlashECC)? 换句话说、这个 FlashECC 测试函数不应该使 FlashECC 被启用?

我无法确定我的应用程序发生故障的位置、因为它似乎正在执行无效的指令(如果我没有调用 _coreEnableFlashECC、那么一切都很好)。 是否有启用 FlashECC 的示例代码、检查其工作情况并使其保持启用状态?

请注意、我在项目设置中启用了自动 ECC 生成和对齐程序段到64位区域。

谢谢、

Jim

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

    演示软件通过在 OTP 中读取0xF00803F4来生成 ECC 错误。 为了检查 ECC 功能、在 OTP 中故意放置了单个位和双位错误。 在演示代码中、闪存 ECC 只被启用用于在 ATCM 中进行测试可纠正错误()。

    在 HALCoGen 生成的 sys_selftest.c 中、fmcECCcheck (void)用于通过读取故意的 ECC 错误来测试 ECC、并且始终启用 flashECC。 您的代码可能存在 ECC 错误、启用闪存 ECC 不是预取错误的根本原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 QJ;我发现了问题。
    Jim