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=%%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
提示:这里的内容可以根据自己项目情况进行修改,这里只是为了方便说明,整理的一个份简单的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=%%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
关于bat批处理文件的语法,这里就不解释其中语法的内容,大家可以自行百度了解。
最后额外说一下:这里主要针对Hex文件名,为了方便查找或追溯bug,最好在应用代码中,能通过某种方式(显示屏、串口输出等)获取当前软件的版本。
最最后,我录了一个视频,大家可以参考一下:
strongerHuang
,赞166
------------ END ------------
关注公众号后台回复『Keil』『单片机』『嵌入式工具』相关文章。
回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
strongerHuang
作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、AIoT(物联网+人工智能)、单片机、通信技术、开发工具、半导体、芯片、电子、行业资讯等相关内容(关注并回复【1024】查看更多内容)。
521篇原创内容
公众号
嵌入式专栏
作者黄工【strongerHuang】,专注分享嵌入式软件、硬件、工具等相关内容,通过专栏形式精选并整理更多嵌入式相关教程。关注并回复“1024”查看更多教程。
213篇原创内容
公众号