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.

[参考译文] F29H850TU:ERAD 不会'不会检测栈溢出

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1578231/f29h850tu-erad-doesn-t-detect-stack-overflow

器件型号:F29H850TU


我有定制项目、需要检测栈溢出。

我正在使用 ERAD 模块检测栈溢出、并检查“ERAD ex6_stack_overflow_detect.syscfg“示例、它工作正常、但无法与我的自定义项目一起使用。

ERAD 配置

引用地址与我的自定义工程的栈结束地址相同。

即调试信息:

image.png
最后调用递归函数“functionCallCount “变量、等于 647900、然后 MCU 卡在执行中失败、显示此错误。
image.png

在达到 647900 之前检查 CPU 寄存器后、结果为  

image.png

因此应该会发生栈溢出、此地址也更接近错误消息中显示的地址。

您推荐什么?

 

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

    尊敬的 Mahmoud:

    您是否能够验证现有示例是否按预期工作? 如“TRM “一章中所述、用于检查栈溢出的配置如下。

    您能否在自定义工程中验证用于堆栈限定(检测)的 ERAD 配置是否相同?

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

    您好、Ryan、

    是、采用 TI 的示例“ERAD ex6_STACK_OVERFLOING_DETECT_syscfg“。

    在我的自定义项目中、我遵循与 TRM 17.2.2 相同的堆栈限定。

    我在调试问题时也进行了检查、但发现配置写不正确。



    红色框显示了不同配置之间的不匹配情况。

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

    尊敬的 Mahmoud:

    您使用的是哪个版本的 F29x SDK? 我无法使用最新的 F29x SDK 版本复制此问题。

    您的工程是否导入了最新的 F29x driverlib?

    此致、

    Ryan Ma

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

    SDK 版本:1.1.0.00、我们未使用最新版本。
    是的、 最新的 F29x driverlib。

    我可以将正确的值写入寄存器、但为什么会发生这种情况?

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

    尊敬的 Mahmoud:  

    ERAD 可以由调试程序拥有、也可以由应用程序拥有。 在调试和设置硬件断点时、ERAD EBC 会用来设置这些断点。 通常我看到 CCS 使用第一个 EBC 实例、这就是在示例中我使用后面的 EBC 实例的原因。  

    您可以尝试切换到最新的 SDK 版本吗?  

    由于某种原因、ERAD _configBusComp () 没有为您的设置设置正确的位。

    如果您进入 ERAD configBusComp (),会发生什么情况? 您是否收到任何断言失败?

    此致、

    Ryan Ma