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.

[参考译文] TM4C1294NCPDT:CCS 优化导致 M4 CPU 崩溃、如何调试?

Guru**** 2610605 points
Other Parts Discussed in Thread: TM4C1294NCPDT, SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1164471/tm4c1294ncpdt-ccs-optimization-causes-a-crash-on-m4-cpu-how-to-debug

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件: SYSBIOS

我使用以下代码: Tiva TM4C1294NCPDT CPU、 CCS 6.1.2使用、 TIRTOS 2.16.0.08、 编译器5.2.7和  XDC 3.31.1333

当我执行调试编译 时、我有一个工程可以正常运行且稳定、但当我编译和运行发布编译时、我会遇到崩溃。  我仔细查看  了版本和调试版本之间的差异、发现除了优化之外、一切都是相同的。  

我得到的崩溃是: "ti.sysbios.KNL.Task: line 373: e_stackOverflow: task 0x2001cd88 stack overflow."

看到此错误后、我验证了版本和调试构建之间的堆栈大小相同。   我验证的设置是:Project->Properties->Arm Linker->Basic Options->Set C system stack size (项目->属性-> Arm 链接器->基本选项->设置 C 系统堆栈大小)。  此字段在版本 和调试版本之间是相同的。

如果我将发布版本更改为无优化、它运行正常。  如果我将调试编译更改为"2 Global Optimization (2全局优化)"、我也会遇到崩溃、因此优化 "2 Global Optimization  (2全局优化)"会导致 ti.sysbios.KNL.Task:第373行:e_stackOverflow: Task 0x2001cd88 stack overflow crash (e_stackOverflow:任务0x2001cd88栈溢出崩溃)。

我如何确定根本原因并解决此问题?  我假设我希望版本 构建能够运行 2个全局优化。

谢谢、

道格

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

    您好 Doug、

     您可能非常接近堆栈限制 、不同的优化级别可能会以某种方式将其推到限制之上。 您可以使用 ROV 来检查所使用的堆栈大小、并针对 opt=2相应地增大堆栈大小。   

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

    谢谢、就是这样。

    道格