【ARM】如何通过ARMDS的Map文件查看堆栈调用情况

1、 文档目标

通过ARMDS生成的Map文件,查看工程的堆栈使用情况。

2、 问题场景

在对于工程进行调试和测试的时候,工程师通常需要了解目前工程的堆栈使用情况,是否有函数或者变量占用了过多的堆栈空间。或者在对于一些错误进行排查的时候也需要查看堆栈的使用情况。除了可以查看callgraph文件外,也可以通过Map文件进行查看。

3、软硬件环境

1)、软件版本:ARM DS 2023.0

2)、电脑环境:Windows 11

3)、外设硬件:无

4、解决方法

1)、ARMDS要生成Map文件需要在Properties窗口中,C/C++ Build->Setting->Arm Linker 6->Additional Information配置中,勾选Generate image map(--map)。并且在最下面的Redirect diagnostics output to file(--list)后面的输入框中输入map文件的文件名(如图4-1)。

如果需要查看全局变量的堆栈使用情况,需要勾选上List stack usage of global symbols这个选项。

图4-1

2)、重新构建工程后,就可以在工程目录下面看到map文件的生成了。(如图4-2)

图4-2

3)、在Map文件的Image Stack Usage Information.部分就可以看全局变量的堆栈情况了(如图4-3)

复制代码
Maximum stack usage for Image.(Image部分的最大堆栈使用量)

Maximum Stack Usage for svcRtxKernelStart 0xe8 bytes.(svcRtxKernelStart的最大堆栈使用率0xe8字节)
Call chain for maximum stack usage(最大堆栈使用的调用链:):
svcRtxKernelStart => osRtxThreadStartup => svcRtxThreadNew => osRtxMemoryAlloc => MemBlockPtr(最大调用链)

........

Maximum Stack Usage for LED_Initialize 0x70 bytes.(LED_Initialize的最大堆栈使用率为0x70字节。)
Call chain for maximum stack usage(最大堆栈使用的调用链):
LED_Initialize => HAL_GPIO_Init(最大调用链)

图4-3


​ 版权声明:本文为亿道电子技术有限公司原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关推荐
踏着七彩祥云的小丑22 分钟前
嵌入式测试学习第35 天:蓝牙、WiFi嵌入式设备测试基础概念
单片机·嵌入式硬件·学习
CQU_JIAKE1 小时前
6.13【A】
单片机·嵌入式硬件
Mr..Jackey10 小时前
瑞佑 RUI Builder 图形化 UI 设计工具
arm开发·人工智能·单片机·ui·人机交互·ra8889·lcd控制芯片
西城微科方案开发13 小时前
多品类电子秤一体化PCBA整体方案
单片机·嵌入式硬件·电子秤
火花页.13 小时前
【正点原子ZYNQ领航者7020】PS端GPIO中断→按键控制LED实验
单片机·嵌入式硬件
ye1501277745513 小时前
4.2V升6V1A同步升压WT3213
单片机·嵌入式硬件·其他·硬件工程
嵌入式小站14 小时前
STM32 可移植教程 02:按键状态机,消抖、长按、释放一行也不用多写(实战篇)
chrome·vscode·stm32·单片机·嵌入式硬件
Szime15 小时前
AD9694 国产替代方案:四通道高速 ADC 在通信与雷达项目中的选型参考
单片机·嵌入式硬件·fpga开发
Zyed16 小时前
[STM32]Day15读写FLASH+读取ID
前端·stm32·性能优化
芯岭技术郦16 小时前
高性能的 32 位 ARM® Cortex®-M0+内核PY32F002A
单片机·嵌入式硬件