《嵌入式人必看:Keil + 脚本小技巧,省出 2 小时摸鱼时间》

Keil是嵌入式开发中用的非常多的一个工具,有很多技巧是在使用中慢慢发现的,其中有不少技巧我都觉得非常有价值,今天要分享的是一个如何使用自动化脚本,编译即生成自己想要文件的技巧!

主要解决如下两个问题:

1、嵌入式软件开发完成后,需要发布版本,如果软件支持远程升级,那么发布的版本需要打包bootloader.hex与app.hex,是如何实现的?

2、远程升级文件(bin)结尾需要增加整个文件的校验码,可以用来验证整个文件的正确性,又是如何实现的?

你是否也这样操作过?

  • 打开合并工具,手动选择两个Hex文件,点击合并…

  • 手动将bootloader与app烧写进芯片,然后用烧录工具读取芯片flash内容,再保存为一个文件…

  • 打开二进制工具计算CRC校验值,然后再添加到Bin文件末尾

这些方法都是可行的,因为我都干过^V^,只是操作麻烦了点,尤其这种重复性工作做多了,你会不会觉得烦?在当今这个越来越智能化的社会,作为嵌入式工程师持续干这种重复性的机械活,我觉得实在不应该,使其自动化,节省出大把时间它不香吗!

今天,就给大家分享一个我后面一直在用的Keil自动化脚本技巧,解决以上痛点:编译完成后自动合并文件+自动添加CRC校验,真正实现“编译即发布”。


一、如何实现

只需简单两步配置,即可一劳永逸:

1、打开Keil,点击魔术棒 → Options for Target → User → After Build/Rebuild

2、勾选Run #1 和 Run #2,后面方框中分别填入以下命令:
  • Run#1(用于生成原始bin文件):

C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o .\SREC\original_app .\output\app.axf

说明:fromelf.exe文件在你的Keil安装目录下,安装目录不同位置会有差异;

  • Run#2(执行打包和添加CRC的脚本):

.\SREC\crc_add.bat

二、crc_add.bat 做了什么?

这个批处理脚本核心做了两件事:

①将bootloader与app合并打包

使用mergeHEX工具将bootloader.hex和app.hex合并为一个完整的boot-app.hex文件

②在生成的bin文件中增加crc校验码

使用crc_gen工具对合并后的文件计算CRC32,并自动附加在文件末尾。

 crc_add.bat中内容具体指令如下:

@echo off
ECHO Add CRC32  At the end of the document
ECHO -------------------------------------

cd .\SREC
SET SREC_PATH=.


for /f %%i in ('dir /b .\original_app') do (
set indexdx=%%~zi
)

ECHO %indexdx%

ECHO %SREC_PATH%\srec_cat.exe original_app -Binary -crop 0 %indexdx%  -crc32-b-e %indexdx%  -o app.bin -Binary
ECHO %SREC_PATH%\mergeHEX.exe .\Bootloader.hex ..\output\app.hex  .\boot-app.hex
%SREC_PATH%\srec_cat.exe original_app -Binary -crop 0 %indexdx%  -crc32-l-e %indexdx%  -o .\app.bin -Binary
%SREC_PATH%\mergeHEX.exe .\Bootloader.hex ..\output\app.hex  .\boot-app.hex


三、SREC文件结构示意:

crc_add.bat中所需要的工具均放在SREC文件夹,并且生成的文件也在该文件夹下:

值得注意的是:需要将自己的bootloader.hex文件拷贝到该SREC文件夹


四、最终效果

每次点击编译后,Keil会自动执行后续动作,最终在SREC目录下生成:

app.bin:用于远程升级的纯app二进制文件

boot-app.hex:已合并bootloader且带crc校验码的刷机文件

真正实现“编译完成即发布”,省去一切手动操作。这样就解放了双手,才能把时间用在真正有价值的地方——比如摸鱼,哈哈!

文中用到的脚本工具(crc_add.bat、mergeHEX.exe等)已打包,如果需要,请在公众号【开源之外小记】后台回复【Keil自动化】获取!

如果您觉得有用,欢迎点赞、收藏、转发,这将是我不断分享的动力!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东皇※太一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值