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.

[参考译文] TMS320F2800132:闪存 ECC 错误测试期间的中断

Guru**** 2439710 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1378736/tms320f2800132-interupt-during-flash-ecc-error-test

器件型号:TMS320F2800132

工具与软件:

尊敬的支持团队:

我尝试在基于通用电机控制示例的电机控制软件中集成闪存 ECC 错误测试(启动时和运行期间)。

闪存 ECC 错误测试的源代码来自 f280013x\examples\sdl_ex_flash_ecc_test\sdl_ex_flash_ecc_test.c

在 ECC 错误测试期间主电机控制 ISR 触发时存在一个问题、在这种情况下、电机控制 ISR 异常长并且结束 WDOG 复位。

我在电机控制 ISR 中看不到任何可以循环的代码、但到目前为止、我不明白在这种情况下电机控制 ISR 为什么这么长。

在进行 ECC 错误测试之前、将代码更改为等待电机控制 ISR 结束可以解决该问题、但我想知道这是否为正常行为?

是否有部分 ECC 错误测试代码需要防止其他中断?

此致。

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

    你(们)好  

    该主题的专家目前正在度假。 请预计在6月26日后回复。

    谢谢你

    侯赛因·阿米尔

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

    好的、

    我今天再做一些测试。

    首先,我可能需要提供更多信息:

    电机控制 ISR 从 RAM 执行

    测试在调试模式下执行。

    根据我做的测试、似乎有几个问题。

    第一个是、有时 会连续触发来自 flast ECC 测试示例的 nmiISR。 这就是电机控制 ISR 异常长的原因。

    我暂时通过在 ECC 测试模式激活时禁用中断来修复此问题(我读取某个地方、发现在测试模式期间无法从 RAM 执行代码、您可以确认吗)?

    现在第二个问题是,它似乎我有时有一个 ITRAP,只是在 重新启用缓存和预取后,这似乎也取决于代码我置 juste 后重新启用它。

    我希望这可以有所帮助。

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

    在所有测试期间、我最终禁用中断、以使其正常工作。

    因此、在示例中、我将 DINT 添加到 Flash_disableCache (FLASH0CTRL_base)之前;将 EINT 添加到 Flash_enablePrefetch (FLASH0CTRL_base)之后;

    我想了解发生了什么、以及是否有一些可能的解决方法。

    此致。

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

    尊敬的 Manu:

    请我为您查看此主题。 我可以在下周早些时候查看并回复您。

    谢谢。此致、
    Vamsi

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

    感谢您的观看。

    关于以下问题:

    现在第二个问题是、我似乎有时在 重新启用缓存和预取后有一个 ITRAP、这似乎也取决于我在重新启用后重置的代码。

    我在代码中的不同位置看到了问题、只要在问题发生之前添加一些代码、问题就会消失。  根据本常见问题解答:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951658/faq-faq-for-flash-ecc-usage-in-c2000-devices---includes-ecc-test-mode-linker-ecc-options

    我看到 cmd 文件(来自通用电机控制示例)的.text 段为 align (4)而不是 align (8)、更改为 align (8)让我删除了添加的不必要的代码。  

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

    尊敬的 Manu:

    您是否说在更改为 ALIGN (8)后问题已解决?

    谢谢。此致、
    Vamsi

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

    这两个问题似乎都已解决、

    我只会在激活 ECC 测试模式时保持禁用 ISR、以防止在激活测试模式期间从闪存执行代码。 您可以确认它是强制性的吗?

    在过去的几天里 、问题并不是一直存在的、有时在添加调试代码时会消除问题、因此我无法100%确定它是否会完全消除。 我可以在几天后确认。

    此致。   

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

    尊敬的 Manu:

    当然、您可以根据需要处理新问题(请打开新帖子以方便跟踪)。

    我不认为必须防止在该器件上的测试模式下闪存执行。  我会请我们的闪存应用程序所有者为您确认。

    谢谢。此致、

    Vamsi

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

    Manu36、您好!

    我们目前的建议是:

    • 确保在执行诊断测试时禁用缓冲区/高速缓存机制。
    • 从闪存执行代码时不要写入闪存寄存器。

    我没有看到在 ECC 测试模式期间闪存执行的明确禁令、但是如果我在编写代码、我会避免这种情况。

    此致、
    Ibukun