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.

[参考译文] TMS570LC4357:由于在闪存中生成 ECC 错误、无法读取实际写入值

Guru**** 2484615 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/722614/tms570lc4357-could-not-read-the-actual-written-value-due-to-generating-ecc-error-in-flash

器件型号:TMS570LC4357

您好 TI、

我正在使用值(EBEBEBEB)刷写闪存区域的某些区域。 但在闪存中也会生成 ECC 错误。

现在、我需要使用实际值读取该区域。 但我不能。 因为刷写后(例如、值为 E3EBE9)。

请帮帮我。

谢谢!!

BR、

Vigneshwar。

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

    对于 TMS570LC43x、ECC 会自动启用、且不能禁用。 擦除闪存时、闪存 ECC 区域的存储器也会被擦除:数据的 ECC 值(0xFFFFFFFF)为0xFF、这是不正确的。

    有多少字节编程到您的闪存中? 如何从 CCS 存储器浏览器或使用闪存 API 读回数据?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang、您好!

    感谢您的回答。

    是的。 我知道 ECC 是自动启用的、不能禁用。 我将使用256字节对 pflash 进行编程。 我将使用闪存 API 读回数据。

    这是我使用的闪存 API、fapi_issueProgrammingCommand (((uint32_t *) uAddr、(uint8_t *) aubData、uwPageSizeByte、NULL_PTR、 空、Fapi_DataOnly)。

    我修改了 API、fapi_issueProgrammingCommand (((uint32_t *) uAddr、(uint8_t *) aubData、uwPageSizeByte、NULL_PTR、 空、Fapi_AutoEccGeneration)。

    现在它工作正常。

    感谢您的支持!!

    此致、

    Vigneshwar。

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

    如果我擦除一个被擦除的值为(0xFFFFFFFF)的特定存储器位置。
    请注意、我使用的是 Fapi_issue19 CommandWithAddress (Fapi_EraseSector、Secture_address);我没有像使用 Fapi_issueProgramming Command ((UINT32_t *) uAddr、(uint8_t *)编程一样在参数中选择模式(如 AutoEccGeneration)、并使用 Fapi_issueProgramming Command (UINT32_t *) Uint8) UIntr Command (Uint8字节、UIntnNULL)、Uptr U Fapi_AutoEccGeneration);

    现在、如果我读取已擦除的值、则使用 ECC 对其进行读取。 当我与已擦除的值进行比较时、它会导致异常。
    通常、当我们擦除和读取时、这毫无意义。 但在本例中、我执行此检查、没有任何解决方案。
    那么、如何解决呢?

    谢谢!!

    此致、
    Vigneshwar