电子产业一站式赋能平台

PCB联盟网

搜索
查看: 31|回复: 0
收起左侧

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

[复制链接]

598

主题

598

帖子

7488

积分

高级会员

Rank: 5Rank: 5

积分
7488
发表于 昨天 11:46 | 显示全部楼层 |阅读模式
关注+星标公众,不错过精彩内容

mrszmpxaczf6409637426.jpg

mrszmpxaczf6409637426.jpg

作者 | strongerHuang微信公众号 | 嵌入式专栏
你们平时输出的Hex文件名,是如何定义的?特别是在产品需要量产时,发给生产部的Hex固件(文件名)。
如果软件版本升级了,发过去的Hex文件名还是一样,对方是不是要搞混?
但如果Hex文件名是通过【工程名+软件版本+日期时间】,类似下图这种,是不是就就不会出现搞混的情况了?

wnrncvojytf6409637526.png

wnrncvojytf6409637526.png

本期为大家讲解: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 获取系统日期和时间setYEAR=%DATE:~2,2%setMONTH=%DATE:~5,2%setDAY=%DATE:~8,2%setHOUR=%TIME:~0,2%setMINUTE=%TIME:~3,2%setSECOND=%TIME:~6,2%setCURRENT_DATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
    @REM 获取软件版本for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% %VERSION_FILE_PATH%') doset 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文件放在工程的某个地方(目录)。比如,我们这里直接放在工程目录下:

    sacxq5jhg5n6409637627.png

    sacxq5jhg5n6409637627.png

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

    bvw0djzalde6409637727.gif

    bvw0djzalde6409637727.gif

    这样每次编译后,就可以生成带有【工程名+软件版本+日期时间】的Hex文件名了。(自动获取软件版本、日期时间,不用手动修改hex文件名)
    详述bat批处理文件的内容
    bat批处理文件我把它分为两块,上面一块是根据自己项目情况,需要进行修改。而下面部分可以不用修改。

    pfmrgaqvroo6409637827.png

    pfmrgaqvroo6409637827.png

    1、可执行文件(Hex)文件名、文件路径,是你 Keil 工程配置选项中,配置的内容。
  • @REM 可执行文件(Hex)文件名set HEX_NAME=Demo
    @REM 可执行文件(Hex)文件路径set HEX_PATH=.\Objects

    frfgyieznly6409637927.png

    frfgyieznly6409637927.png

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

    ctr5nm3z2bm6409638027.png

    ctr5nm3z2bm6409638027.png

    3、软件版本号文件路径、字符串格式,也是根据你自己情况,放在某个源文件,根据自己定义的软件版本格式。
  • @REM 软件版本文件路径set VERSION_FILE_PATH=..\App\main.c
    @REM 软件版本字符串的格式set SOFTWARE_VERSION="#define SOFTWARE_VERSION"

    wa15rye0qnb6409638127.png

    wa15rye0qnb6409638127.png

    4、下半部分,可以不用修改,bat文件的语法很简单,看注释,应该比较容易理解。
  • @REM 获取系统日期和时间setYEAR=%DATE:~2,2%setMONTH=%DATE:~5,2%setDAY=%DATE:~8,2%setHOUR=%TIME:~0,2%setMINUTE=%TIME:~3,2%setSECOND=%TIME:~6,2%setCURRENT_DATE=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
    @REM 获取软件版本for /f "tokens=3 delims= " %%i in ('findstr /C:%SOFTWARE_VERSION% %VERSION_FILE_PATH%') doset 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,最好在应用代码中,能通过某种方式(显示屏、串口输出等)获取当前软件的版本。
    最最后,我录了一个视频,大家可以参考一下:
    ------------ END ------------
    关注公众号后台回复『Keil』『单片机』『嵌入式工具』阅读更多相关文章。
    回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。点击“阅读原文”查看更多分享
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表