你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32在KEIL下的工程,编译出来的MAP文件,关于RAM内存的分析

[复制链接]
iamchritian 提问时间:2015-12-24 10:08 /
阅读主题, 点击返回1楼
收藏 1 评论16 发布时间:2015-12-24 10:08
16个回答
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当然是[0x2000be28 ,0x2000be28 + 16384]



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的内存分配机制”?

这个还真没用过
iamchritian 回答时间:2015-12-25 17:09: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
好深奥,看不懂,先标记,回头再来学习!
12
关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版