[技术问答] keil5报错:Error: L6220E: Execution region RW_m_data size (410900 bytes) exceeds limit (410880 bytes)

[复制链接]
 楼主| 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区域的定义有误,导致实际使用的内存超过了限制
tiakon 发表于 2024-9-24 21:07 | 显示全部楼层
某些编译器优化选项可能会导致数据段的大小增加。
一切D都好 发表于 2024-9-24 22:15 | 显示全部楼层
检查你的代码,看看是否有大量的全局变量或静态变量。尽量减少这些变量的使用,或者将它们改为局部变量。
canfeil 发表于 2024-9-24 23:39 | 显示全部楼层
检查你的内存配置文件(如.sct文件),确保RW_m_data区域的定义是正确的,并且没有超出限制。
eleg34ance 发表于 2024-9-25 09:10 | 显示全部楼层
尝试调整编译器的优化选项,看看是否能减少数据段的大小
suiziq 发表于 2024-9-25 10:28 | 显示全部楼层
可以尝试使用分散加载文件(scatter file)来更精细地控制内存布局
miltk 发表于 2024-9-25 11:05 | 显示全部楼层
Error: L6220E: Execution region RW_m_data size (410900 bytes) exceeds limit (410880 bytes)错误通常是由于数据段过大导致的
gra22ce 发表于 2024-9-25 14:17 | 显示全部楼层
一般可以通过检查全局变量、优化内存配置、调整编译器优化选项或使用分散加载文件,可以解决这个问题。

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

本版积分规则

57

主题

1897

帖子

1

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

57

主题

1897

帖子

1

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