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.

[参考译文] TM4C1237H6PM:堆栈溢出检测

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1106553/tm4c1237h6pm-stack-overflow-detection

器件型号:TM4C1237H6PM

您好!

在 F28377S 中、可以检测堆栈溢出(请参阅 www.ti.com/.../spra820.pdf)。 是否有类似的方法来检测 Tiva-C 处理器中的堆栈溢出? 如果是、相关寄存器的地址是什么?

谢谢、

Dhammika

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

    您好!

     您可以做的一件事是使用 MPU 来捕获堆栈溢出。 SRAM 存储器映射到0x20000000。 请参见下面的。 如果为 SRAM 设置 MPU 区域、则当 CPU 尝试访问定义的 MPU 区域之外的空间时、可能会检测到溢出。 当堆栈溢出发生时、CPU 地址将小于0x20000000 (例如 1FFFFFFF)。 这将成为 MPU 故障、您可以捕捉到它。  

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

    您好、Charles、  

    这是一个聪明的想法。  

    谢谢、

    Dhammika

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

    您好、Charles、  

    这种方法的一个问题是它将使系统崩溃、尤其是我们在监控模式下运行处理器。  

    谢谢、

    Dhammika

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

    您好!

     我不熟悉 C28x 仿真分析块、因此无法对此进行真正的评论。 TM4C129使用 Arm Cortex-M4F 内核、它当然具有也可针对观察点进行设置的调试单元。 我认为这些寄存器不能由应用直接访问、因为调试器通常通过 JTAG 和 DAP 使用不同的总线(APB 总线)来访问它们。 我不确定 C28x 是否具有内置的 MPU。 我描述的方法将把您的代码陷阱在异常处理程序中、您的代码可以对此采取纠正措施。  

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

    您好、Charles、

    F28377x 没有 MPU。 即使在该处理器中、调试单元的位置也不会公开可用、除非在我最初发布的链接中提供的文档中。  

    谢谢、

    Dhammika