介绍
堆栈的介绍在“IAR C/C++ Development Guide”中的“Storage of auto variables and parameters”章节中。本文介绍了如何获取应用程序的堆栈使用量即堆栈分析控制文件的语法格式。
示例
从下方的地址下载提供的示例工程:
描述
示例工程中包含main函数和test_func函数。要使用堆栈分析功能,下方的选项需要被勾选使能:
Project > Options > Linker > Advanced > Enable stack usage analysis
堆栈使用情况的分析结果保存在map文件中的“STACK USAGE”段,内容示例如下:
示例工程中还包含两个中断服务函数“SysTick_Handler”和“UsageFault_Handler”。同时还包含一个RTOS的任务“test_task”。这些函数并没有被任何函数直接调用,因此它们需在堆栈分析控制文件中 参考如下格式单独声明:
call graph root [task] : test_task;
call graph root [interrupt] : SysTick_Handler, UsageFault_Handler;
通过上述内容,堆栈分析功能理解上述函数是根节点。注意除了使用堆栈分析控制文件外,也可用直接在函数源码中通过#pragma call_graph_root 语句声明函数调用的根节点。
其他信息
详细介绍请参照"IAR C/C++ Development Guide"中的"Stack usage analysis"章节。
堆栈分析控制文件的具体语法请参照"The stack usage control file"章节。
也可以参考这篇相近的教程:https://www.iar.com/support/resources/articles/stack-usage-analysis-for-rx/
本文介绍的堆栈使用情况是理论分析得出的结果,要查看实际的堆栈使用情况,请执行以下操作:
1、通过Tools > Options > Stack > 'Enable graphical stack display and stack usage tracking'使能堆栈分析功能
2、进入调试界面后,通过View>Stack打开堆栈使用界面。