主题中讨论的其他器件: HALCOGEN、 TMS570LC4357
我正在使用 TMS570LS1224微控制器、我已经将 C 系统堆栈大小设置为0x2000、但堆栈使用情况报告中仍然存在堆栈溢出、如下所示、
请指导我了解通过在 CCS 工程设置中配置 C 系统堆栈大小是否足够、或者我是否对 sys_core.asm 文件进行了一些更改以修改堆栈。
此外、我如何知道为 ISR 分配了多少堆栈以及如何更新 ISR 堆栈。
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.
我正在使用 TMS570LS1224微控制器、我已经将 C 系统堆栈大小设置为0x2000、但堆栈使用情况报告中仍然存在堆栈溢出、如下所示、
请指导我了解通过在 CCS 工程设置中配置 C 系统堆栈大小是否足够、或者我是否对 sys_core.asm 文件进行了一些更改以修改堆栈。
此外、我如何知道为 ISR 分配了多少堆栈以及如何更新 ISR 堆栈。
在 HALCoGen 中、RAM 选项卡中有"Stack Configuration"面板、可以在其中设置堆栈大小:
如果更改了上述 HALCoGen 对话框中的 Stack Length、则当 HALCoGen 重新生成代码时、sys_core.asm 中的栈大小将更新。
上述示例来自 TMS570LC4357的 HALCoGen 项目,但也应适用于 TMS570LS1224 。
[引用 userid="531509" URL"~/support/microriors/arm-based microriors-group/arm -based microriors/f/arm based microor-forum-forume/1129824/tms570ls1224-how_to_set-stack-size-for-tms570ls1224-in-ccs-or-halcogen ISR 以及如何分配栈/栈来更新 ISR。]FIQ 堆栈长度或 IRQ 堆栈长度设置为 ISR 分配的堆栈数量、具体取决于 ISR 是配置为 FIQ 还是 IRQ。
目前、在我最近的 Halcogen 项目中、我已将堆栈大小设置为0x2400、ISR IRQ 长度设置为0x1000
正如前面所述、我的 sys_core.asm 和 sys_link.cmd 文件会被更新。
我的(HalTmrIsr) ISR 被定义为 IRQ、
当尝试查看堆栈使用情况时、HalTmrIsr 堆栈使用情况为704字节、这少于定义的 IRQ 堆栈长度、但仍然以黄色显示、这意味着会溢出。
您能解释一下我为什么会遇到此错误吗?
我找到了线程 CCS/TMS320F280049:CCS 的堆栈使用如何判断是否存在颜色条(黄色、绿色等) 、这表明它们是信息显示方式中的一个错误。
https://sir.ext.ti.com/jira/browse/EXT_EP-9641 被提出为 CCS 9.3.0中发现的错误、并使用 CCS 12.0检查该错误仍然存在。
建议现在忽略颜色指示器、并手动检查最坏情况下的堆栈使用量是否小于分配的堆栈的大小。
明白了...我已经手动检查了最坏情况下的堆栈使用量小于分配的堆栈使用量的大小。
但是、我在堆栈上进行调试的根本原因是我的软件中遇到了一些问题、这让我思考是否遇到了堆栈溢出问题、但澄清了 CCS 显示 的用于堆栈使用的彩色代码中的错误。
在我的软件中、我有嵌套函数调用、例如 F1调用 F2、F2调用 F3、等等、 它还传递了一些参数、但在步骤调试时、观察到从 F1到 F2正确的值被传递、相同的值从 F2传递到 F3、但在将值从 F3传递到 F4时、我观察到一些垃圾值被传递、 可能的原因是什么以及如何解决。