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

news2024/11/16 23:46:07

       作为嵌入式单片机开发,在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”下载参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1839388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

最好用的智能猫砂盆存在吗?自用分享智能猫砂盆测评!

在现代都市的忙碌生活中,作为一名上班族,经常因为需要加班或频繁出差而忙碌得不可开交。急匆匆地出门,却忘了给猫咪及时铲屎。但是大家要知道,不及时清理猫砂盆会让猫咪感到不适,还会引发各种健康问题,如泌…

无问芯穹Qllm-Eval:制作多模型、多参数、多维度的量化方案

前言 近年来,大语言模型(Large Models, LLMs)受到学术界和工业界的广泛关注,得益于其在各种语言生成任务上的出色表现,大语言模型推动了各种人工智能应用(例如ChatGPT、Copilot等)的发展。然而…

2021 hnust 湖科大 C语言课程设计报告+代码+流程图源文件+指导书

2021 hnust 湖科大 C语言课程设计报告代码流程图源文件指导书 目录 报告 下载链接 https://pan.baidu.com/s/14NFsDbT3iS-a-_7l0N5Ulg?pwd1111

D111FCE01LC2NB70带流量调节派克比例阀

D111FCE01LC2NB70带流量调节派克比例阀 派克比例阀:由于采用(秉圣135陈工6653询3053)电液混合控制技术,响应速度更快、精度更高、控制更平稳。同时,由于采用高质量的材料制造,具有较高的承压能力和抗磨损性…

生活实用口语柯桥成人外语培训机构“客服”用英文怎么说?

● 01. “客服”英语怎么说? ● 我们都知道“客服”就是“客户服务”, 所以Customer Service就是#15857575376客服的意思。 但是这里的“客服”指代的不是客服人员, 而是一种Service服务。 如果你想要表达客服人员可以加上具体的职位&a…

面向对象前置(java)

文章目录 环境配置相关如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令path变量的含义javac(编译)使用java(运行)的使用public class 和 class 的区别 标识符命名规则命名规范 字面量字符串拼接变量的作用域转移字符类型转换接收用户键盘输…

Adobe XD是否收费?试试这几款超值的免费软件吧!

Adobe XD是一站式的 UX/UI 设计平台,设计师可以使用Adobe XD完成移动应用app界面设计、网页设计、原型设计等。Adobe XD也是一款结合原型和设计,提供工业性能的跨平台设计产品。而Adobebe。 XD跨平台的特点得到了很好的弥补 Sketch 没有 Windows 版本的缺…

【Java基础】 线程状态转化

Java 中的线程状态转换是指线程在其生命周期中可以经历的不同状态以及这些状态之间的转换。了解线程的状态转换对于有效地管理和调试多线程应用程序非常重要。Java 提供了 Thread.State 枚举来描述线程的状态。 状态 NEW(新建): 线程被创建&…

STemWin在Windows上仿真运行环境配置

文章目录 一、STemWin介绍二、emWin必用的2个工具2.1 PC仿真器2.2 GUIBuilder图形化设计工具三、安装VS2022四、打开emwin仿真工程五、常见的配置修改5.1 运行内存修改5.2 LCD显示屏尺寸的修改一、STemWin介绍 emWin(Embedded Wizard Graphics Library)是Segger公司开发的嵌…

深入二进制安全:全面解析Protobuf

前言 近两年,Protobuf结构体与Pwn结合的题目越来越多。 23年和24年Ciscn都出现了Protobuf题目,24年甚至还出现了2道。 与常规的Pwn题利用相比,只是多套了一层Protobuf的Unpack操作。 本文包含Protobuf环境安装、相关语法、编译运行以及pb…

软件工程考试题备考

文章目录 前言一、二、1.2 总结 前言 一、 B D C 类图、对象图、包图 其他系统及用户 功能需求 用例 人、硬件或其他系统可以扮演的角色7. D C 数据 原型/系统原型;瀑布 A 功能;功能需求 D 数据存储;圆形/圆角矩形;矩形 C T;T;F C C B C D C …

2024年应用科学、航天航空与核科学国际学术会议(ICASANS 2024)

2024年应用科学、航天航空与核科学国际学术会议(ICASANS 2024) 2024 International Academic Conference on Applied Science, Aerospace and Nuclear Science(ICASANS 2024) 会议简介: 在科技日新月异的今天&#xf…

xcode报错合集,你都遇到过哪些跳不过的坑

1.报错Consecutive declarations on a line must be separated by ; 其实我这里是用因为创建了一个结构体,然后在没有使用State的情况下,修改它的属性了 当然加上State依然报错: 应该在UI事件中修改:

Go 1.19.4 字符串-Day 06

1. 编码表 计算机中只有数字(0和1),如果有一个字符串(字符串由字符组成)要存储,在内存中该如何表达这个字符串? 那么所有的字符都必须数字化,也就是一个字符对应一个特定的数字&…

龙虎斗(2018)c++

题目描述 输入 输出 样例输入,输出 输入 #1 输出 #1 6 2 2 3 2 3 2 3 4 6 5 2 输入 #2 输出 #2 6 …

Shopee菲律宾本土店允许中途无理由退货,如何应对退货后库存混乱问题?

Shopee菲律宾本土店最近实施了一项新政策,自2024年6月10日起,允许买家在商品仍在运输途中申请退货与退款,此即“在途退货/退款”功能,主要的目的是为了提升买家的购物体验,增强市场竞争力。 图源:Shopee菲律…

使用vue组件的执行顺序

使用vue组件的执行顺序 public中index.html是整个应用的入口文件,当需要把app容器挂载页面上时,按照递归的方式找到app,也就是vue的入口文件,main.js;当找到设计其他子组件定义的内容时,会递归的找到其他子组件。 在子…

七款上网行为管理系统推荐|上网管理系统高能推荐

电脑监控审计软件,听起来可能有些高冷、专业,但它们其实就是守护你电脑的小精灵!这些软件工具可是专门设计来监控和记录你的电脑使用情况,无论你是企业里的辛勤员工,还是学校里的学霸小伙伴,都能找到它们的…

Agentic RAG 与图任务编排

一个朴素的 RAG 系统流程是这样的:先由用户提出问题,然后系统基于用户提问进行召回,对召回结果进行重排序,最后拼接提示词后送给 LLM 生成答案。 一部分简单场景下,朴素的 RAG 已经可以满足用户意图明确的场景的要求&a…