2026 / 07 / 22
Keil MDK中如何减小RA bin文件的大小

Issue:

在Keil MDK中开发RA6M2时,如何缩小生成的binary文件,仅保留code flash部分的内容?当前使用了以下命令(添加到After Build),但是生成的bin文件过大(超过10M bytes),根源是对于目标binary文件进行了填充,填充的结束地址是option-setting memory。

fromelf.exe --bincombined --bincombined_padding=4,0xFFFFFFFF -o ./firmware.bin ./Objects/RA6M2_test_bin.axf


Answer:

RA6M2的Memory Map和option-setting memory area地址信息,如下图所示:


在0100 A150h处有option-setting memory,由于bin文件不包含地址信息,因此生成时会从0地址开始,一直到有数据的地址结尾。

按照run #2生成的***.bin文件大小是0x0100A160(十进制16,818,528),这和在资源管理器看到的文件大小一致。

虽然当前OSIS和AWS没有设定,默认会在相应地址填充FFh,因此如果想仅保留code flash中的内容生成未经填充的***.bin文件,可修改linker script file实现。


具体操作如下:

1. 将memory_regions.scat文件拷贝后重命名为memory_regions_NEW.scat,将#define ID_CODE_LENGTH 0x10 更新为 #define ID_CODE_LENGTH 0x00


2. 编辑fsp.scat文件,将#include "memory_regions.scat"更新为#include "memory_regions_NEW.scat"


3. 重新build,会发现生成的***.bin文件已经没有填充了


将命令行更新为如下内容,更具通用性。

fromelf.exe --bincombined --bincombined_padding=4,0xFFFFFFFF -o ./Objects/@P.bin ./Objects/@P.axf

文件下载
隐私条款

一、接受条款 使用者(也称"您")在访问或使用本网站及其服务时,即已经表示同意并不加修改地接受本《用户协议》、本网站的《隐私声明》、《法律声明》以及其关或相链接的网页和网站的条件和条款的规定。我们强烈建议:在您阅读和接受本《用户协议》时,也应阅读并接受本《用户协议》中所提到《隐私声明》、《法律声明》及其相关或相链接网页或网站所包含的资料,因为《隐私声明》、《法律声明》及其它相关网页或网站可能包含对您适用的进一步规定。(请注意:点击划有底线的词句即可链接到上述《隐私声明》、《法律声明》及其它相关或相链接的网页和网站。

 

二、使用者的资格要求 在本网站中"使用者"指的是浏览、阅读、使用本网站信息或服务的任何个人或组织。本网站的服务仅适用于根据相关法律的规定具有签订有约束力的合同的个人或组织并仅由其使用。本网站的服务不向18周岁以下的个人使用者提供,也不向临时被本网站中止或取消使用者资格的使用者提供。如果使用者不符合本条规定,请停止使用本网站或本网站的服务。

样品
申请

应用
资源

微信