打印
[技术问答]

keil5报错:Error: L6220E: Execution region RW_m_data size (410900 bytes) exceeds limit (410880 bytes)

[复制链接]
1955|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
macpherson|  楼主 | 2024-7-17 00:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Region, TE, TI, DA, EE, ce

keil5 报错现象如下:

网上找了很多资料都是修改keil的options中target选项里内存大小,修改后虽然可以编译成功,但是板子依然起不来,原因是这种修改相当于修改了芯片的内存大小相当于换了大规格的芯片,而板子的芯片规格已经固定。此种方法不可取。


正确方法如下:

内存超出规划大小,需要修改内存配置文件。打开工程的options选项,找到linker选项中的Scatter file.

超出了20个字节,我们需要扩大 m_data_size见下图,增大0x100即可。修改后保存重新编译工程。


修改内存文件后编译结果:


使用特权

评论回复
沙发
nqty| | 2024-9-24 17:37 | 只看该作者
这个错误信息表明,Keil 5在编译和链接你的项目时,发现RW_m_data执行区域的大小超过了限制。具体来说,RW_m_data区域的大小是410900字节,而限制是410880字节

使用特权

评论回复
板凳
wamed| | 2024-9-24 18:46 | 只看该作者
你的项目中可能定义了大量的全局变量或静态变量,导致数据段(RW_m_data)的大小超过了限制

使用特权

评论回复
地板
twinkhahale| | 2024-9-24 20:00 | 只看该作者
可能是内存配置文件(如.sct文件)中对RW_m_data区域的定义有误,导致实际使用的内存超过了限制

使用特权

评论回复
5
tiakon| | 2024-9-24 21:07 | 只看该作者
某些编译器优化选项可能会导致数据段的大小增加。

使用特权

评论回复
6
一切D都好| | 2024-9-24 22:15 | 只看该作者
检查你的代码,看看是否有大量的全局变量或静态变量。尽量减少这些变量的使用,或者将它们改为局部变量。

使用特权

评论回复
7
canfeil| | 2024-9-24 23:39 | 只看该作者
检查你的内存配置文件(如.sct文件),确保RW_m_data区域的定义是正确的,并且没有超出限制。

使用特权

评论回复
8
eleg34ance| | 2024-9-25 09:10 | 只看该作者
尝试调整编译器的优化选项,看看是否能减少数据段的大小

使用特权

评论回复
9
suiziq| | 2024-9-25 10:28 | 只看该作者
可以尝试使用分散加载文件(scatter file)来更精细地控制内存布局

使用特权

评论回复
10
miltk| | 2024-9-25 11:05 | 只看该作者
Error: L6220E: Execution region RW_m_data size (410900 bytes) exceeds limit (410880 bytes)错误通常是由于数据段过大导致的

使用特权

评论回复
11
gra22ce| | 2024-9-25 14:17 | 只看该作者
一般可以通过检查全局变量、优化内存配置、调整编译器优化选项或使用分散加载文件,可以解决这个问题。

使用特权

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

本版积分规则

46

主题

1625

帖子

1

粉丝