【更多软件使用问题请点击亿道电子官方网站】
1、 问题场景
客户在使用STM32F1的项目编译时遇到下列报错Error: L6220E: Load region LR_IROM1 size(65552 bytes)
图2-1
2、软硬件环境
1)、软件版本:MDK5.38
2)、电脑环境:Windows 11
3)、外设硬件:无
4、解决方法
1)原因1:分配给此负载区域的数据过多。一个加载区域可以由多个执行区域组成,这些执行区域包含一个或多个 RO、RW、XO 或 ZI 数据部分
解决方案1.1:目标设备参考手册中的内存映射详细信息,查看是否有可能增加为此负载区域定义的最大允许大小,例如,特定内部闪存或 RAM 内存区域中仍有剩余空间。如果是,请在 uVision 的"Options for Target - Target"”中修改如下图4-1所示或您自己的散点文件中增加为此加载区域定义的大小。
图4-1
解决方案1.2:检查 uVision 自动生成的链接器分散文件或您自己的分散文件,看看是否可以将此特定加载区域的某些执行区域的分配更改为另一个加载区域
解决方案1.3:提高代码的优化等级,将Arm 编译器优化级别更改为 -O3、-Oz 或 -Omin,以便 Arm 编译器生成较小的代码大小,在某些情况下可能会解决此链接器错误。
2)原因2:如果 .在此负载区域中使用/分配任何部分,具体取决于算法用于填充此类 .任何部分,链接器生成的内容(如填充物和贴面)都可能过度填充该区域,从而导致此链接器错误 L6220E。
解决方案 2.1:使用--any_contingencylinker 选项,以防止链接器将区域填充到最大值。
解决方案 2.2:使用执行区域属性ANY_SIZE max_size指定 Armlink 可以用未分配的部分填充的区域中的最大大小。
3)原因3:如果某些数据故意放置在特定地址/位置(靠近此特定加载区域的末尾),则在某些情况下可能会导致此链接器错误 L6220E,本文对此进行了介绍ARMLINK:L6220E ...超出限制,如果将数据放在闪存末尾
注:原因2与原因3暂未遇到,均为原因1所导致的错误,检查内存分配大小即可解决,提高优化等级也可行。
以上参考原厂说明链接:错误:L6220E:加载区域 xxx 大小(xxx 字节)超出限制(xxx 字节) (arm.com)
————————————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
关于亿道电子
亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
二十多年来,先后与ARM、Altium、Ansys、QT、Green Hills、Minitab、EPLAN、QA Systems、OpenText、SureSoft、Visu-IT、PLS、Ashling、MSC Software、Autodesk、Source Insight、IncrediBuild、Lauterbach、Adobe、TestPlant等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。
公众号:亿道电子
Bilibili:亿道电子
视频号:亿道电子
抖 音:亿道电子