打印
[开发工具]

STM32堆栈溢出问题请教

[复制链接]
7851|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eagle109|  楼主 | 2008-11-11 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的堆栈定义如下:
-D_CSTACK_SIZE=400
-D_HEAP_SIZE=200

-Z(DATA)CSTACK+_CSTACK_SIZE=20002200-200025FF
-Z(DATA)HEAP+_HEAP_SIZE=20002600-200027FF

上午我调程序时Debug Log中报stack溢出警报,查看stack,如下图
https://bbs.21ic.com/upfiles/img/200811/200811111605491.jpg

我的问题是:
1、为什么stack中显示的地址是从0x2000 237C到0x2000 25FF,而不是0x2000 2200到0x2000 25FF?
2、为什么stack中分配的临时变量不连续,压栈出栈操作的不是连续的地址吗?


请大家指教,更希望有人能给我补一下STM32堆栈的基础
沙发
eagle109|  楼主 | 2008-11-11 17:44 | 只看该作者

自己回答第一个问题

如图,显示的是当前stack指针所指向的位置,所以没有显示所有stack空间

但是,请问如何显示全部stack的数据?

当然通过查看memory窗口是可以看到,有办法通过stack看吗?

使用特权

评论回复
板凳
Swd21ic| | 2008-11-11 21:42 | 只看该作者

re

arm堆栈是从高地址往地址的.
0x2000 237C就目前堆栈指向的位置.
0x2000 25FF是堆顶

距离你的堆底还有 ( 0x2000237C - 0x20002200 ) = 17C 个字节可以使用.
应该不会发生堆栈溢出~

通过堆栈插件只能这样看..

使用特权

评论回复
地板
eagle109|  楼主 | 2008-11-12 08:15 | 只看该作者

对,0x2000 237C就目前堆栈指向的位置

对,0x2000 237C就目前堆栈指向的位置,距离溢出还有0x17c,但是上面的红色条已经满了,至少代表堆栈已经满了。

而且我观测了memroy发现堆栈的确溢出,已经覆盖了我用@绝对定址的变量

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

57

帖子

1

粉丝