Mandelbrot_Set 发表于 2015-12-24 14:04:26

STACK 0x2000be28 Section 16384 startup_stm32f2xx.o
告诉你的是 startup_stm32f2xx.o( startup_stm32f2xx.s)
实现了一个段(section) 名字叫 STACK ,地址 0x2000be28 ,大小16384

这个section当然是



iamchritian 发表于 2015-12-25 09:33:02

Mandelbrot_Set 发表于 2015-12-24 14:00
startup.s的作做法大概是
定义1个section,叫STACK.
里面有一个数组(一块ram),叫Stack_Mem.


谢谢你的耐心解释,现在彻底弄懂了,因为我用了LWIP的内存分配机制,所有STM32的堆被隐藏了,重新用C标准库,就能看到堆和栈的地址了

moyanming2013 发表于 2015-12-25 10:57:11

iamchritian 发表于 2015-12-25 09:33
谢谢你的耐心解释,现在彻底弄懂了,因为我用了LWIP的内存分配机制,所有STM32的堆被隐藏了,重新用C标准 ...

能否解释下“LWIP的内存分配机制”?

role_2099 发表于 2015-12-25 11:24:04

本帖最后由 role_2099 于 2015-12-25 11:26 编辑

我是进来学习的

Mandelbrot_Set 发表于 2015-12-25 12:00:21

moyanming2013 发表于 2015-12-25 10:57
能否解释下“LWIP的内存分配机制”?

这个还真没用过:L

iamchritian 发表于 2015-12-25 17:09:00

Mandelbrot_Set 发表于 2015-12-25 12:00
这个还真没用过

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的堆中

wofei1314 发表于 2015-12-26 12:12:32

好深奥,看不懂,先标记,回头再来学习!
页: 1 [2]
查看完整版本: STM32在KEIL下的工程,编译出来的MAP文件,关于RAM内存的分析