ok_Keil实用小技巧 | Keil定制Hex文件名实现的方法

Keil实用小技巧 | Keil定制Hex文件名实现的方法

@echo off

@REM 可执行文件(Hex)文件名
set HEX_NAME=Demo

@REM 可执行文件(Hex)文件路径
set HEX_PATH=.\Objects

@REM 定制Hex输出路径
set OUTPUT_PATH=.\Output

@REM 软件版本文件路径
set VERSION_FILE_PATH=..\App\main.c

@REM 软件版本字符串的格式
set SOFTWARE_VERSION="#define SOFTWARE_VERSION"

@REM 获取系统日期和时间
set YEAR=%DATE:~2,2%
set MONTH=%DATE:~5,2%
set DAY=%DATE:~8,2%
set HOUR=%TIME:~0,2%
set MINUTE=%TIME:~3,2%
set SECOND=%TIME:~6,2%
set CURRENT_DATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%

@REM 获取软件版本
for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% %VERSION_FILE_PATH%') do set SW_Ver=%%i
set SW_Ver=%SW_Ver:~1,-1%

@REM 定制Hex文件名
set output_file_name=%HEX_NAME%_V%SW_Ver%_%CURRENT_DATE%

@REM 显示并复制Hex文件
echo "Output hex file: %OUTPUT_PATH%\%output_file_name%.hex"
copy %HEX_PATH%\%HEX_NAME%.hex %OUTPUT_PATH%\%output_file_name%.hex

exit

原创 strongerHuang 嵌入式专栏 2024-05-10 11:45 四川

关注+星标公众,不错过精彩内容

图片

作者 | strongerHuang

微信公众号 | 嵌入式专栏

你们平时输出的Hex文件名,是如何定义的?特别是在产品需要量产时,发给生产部的Hex固件(文件名)。

如果软件版本升级了,发过去的Hex文件名还是一样,对方是不是要搞混?

但如果Hex文件名是通过【工程名+软件版本+日期时间】,类似下图这种,是不是就就不会出现搞混的情况了?

图片

本期为大家讲解:Keil定制Hex文件名实现的方法

Keil定制Hex文件名实现的方法

Keil定制Hex文件名实现的方法有很多,这里为大家讲述其中一种,通过bat批处理实现的方法。

这里是本教程使用bat文件的内容:

@echo off
@REM 可执行文件(Hex)文件名set HEX_NAME=Demo
@REM 可执行文件(Hex)文件路径set HEX_PATH=.\Objects
@REM 定制Hex输出路径set OUTPUT_PATH=.\Output
@REM 软件版本文件路径set VERSION_FILE_PATH=..\App\main.c
@REM 软件版本字符串的格式set SOFTWARE_VERSION="#define SOFTWARE_VERSION"
@REM 获取系统日期和时间set YEAR=%DATE:~2,2%set MONTH=%DATE:~5,2%set DAY=%DATE:~8,2%set HOUR=%TIME:~0,2%set MINUTE=%TIME:~3,2%set SECOND=%TIME:~6,2%set CURRENT_DATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
@REM 获取软件版本for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% %VERSION_FILE_PATH%') do set SW_Ver=%%iset SW_Ver=%SW_Ver:~1,-1%
@REM 定制Hex文件名set output_file_name=%HEX_NAME%_V%SW_Ver%_%CURRENT_DATE%
@REM 显示并复制Hex文件echo "Output hex file: %OUTPUT_PATH%\%output_file_name%.hex"copy %HEX_PATH%\%HEX_NAME%.hex %OUTPUT_PATH%\%output_file_name%.hex
exit

提示:这里的内容可以根据自己项目情况进行修改,这里只是为了方便说明,整理的一个份简单的bat内容。

我们将这个bat文件放在工程的某个地方(目录)。比如,我们这里直接放在工程目录下:

图片

然后,在Keil的User选项,编译后那里添加这个bat批处理:

图片

这样每次编译后,就可以生成带有【工程名+软件版本+日期时间】的Hex文件名了。(自动获取软件版本、日期时间,不用手动修改hex文件名)

详述bat批处理文件的内容

bat批处理文件我把它分为两块,上面一块是根据自己项目情况,需要进行修改。而下面部分可以不用修改。

图片

1、可执行文件(Hex)文件名、文件路径,是你 Keil 工程配置选项中,配置的内容。

@REM 可执行文件(Hex)文件名set HEX_NAME=Demo
@REM 可执行文件(Hex)文件路径set HEX_PATH=.\Objects

图片

2、定制Hex输出路径,根据你自己情况,放在某个目录下,我们这里放在 工程下 Output 目录下。 

@REM 定制Hex输出路径set OUTPUT_PATH=.\Output

图片

3、软件版本号文件路径、字符串格式,也是根据你自己情况,放在某个源文件,根据自己定义的软件版本格式。 

@REM 软件版本文件路径set VERSION_FILE_PATH=..\App\main.c
@REM 软件版本字符串的格式set SOFTWARE_VERSION="#define SOFTWARE_VERSION"

图片

4、下半部分,可以不用修改,bat文件的语法很简单,看注释,应该比较容易理解。

@REM 获取系统日期和时间set YEAR=%DATE:~2,2%set MONTH=%DATE:~5,2%set DAY=%DATE:~8,2%set HOUR=%TIME:~0,2%set MINUTE=%TIME:~3,2%set SECOND=%TIME:~6,2%set CURRENT_DATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
@REM 获取软件版本for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% %VERSION_FILE_PATH%') do set SW_Ver=%%iset SW_Ver=%SW_Ver:~1,-1%
@REM 定制Hex文件名set output_file_name=%HEX_NAME%_V%SW_Ver%_%CURRENT_DATE%
@REM 显示并复制Hex文件echo "Output hex file: %OUTPUT_PATH%\%output_file_name%.hex"copy %HEX_PATH%\%HEX_NAME%.hex %OUTPUT_PATH%\%output_file_name%.hex

关于bat批处理文件的语法,这里就不解释其中语法的内容,大家可以自行百度了解。

最后额外说一下:这里主要针对Hex文件名,为了方便查找或追溯bug,最好在应用代码中,能通过某种方式(显示屏、串口输出等)获取当前软件的版本。

最最后,我录了一个视频,大家可以参考一下:

strongerHuang

,赞166

------------ END ------------

关注公众号后台回复『Keil』『单片机』『嵌入式工具』阅读更多相关文章。

回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

strongerHuang

作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、AIoT(物联网+人工智能)、单片机、通信技术、开发工具、半导体、芯片、电子、行业资讯等相关内容(关注并回复【1024】查看更多内容)。

521篇原创内容

公众号

嵌入式专栏

作者黄工【strongerHuang】,专注分享嵌入式软件、硬件、工具等相关内容,通过专栏形式精选并整理更多嵌入式相关教程。关注并回复“1024”查看更多教程。

213篇原创内容

公众号

  • 31
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值