作为嵌入式单片机开发,在Keil MDK(Microcontroller Development Kit)中开发完编译完后,经常需要手动进行版本号添加用于发版,非常麻烦,如果是对外发行的话,更容易搞错,特此码哥提供一种自动生成带版本号的bin文件方法
自动生成版本号bat脚本
通过批处理脚本(batch script)可用于自动化完成带版本号可执行文件(EXE)和Hex文件生成,如下为脚本实现的过程:
- 设置变量:
EXE_NAME
:可执行文件的名称(无扩展名)。EXE_PATH
:可执行文件(通常是编译后的.axf文件)的路径。OUTPUT_PATH
:输出Hex和Bin文件的路径。VERSION_FILE_PATH
:包含软件版本信息的源文件路径。SOFTWARE_VERSION
:在源文件中搜索软件版本时使用的标识符。FROMELF_PATH
:fromelf工具(用于将.axf文件转换为.bin文件)的路径。
- 获取软件版本:
- 使用
findstr
命令在VERSION_FILE_PATH
指定的文件中搜索SOFTWARE_VERSION
。 - 提取找到的行的第三个标记(默认为空格分隔),并假设这是版本信息。然后,通过删除第一个和最后一个字符(可能是引号)来清理版本字符串。
- 使用
- 定制文件名:
- 使用
EXE_NAME
和SW_Ver
来构建Hex和Bin文件的输出文件名。
- 使用
- 转换并定制Bin文件名:
- 使用fromelf工具将.axf文件转换为.bin文件,并指定输出路径和文件名。
- 显示并复制Hex文件:
- 这里有一个潜在的问题:脚本试图复制一个Hex文件,但之前并没有生成或转换这个Hex文件。如果
%EXE_PATH%\%EXE_NAME%.hex
确实存在,那么复制操作会成功;否则,你会得到一个错误消息。
- 这里有一个潜在的问题:脚本试图复制一个Hex文件,但之前并没有生成或转换这个Hex文件。如果
- 退出:
- 脚本执行完毕后退出。
- 具体代码如下,码哥贴一下
一般版本号是在某一个文件中,像上面的目录码哥是将软件版本号放在了:..\User\src\io_link_appl.c中;
配置演示
配置脚本自动生成
options->user
after build后面加载bat脚本,就会在编制完自动运行bat脚本生成bin文件
总结
通过以上步骤,您可以在Keil MDK中自动生成带版本号的bin文件。这有助于在软件开发过程中跟踪和管理不同版本的固件文件,码哥提一下这个bat脚本其实是可以根据自己需求进行修改的,上面只是作为一个开发思路,比如如果版本号可以按照当前日期进行输出呢,大家可以思考一下如何修改,大家如果这bat感兴趣,码哥也提供了下载链接,可扫码回复“芯源义码bat”下载参考