项目场景:
由于开发IAP升级相关功能,需要Keil输出bin文件以供升级使用。
使用互联网中常见的设置方法,在Keil工程设置中的User页面,设定After build要执行的命令
问题描述
烧录bin文件后发现程序无法运行
经过Keil直接下载和通过bin升级烧录的比对,发现输出的bin文件代码缺失
此时注意到……Keil输出的bin文件大小只有32K,实际正常的bin应该远超过32k
原因分析:
通过在CMD中手动运行转换命令xxxx\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bincombined -o ./objects/xxxx.bin ./objects/xxxx.axf
(上述命令隐去了路径和文件名,不要直接复制使用)发现可以得到正常大小的bin文件输出,但Keil调用同样的命令则只能得到大小在32K以下的bin文件
目前判定是Keil在调用命令时出现异常,由于互联网上出现类似问题的情况较少,怀疑可能和本人使用的工作电脑中的加密软件有关
解决方案:
将需要执行的命令存储为bat脚本,然后在Keil的After build中选择调用该bat脚本,问题可得到解决