完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
上面红色标记 STACK 的起始地址为 0x2000be28
在这里有几个疑问: 1、栈空间是向低字节地址方向生长的,我定义的栈空间为16K Bytes,那么栈空间从 0x2000be28 地址向下生长,怎么会跟全局变量的地址write_data_buf 0x2000ba28 的地址重合呢? 2、还有个疑问,就是堆空间在起始地址在哪里体现?我定义的堆空间大小为512字节? |
|
相关推荐
17个回答
|
|
看这个能了解程序各段的分布情况,栈的具体大小、起始位置要参考启动文件、分散加载文件及你的启动方式(boot0、boot1)。
|
|
|
|
|
|
|
|
请问一下,栈指针的地址,堆指针的在RAM中的具体位置,编译过后,应该是确定的吧? 那么在内存地址 0x2000 0000--0x2001 FFFF中的哪个地址? |
|
|
|
不是太懂 我的理解: >write_data_buf 0x2000ba28 这是全局变量write_data_buf的指针位置,大小为1024字节 >STACK 0x2000be28 这是栈指针的位置,大小为16384字节 |
|
|
|
本帖最后由 Mandelbrot_Set 于 2015-12-24 12:26 编辑 STACK是段地址吧(其实这个section里只有栈...) |
|
|
|
本帖最后由 Mandelbrot_Set 于 2015-12-24 12:25 编辑
AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size -------------------------------------------------- In a source file, the AREA directive marks the start of a section. This directive names the section and sets its attributes. The attributes are placed after the name, separated by commas.--------------------------------------------------- 这儿Stack_Mem STACK 地址会相同 |
|
|
|
栈址里存放的是栈空间的具体指针而已,压栈操作不是把栈的数据都压入栈内。
|
|
|
|
胡德胜快回答 发表于 2018-10-26 14:37 4、全局变量在编译后,就已经确实,在RAM空间的全局区。 |
|
|
|
startup.s的作做法大概是
定义1个section,叫STACK. 里面有一个数组(一块ram),叫Stack_Mem[SIZE]. 栈的设置要代码实现. map文件并不知道它是栈(STACK只是名字而已,跟代码对应) |
|
|
|
STACK 0x2000be28 Section 16384 startup_stm32f2xx.o
告诉你的是 startup_stm32f2xx.o( startup_stm32f2xx.s) 实现了一个段(section) 名字叫 STACK ,地址 0x2000be28 ,大小16384 这个section当然是[0x2000be28 ,0x2000be28 + 16384] |
|
|
|
谢谢你的耐心解释,现在彻底弄懂了,因为我用了LWIP的内存分配机制,所有STM32的堆被隐藏了,重新用C标准库,就能看到堆和栈的地址了 |
|
|
|
能否解释下“LWIP的内存分配机制”? |
|
|
|
|
|
|
|
|
|
|
|
LWIP的内存,在内部做了内存池和内存堆两种内存的分配方式,在opt.h中有一个宏定义,如果MEM_LIBC_MALLOC定义为0和1,有不同的分配方式。 一、MEM_LIBC_MALLOC == 0 这种情况LWIP的内存池和内存堆都是在STM32的RAM空间的全局区,取的一块内存,LWIP协议栈给出了特殊的处理,以便接收和发送数据 二、MEM_LIBC_MALLOC == 1 这种情况下 1、LWIP的内存池是在STM32的全局区 2、LWIP的内存堆是在STM32的堆中 |
|
|
|
好深奥,看不懂,先标记,回头再来学习!
|
|
|
|
正点原子有历程可以看看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2136 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1970 浏览 3 评论
4566 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2116 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2629 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:49 , Processed in 0.763174 second(s), Total 73, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号