打印
[开发工具]

Keil编译出现“ No space in execution regions with .ANY sel...

[复制链接]
4126|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yiyigirl2014|  楼主 | 2018-5-23 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

情景:

在编译Keil工程时,compile编译能够通过,但在linking过程中,出现一大串”Error: L6406W: No space in execution regions with .ANY selector match Section“的错误。


分析:

这个出现的原因是因为芯片RAM空间不足,无法执行程序。通常RAM的空间会比较小,ROM空间相对较大。


解决办法:

两个思路,一个是扩大RAM,二是减少需要存在RAM里的内容:

1. 尝试修改”Target Options“中右侧RAM的Size,但这个要先查看芯片文档,找到文档中描述的RAM大小,把Size调成最大值。

但是我的这个工程还是不行,看来是预存的数据量太大了。


2. 如果第一种方法还是不行,那就只能尝试把一些数据类的变量定义为静态,这样就可以利用ROM的存储空间了。找到工程中存储数据的部分,发现是大量的float数组。这种情况会占用大量的空间,所以要在float声明的前面加一个”const“,转换为静态变量。

这样我的就可以通过了,成功生成了hex文件。


3. 如果第二种方法还是不行,那就只能修改代码的数据结构了。


沙发
yiyigirl2014|  楼主 | 2018-5-23 17:04 | 只看该作者
是不是有人遇到啊,刚才看有朋友遇到,发个贴,跟大家交流。

使用特权

评论回复
板凳
mmuuss586| | 2018-5-23 18:11 | 只看该作者
是只有这几种方法

使用特权

评论回复
地板
yiyigirl2014|  楼主 | 2018-5-23 18:28 | 只看该作者
多谢版主围观。

使用特权

评论回复
5
gejigeji521| | 2018-5-24 22:47 | 只看该作者
好主意,还是要少用全局变量。或者能公用的就共用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

213

主题

3545

帖子

10

粉丝