[STM32F1] MDK链接时的内存溢出的问题

[复制链接]
1491|6
 楼主| huzhiyang 发表于 2014-12-7 13:39 | 显示全部楼层 |阅读模式
最近在移植LWIP到ucos上去,遇到链接的问题,现象如下:
1.png
得到的链接结果如下:
2.jpg

然后我做了如下修改:
3.jpg
得到的链接结果如下:
4.jpg
还真不知道这是怎么回事,请高手指教!

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\CJGJURWUES5__4UX_VZMPZ3.png

airwill 发表于 2014-12-7 14:33 | 显示全部楼层
这一般是是程序内部的结构体和数组定义的缓冲的空间。

编译器会同时生成 map 文件, 从中去找是哪个模块里的哪个定义占用了太大的空间,设法精简一下看看
 楼主| huzhiyang 发表于 2014-12-7 18:12 | 显示全部楼层
airwill 发表于 2014-12-7 14:33
这一般是是程序内部的结构体和数组定义的缓冲的空间。

编译器会同时生成 map 文件, 从中去找是哪个模块里 ...

你这个方法很不错,我用软件对比了两次生成的map文件,得到了一下数据:
1.png
2.jpg
3.jpg
4.jpg
由此分析,要想LWIP在系统上跑,确实需要很大的RAM啊
sedatefire 发表于 2014-12-7 19:28 | 显示全部楼层
你可以找到对应的数组,滑动窗口大小等,这些用户定制的config,一般放在一个专门的.h文件里面。
另外,MDK的M3的栈默认分配是有bug的。
1.只分配1K(512)  2.自动紧挨着系统的全局变量,
上复杂的系统非常容易溢出。
要自定义自己的scat文件,加大栈,且分配到ram的尾巴去,因为栈SP是“--”生长的

您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

190

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部