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.

[参考译文] AM13E23019:DriverLib 中的 ECC 地址计算错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1644834/am13e23019-wrong-ecc-address-calculation-in-driverlib

部件号: AM13E23019

当使用 SDK 版本 01.00.00.EA2(26.00.00.06 似乎存在相同的问题)时、我们在尝试擦除扇区时遇到意外故障、收到 DL_FLASH_COMMAND_FAIL_BLANK_VERIFY 错误。 我们认为、这是由 DriverLib 的 dl_flashctl 模块中函数 DL_FlashCTL_blankVerify 中计算错误的 ECC 地址导致的。

函数 DL_FlashCTL_blankVerify 通过将给定闪存字的地址除以 16 来计算给定闪存字的 ECC 地址。 根据我们的观察、这会查找 ECC 是否存在错误的闪存字。

根据 AM13E230x TRM(2026 年 3 月修订版)、例如、“ECC 代码地址返回所访问的整个 128 位闪存字的 16 位 ECC 值。“(10.1.2.3.1 闪存映射)、闪存字大小为 16 字节(128 位)、相应的 ECC 为 2 字节(16 位)、因此我们预计该比例因子为 16 (128)/2 (16)。

对于我们的测试、我们应用了此比例因子作为权变措施、并确认了应用的正确行为。

您能否确认我们对 SDK 中这个错误的假设、如果是、请告知我们预计何时会修复?

BR、
Oleksandr

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

    尊敬的 Oleksandr:

    您能否提供您在擦除该扇区时遵循的步骤? 是否可以共享源代码进行分析?

    谢谢

    Aswin

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

    您好、Aswin!

    您能否提供您在删除扇区时遵循的步骤?

    除了调用 DL_Flash_eraseSector 函数之外、代码中没有特殊步骤。

    是否可以共享源代码进行分析?

    我没有准备好的项目可以共享此问题、因为它取决于 要擦除的闪存页面之前的条件。

    但 如果需要、您可以很容易地尝试重现它。 条件为:

    • 闪存测试应用程序
    • 在代码中、尝试 使用应用程序之后的页面地址调用 DL_Flash_eraseSector 函数
    • 由于 DL_FlashCTL_blankVerify 会检查错误地址处的 ECC、因此它会从应用程序的页面中找到非空 ECC 代码、然后使用失败  

    BR、
    Oleksandr

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

    我们能够从我们这边重现这个问题。 我们将在下一个版本中优先解决此问题。 同时、您可以使用更新后的功能。

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

    谢谢你,阿德瓦尔特!

    是否有下一个 SDK 版本的发布日期估计?

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

    你好 ,

    我们计划在 6 月末发布;我可以返回确切的日期。

    谢谢

    Aswin