STM32在KEIL下的工程堆空间在起始地址在哪里体现?

2019-07-14 16:35发布

上面红 {MOD}标记 STACK 的起始地址为 0x2000be28
在这里有几个疑问:
1、栈空间是向低字节地址方向生长的,我定义的栈空间为16K Bytes,那么栈空间从 0x2000be28 地址向下生长,怎么会跟全局变量的地址write_data_buf 0x2000ba28 的地址重合呢?
2、还有个疑问,就是堆空间在起始地址在哪里体现?我定义的堆空间大小为512字节?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
胡德胜快回答
1楼-- · 2019-07-14 23:02
0x2000be28
0x2000ba28
只是长得像而已
天微JSB
2楼-- · 2019-07-14 23:34
7762642422d 发表于 2018-10-26 13:26
看这个能了解程序各段的分布情况,栈的具体大小、起始位置要参考启动文件、分散加载文件及你的启动方式(boot0、boot1)。

请问一下,栈指针的地址,堆指针的在RAM中的具体位置,编译过后,应该是确定的吧?
那么在内存地址 0x2000 0000--0x2001 FFFF中的哪个地址?
天微JSB
3楼-- · 2019-07-15 00:45
胡德胜快回答 发表于 2018-10-26 13:43
0x2000be28
0x2000ba28
只是长得像而已

不是太懂
我的理解:
>write_data_buf 0x2000ba28
这是全局变量write_data_buf的指针位置,大小为1024字节
>STACK 0x2000be28
这是栈指针的位置,大小为16384字节
胡德胜快回答
4楼-- · 2019-07-15 01:48
天微JSB 发表于 2018-10-26 14:09
不是太懂
我的理解:
>write_data_buf 0x2000ba28

本帖最后由 Mandelbrot_Set 于 2015-12-24 12:26 编辑

STACK是段地址吧(其实这个section里只有栈...)
胡德胜快回答
5楼-- · 2019-07-15 03:12
 精彩回答 2  元偷偷看……
peternie
6楼-- · 2019-07-15 05:36
栈址里存放的是栈空间的具体指针而已,压栈操作不是把栈的数据都压入栈内。

一周热门 更多>