使用MDK观察单片机堆栈使用情况

单片机的堆栈空间分配在.s文件中,如下:

Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00000200

一般不使用malloc/free分配内存时,不涉及堆操作。

而使用多层函数嵌套,或者进出中断,则需要栈空间。

但是MDK并不支持具体的栈空间使用率查看,查找MDK用户手册,发现可以以以下方法评估栈空间使用情况:

(1)link中加入--info stack

生产的.map文件中会出现以下内容:

Image Stack Usage Information.

Maximum stack usage for Image.

Maximum Stack Usage for __rt_entry_main 0x300 bytes.

此处的数值可以作为参考,为了保险起见,设置值应该大于此值

(2)持续跟踪SP指针地址,观察是否出现了SP越界,超过了最大的栈空间

(3)更改RAM对应栈空间数值,然后全速运行,并测试完所有分支后,观察被更改的默认数值有多少

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值