【ARM】DS如何查看工程的堆栈使用情况

1、 文档目标

通过ARMDS的设置项生成对应的文件,便于查看工程各个函数的堆栈的占用情况。

2、 问题场景

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

3、软硬件环境

1)、软件版本:ARMDS 2023.0

2)、电脑环境:Windows 11

3)、外设硬件:无

4、解决方法

1)、可以通过对应工程的Properties窗口中,C/C++ Build->Setting->Arm Linker 6->Additional Information配置中,有一个Generate call graph(--callgraph)的选项(如图4-1)。这个选项可以生成记录工程函数的调用关系的文件。

图4-1

2)、设置好后,重新对于工程进行构建后就可以在工程管理窗口中下看生成的TXT文件。(如图4-2)

图4-2

3)、在生成的文件中,可以看到在工程中使用的LED_Initialize函数的调用情况和堆栈情况(如图4-3)。

复制代码
	LED_Initialize (Thumb(使用的指令集), 160 bytes(函数的大小), Stack size 48 bytes(堆栈的大小), LED_769I_EVAL.o(.text.LED_Initialize)(函数所在的源文件))

		[Stack]

			Max Depth = 112(最大堆栈深度)			Call Chain = LED_Initialize => HAL_GPIO_Init(函数的调用关系)


		[Calls](该函数调用了什么函数)

			 * HAL_GPIO_WritePin
			 * HAL_GPIO_Init

		[Called By](哪个函数调用了这个函数)

			 * main

图4-3

4)、Additional Information配置中还有两个选项(如图4-4)。

(1)、Callgraph file(--callgraph_file):指定生成的文件的文件名,不设置的情况下,默认使用工程名字。

(2)、Callgraph format (--callgraph_output):控制生成文件的类型,这里有HTML和TEXT两种选项。根据需求选择即可。

图4-4


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

相关推荐
糖糖单片机设计4 小时前
基于 STM32 的植物生长环境监控系统
stm32·单片机·嵌入式硬件
创界工坊工作室5 小时前
56-基于STC89C52的智能声控饮水机设计
stm32·单片机·嵌入式硬件·51单片机·proteus
LCG米5 小时前
STM32 DMA 多通道链式传输实测:请求仲裁顺序错位根因、半满中断乒乓与高速并发搬运落地
stm32·单片机·嵌入式·1024程序员节
hkj88085 小时前
stm32 ADC DMA 循环模式配合双缓冲分块(Ping-Pong)
stm32·单片机·嵌入式硬件
Sakura_j_h_10 小时前
STM32F103 定时器的三种用法:PWM 输出、输入捕获与编码器接口
stm32·嵌入式·输入捕获·定时器·pwm·编码器·1024程序员节
Lxx_Zw10 小时前
机器周期与共地:时钟基准和电压参考基准
stm32·单片机·嵌入式硬件
我叫洋洋12 小时前
用 Qoder(AI 编程助手)把 Cadence 16.6 从零配到能画板
人工智能·单片机·嵌入式硬件·电路·1024程序员节
Zw-awa12 小时前
LED 灯珠与限流电阻
stm32
深圳老胡13 小时前
STM32 开发中 Trae 内置模型怎么选:Seed、MiniMax、GLM、DeepSeek、Kimi、Qwen 全对比
笔记·stm32·单片机·嵌入式硬件·代码规范·1024程序员节
西安同步电子15 小时前
时统卡驱动踩坑:Windows 和 Linux 下时间同步的底层差异
linux·stm32·单片机