TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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:需要有关 CheckFlashECC 的更多信息

Guru**** 2048030 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/750501/tms570ls3137-need-more-information-on-checkflashecc

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

大家好、

我们使用 CCS8.0并尝试使用闪存(F021) API 调用而不是 CCS8.0加载映像。
在这种情况下、映像加载成功、加载后、我们尝试重置 CPU (仅通过加载符号来使用 CCS8.0)、并且可以看到在 FlashcheckECC 期间正在调用双位异常处理程序。

当我们尝试使用 CCS8.0刷写映像时、不会发生这种情况。 在将映像加载到闪存后、CPU 复位之前、我们是否需要执行任何闪存 API 调用?

您能解释一下这种行为的原因吗?

此致、
M.Sreenenasan。

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

    闪存诊断必须从 SRAM 运行。 请在 SRAM 中定义一个代码段、并从这个代码段中执行闪存自检。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    我提到过、当我们使用 CCS 刷写映像时、它可以正常工作、但在不使用 CCS 刷写映像时则不同。
    在这两种情况下、代码都将加载到闪存中并从闪存执行 checkFlashECC。 您能不能查看一下这个问题吗?

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

    在使用 F021 API 执行闪存写入操作后、CPU 复位后、我们会看到双位 ECC 异常。 当我们在 F021API 之后进行上电复位时、情况并非如此。
    此外、当我们使用 CCS 刷写映像时、我们不会看到任何问题。

    您能不能深入了解一下、让我们知道在使用 F021 API 调用对闪存进行编程后、我们需要做些什么?

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

    使用 F021闪存 API 对代码进行编程时、是否同时计算 ECC 并对其进行编程? 您可以使用 fapi_issueProgrammingCommand(.)中的选项。 功能。 此外、请一次对16字节数据进行编程。 如果一次写入1个字节、则可以对错误的 ECC 进行编程。

    fapi_issueProgrammingCommand ((uint32_t *) dst、
    (uint8_t *) src、
    (uint32_t) 16、
    0、
    0、
    Fapi_AutoEccGeneration);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我们一次写入8个字节。 如果我们一次使用8字节的数据编程闪存,您是否会发现任何问题?

    此致、
    M.Sreenivasan。

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

    您好、Wang、

    我们将使用上述相同的命令、每次8个字节。 如果您需要更多信息、请告诉我。
    一旦闪存编程完成、我们能够在 CPU 复位(来自 CCS8.0)后随机地看到问题(来自闪存的双位 ECC 异常)。

    此致、
    M.Sreenivasan。

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

    我想知道错误是否是由推测取指令到具有无效 ECC 的位置引起的。 您能否捕获 ECC 错误所在的地址? 当您使用 F021 API 对闪存进行编程时、如果您上次写入的数据数量小于8字节、如何处理数据? 我建议附加0xFF。 您还可以尝试使用链接器 cmd 来生成 ECC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    回答如下:

    问: 您能否捕获 ECC 错误所在的地址?

    答: 一旦使用闪存 API 加载新映像并且使用 CCS 复位处理器、闪存 ECC 错误就会出现在"checkFlashECC ()"函数中、该函数是 HALCOGEN 生成的 sys_startup.c 文件的一部分。

    问: 如果上次写入的数据数量小于8字节、如何处理数据?  我建议附加0xFF。 您还可以尝试使用链接器 cmd 来生成 ECC。

    答: 是的、如果要编程的字节数小于8字节、我们将附加0xFF。

    谢谢、

    Kalyan

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

    对此进行了任何更新? 请分享您的观察结果。

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

    checkFlashECC()用于 ECC 诊断(模式7)。 如果针对同一闪存位置调用此函数两次:

    /*从镜像内存映射读取闪存位置*/
    flashread = flashBadECC1;

    只有第一个调用生成 ECC 错误、第二个调用不会生成 ECC 错误。