当前位置: 首页 > news >正文

keil MDK自动生成带版本bin文件

       作为嵌入式单片机开发,在Keil MDK(Microcontroller Development Kit)中开发完编译完后,经常需要手动进行版本号添加用于发版,非常麻烦,如果是对外发行的话,更容易搞错,特此码哥提供一种自动生成带版本号的bin文件方法

        自动生成版本号bat脚本

      通过批处理脚本(batch script)可用于自动化完成带版本号可执行文件(EXE)和Hex文件生成,如下为脚本实现的过程:

  1. 设置变量
    • EXE_NAME:可执行文件的名称(无扩展名)。
    • EXE_PATH:可执行文件(通常是编译后的.axf文件)的路径。
    • OUTPUT_PATH:输出Hex和Bin文件的路径。
    • VERSION_FILE_PATH:包含软件版本信息的源文件路径。
    • SOFTWARE_VERSION:在源文件中搜索软件版本时使用的标识符。
    • FROMELF_PATH:fromelf工具(用于将.axf文件转换为.bin文件)的路径。
  2. 获取软件版本
    • 使用findstr命令在VERSION_FILE_PATH指定的文件中搜索SOFTWARE_VERSION
    • 提取找到的行的第三个标记(默认为空格分隔),并假设这是版本信息。然后,通过删除第一个和最后一个字符(可能是引号)来清理版本字符串。
  3. 定制文件名
    • 使用EXE_NAMESW_Ver来构建Hex和Bin文件的输出文件名。
  4. 转换并定制Bin文件名
    • 使用fromelf工具将.axf文件转换为.bin文件,并指定输出路径和文件名。
  5. 显示并复制Hex文件
    • 这里有一个潜在的问题:脚本试图复制一个Hex文件,但之前并没有生成或转换这个Hex文件。如果%EXE_PATH%\%EXE_NAME%.hex确实存在,那么复制操作会成功;否则,你会得到一个错误消息。
  6. 退出
    • 脚本执行完毕后退出。
  7. 具体代码如下,码哥贴一下

一般版本号是在某一个文件中,像上面的目录码哥是将软件版本号放在了:..\User\src\io_link_appl.c中;

       

配置演示

          配置脚本自动生成

options->user

after build后面加载bat脚本,就会在编制完自动运行bat脚本生成bin文件

  

             

总结

        通过以上步骤,您可以在Keil MDK中自动生成带版本号的bin文件。这有助于在软件开发过程中跟踪和管理不同版本的固件文件,码哥提一下这个bat脚本其实是可以根据自己需求进行修改的,上面只是作为一个开发思路,比如如果版本号可以按照当前日期进行输出呢,大家可以思考一下如何修改,大家如果这bat感兴趣,码哥也提供了下载链接,可扫码回复“芯源义码bat”下载参考

相关文章:

  • Clickhouse Projection
  • 【Java核心技术10】Java数组详解
  • 马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路
  • AWS无服务器 应用程序开发—第二章AWS CodeCommit、AWS Amplify
  • 特种设备高处安装维护拆除作业精选历年试题
  • 内网渗透-隧道搭建ssp隧道代理工具frp内网穿透技术
  • 「Python-docx 专栏」docx设置页脚、页码、页码对齐方式
  • 【UML用户指南】-16-对高级结构建模-构件
  • “灵活就业者“超两亿人 游戏开发者如何破局?
  • github安全问题token和sshkeys
  • 某宝APP参数通过SDK把APP参数转URL参数链接方法
  • 第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分
  • Python爬虫小白入门(二)BeautifulSoup库
  • SpringBoot配置第三方专业缓存技术Ehcache
  • React入门教程:构建你的第一个React应用
  • python3.6+scrapy+mysql 爬虫实战
  • @angular/forms 源码解析之双向绑定
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • canvas绘制圆角头像
  • iOS | NSProxy
  • Laravel 中的一个后期静态绑定
  • leetcode-27. Remove Element
  • Lsb图片隐写
  • php中curl和soap方式请求服务超时问题
  • React as a UI Runtime(五、列表)
  • Redis中的lru算法实现
  • SOFAMosn配置模型
  • spring security oauth2 password授权模式
  • Spring-boot 启动时碰到的错误
  • tensorflow学习笔记3——MNIST应用篇
  • 今年的LC3大会没了?
  • 聊聊directory traversal attack
  • 目录与文件属性:编写ls
  • 用 Swift 编写面向协议的视图
  • Python 之网络式编程
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (二十三)Flask之高频面试点
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (南京观海微电子)——COF介绍
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (新)网络工程师考点串讲与真题详解
  • (已解决)什么是vue导航守卫
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .dwp和.webpart的区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net 6.0 处理跨域的方式
  • .Net 6.0--通用帮助类--FileHelper
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net wcf memory gates checking failed