MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )解决方案

来源:互联网 发布:电脑部分软件乱码 编辑:程序博客网 时间:2024/05/19 23:57

最近敲代码遇上点问题,MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )

工程文件是别人高度自定义的,整个情况并不是很了解,在解决问题的时候走了不少弯路。

网上有不少相关的解决方法,但大多数都是利用MDK进行优化,并没有找到溢出的原因,也没有提出根本的解决方法。

下面记录一下我的解决方案

第一步,使用默认分散加载文件

第二步,修改ROM和RAM的大小

这里直接把ROM和RAM的size改大,直到链接成功(简单粗暴的方法是直接在后面添0)

这里有些信息需要注意一下

Program Size: Code=52590 RO-data=14354 RW-data=892 ZI-data=2104188 

这里说明了总共需要多大的ROM和RAM,相关计算可以参考http://blog.csdn.net/yuleicqut/article/details/50933441这篇博文,至于是不是正确我也不敢作评论,现在我只是接触了点皮毛,但是可以作为参考。

这里的ZI-data已经超了2M,明显超过了STM32的RAM大小

现在就有个疑问了,哪里出问题了呢?申请内存的时候写错了,还是没释放,或是其他原因呢。

如果在代码里找这个问题,估计是比较难的,尤其是代码量比较大的时候。这里我们可以查看MDK的输出map文件。

这就非常明显,在guiconf.c这个文件里有一个aMemory占了2M的内存。

找到问题,做出相应的修改

一切正常



阅读全文
0 0
原创粉丝点击