两份CPP编译链接器分散加载文件的差异及链接报错咨询
两份分散加载文件的差异分析
核心差异
两份文件的唯一实质性区别在于APP加载区的大小限制:
- 初始文件中APP加载区大小为
0x000B0000(换算为十进制是720896字节,即704KB) - 修改后的文件中APP加载区大小被调整为
0x00030000(换算为十进制是196608字节,即192KB)
其余所有配置(包括APP加载区起始地址0x90309000、APPCFG/APP0/APP1的代码段分配规则、APP_RAM的地址和大小等)完全一致。
链接器报错原因
修改后出现的链接器错误:
armlink : error L6220: Load region APP size (197016 bytes) exceeds limit (196608 bytes).
原因是当前项目编译生成的只读代码段(RO段,包含APP_CFG段、APPENTRY入口、APP1中的所有+RO内容)总大小为197016字节,已经超过了修改后APP加载区设置的196608字节上限,因此链接器抛出容量超限错误。
关键代码段对比
初始文件的APP段定义:
APP 0x90309000 0x000B0000
修改后的APP段定义:
APP 0x90309000 0x00030000
内容的提问来源于stack exchange,提问作者Hossein
相关产品推荐
相关产品推荐

