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**** 2553360 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1283939/tms570ls3137-flash-ecc-no-behaving-as-expected

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

您好!

我使用的是定制的 TMS570LS3137板。

我启用了闪存 ECC、并正在尝试对其进行测试。 为此、我使用了链接器的--ecc:data_error 选项。 我还使链接器生成 ECC 位。

在 CCS 中、我在禁用"自动 ECC 生成"的情况下对闪存进行了编程。

我的第一个测试涉及一位错误。 这是第一次,似乎是工作:

错误在内存窗口中可见、当到达该元件时、错误被 纠正、并且 FCOR_ERR_ADD 和 FCOR_ERR_POS 是正确的。

您能否确认一下它应该是如何工作的?

我重复了测试、这次不是一样的行为。 在到达该行之前纠正了错误。 有时 FCOR_ERR_ADD 被正确置位、有时则未被置位。

我首先认为内存浏览器会计算它本身(在计算机上),但不是这种情况。

我还认为,看内存浏览器也是从闪存中读取它,而不是解释为什么它纠正比预期的更快。

我已尝试关闭"Disassembly"和"Memory"窗口、但它仍然无法在正确的时间纠正错误。

我尝试了多次更改错误位置、仍然是相同的行为。 我还尝试禁用管道、但失败。

我启用了分析并设置了阈值、但没有正常运行。

我还注意到、复位后、纠正后的错误重新出现。

我想知道以下几点:

  1. 是否有解释我所看到内容的高速缓存?
  2. 是否有保留先前错误的"表格"、以便更快地纠正这些错误?
  3. 当使用调试器执行系统复位时、FCOR_ERR_ADD 寄存器是否被复位?
  4. 我是否必须在闪存包装程序中启用分析?
  5. 当 ECC 检测到错误时、闪存是否已校正/写入? 看起来很奇怪、但读取 TRM、这就是我理解的。

此外、我希望启用相关的中断(通过 ESM)、以防我将错误标志复位。 我无法这样做。

我调用了以下命令(默认为 Halcogen):

_coreEnableEventBusExport_();

  flashWREG->FEDACCTRL1 = 0x000A060AU

  _coreEnableFlashEcc_();

我还启用了 ESM 低级中断。

始终不会进入中断。

您能帮助我了解我缺少什么吗?

提前感谢

劳伦特

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

    您好,Laurent

    我们的专家将在当地度假,并将在周三回来,请等待他们的反馈,直到那时,谢谢。

    此致、

    拉尔夫·雅各比

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

    您好,Laurent

    很抱歉我的回应延迟,在印度我们得到了几个假期。

    现在、我已开始处理您的问题、并将尽快提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好,Laurent

    内存窗口中显示错误,当到达该元素时,错误被纠正 ,并且 FCOR_ERR_ADD 和 FCOR_ERR_POS 是正确的。

    是的、正确、将自动纠正 single-bit 错误。

    Unknown 说:
    我重复了一次测试,这次不是同样的行为。 在到达该行之前纠正了错误。 有时 FCOR_ERR_ADD 已正确设置,有时则不正确。

    我怀疑这种行为是、CPU 本身会生成一些随机推测取数据。 如果它找到任何具有无效 ECC 的位置、则会设置相应的 ESM 标志和寄存器。

    请参阅下面的段落:

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    无需担心延迟。

    您是对的、我没有注意到该部分。

    是否即使在只需要32位时也由于128位提取而引发推测取指令?

    但是、那么、我如何测试 ESM 功能呢? 到目前为止、我未能从闪存 ECC 获得任何 ESM 事件。 启动后中断不会立即启用、因此如果 CPU 进行推测取数据、我就无法对其进行测试。

    此致、

    劳伦特

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

    您好,Laurent

    处理器不能禁用推测取数据。

    如果您希望测试 ESM 标志、那么您可以使用闪存诊断寄存器。

    要了解如何生成相应的错误、请参阅 SDL (安全诊断库)代码。

    例如、 以下是为 FMC 不可纠正的错误生成 ESM 的代码:

    --
    谢谢。此致、
    Jagadish。

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

    您好 Jagadish

    感谢您的回复、我很快就会尝试。

    您仍能否澄清以下几点:

    • 我是否必须在闪存包装程序中启用分析?
    • 当 ECC 检测到错误时、是否校正了闪存? 我的意思是、如果我得到了纠错并为电路板供电、那么错误是再次显示还是已消失?

    此致、

    劳伦特

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

    尊敬的 Laurent:

    是否必须在闪存包装程序中启用评测?

    无需启用性能分析、请参阅诊断代码。

    当 ECC 检测到错误时闪存是否已纠正? 我的意思是,如果我得到了一个错误修正,然后我电源重置主板,错误是再次出现还是消失了?

    是的、错误再次出现。 在电源复位后 ESM 标志将不会被复位。

    --

    谢谢。此致、
    Jagadish。