一种针对嵌入式KEIL工程的版本管理和跟踪的python脚本

news2024/11/22 21:12:48

        这是去年写的一个python脚本,和KEIL V5配套使用的,借助git对工程文件进行版本管理和跟踪。打包后的exe和源文件整理到网盘了,有需要的可以自取,链接:https://pan.quark.cn/s/6c28fb43e8dc
提取码:R17N

        

关于如何使用:

  1. lead_vcs.exe是已经打包好的可执行文件,lead_vcs.py是源文件

  2. 需要将exe文件路径放到keil的Options - User - Before Build/Rebuild中,例./board/script/lead_vcs.exe

  3. 脚本执行成功后会自动在board文件夹下生成用于存放版本信息的version_info.h文件

  4. 执行过程中会在keil的Build Ouput中打印信息

简单介绍一下脚本:

        开发语言:python; 针对工程:适配ARM公司的KEIL-V5软件的工程

        脚本使用方法:直接放置到keil的设置项下; 脚本执行位置:程序编译之前,如下图

        脚本功能:跟踪当前软件版本、适配硬件版本、程序提交者、提交hash值、提交时间、文件的远端存储地址、远端分支、编译时间、编译主机名称、编译主机IP

实现方法(技术摘要):

1、在keil工程的前3级路径下面查找.git文件夹,.git文件夹是是git init后在当前目录生成的一个管理git仓库的文件夹

2、借助git的库Repo,将.git中的提交者、提交hash等有用信息提取出来

3、借助python的各种库识别当前主机名称和IP等信息

4、在指定路径下面新建C头文件version_info.h ,将上述采集到的信息按指定格式存入文件,同时在keil的Build Ouput中打印采集到的信息

5、程序在编译过程中会加入version_info.h,使用C语言代码在程序运行中将其中的版本信息解析或根据命令打印出来

6、上述流程可以使开发者在编译调试过程中直接查看到版本信息,使非开发者通过按键或者发送串口命令的方式使能控器将其版本信息打印出来,方便进行版本管理和跟踪

        运行的效果图如下(在keil的Output窗口显示):

        生成的version_info.h文件如下:

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

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

相关文章

unity 实现拖动ui填空,并判断对错

参考:https://ask.csdn.net/questions/7971448 根据自己的需求修改为如下代码 使用过程中,出现拖动ui位置错误的情况,修改为使用 localPosition 但是吸附到指定位置却需要用的position public class DragAndDrop : MonoBehaviour, IBeginDr…

OJ第三篇

文章目录 随机链表的复制 随机链表的复制 链接:随机链表的复制 这个题简单而言就是它给一个链表,每个结点包含两个指针,分别指向下一个和一个随机的结点(也有可能指向空),你要做的就是复制这个链表,使你创…

Leetcode算法解析——快乐数

1.题目链接:快乐数 2.题目描述: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循…

死锁原因及死锁检测组件的实现

1 死锁形成的条件 死锁,是指多个线程或者进程在运行过程中因争夺有限的系统资源而造成的一种僵局,当进程或者线程处于这种僵持状态,若无外力作用,它们将无法再向前推进。如下图所示,线程 A 想获取线 程 B 的锁&#x…

当你在 Tubi 是一位 Tech Lead

在过去,我们邀请了 Tubi 技术团队的许多资深工程师,听他们分享了作为资深工程师的一些故事。今天,我们将镜头转向那些在 Tubi 担任 Tech Lead 的工程师,他们选择了在独立开发之外,承担一定的技术管理工作: …

计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)

目录 OSI体系结构 OSI体系介绍 OSI失败的原因 TCP/IP体系结构 TCP/IP概述 网络接口层 网际层 运输层 应用层 TCP/IP命名的由来 原理体系结构(五层协议) OSI体系结构 OSI体系介绍 著名的“开放系统互连参考模型”,简称为OSI。该模…

Windows下Qt读取系统的内存、CPU、GPU等使用信息

一、前言 在当今计算机应用广泛的领域中,了解系统的内存、CPU和GPU使用情况是非常重要的。对于开发人员和系统管理员来说,准确获取这些信息可以帮助他们优化软件性能、诊断问题并做出相应的调整。在Windows平台上实现这一目标会涉及到调用Windows系统AP…

Apifox 学习笔记 - 前置操作之:动态更新请求体中的时间戳

Apifox 学习笔记 - 前置操作之:动态更新请求体中的时间戳 1. 在前置操作中添加一个:自定义脚本或公共脚本2. 定义我们所需的环境变量。3. 在请求参数中使用【时间戳】4. 检验参考资料 1. 在前置操作中添加一个:自定义脚本或公共脚本 2. 定义我…

WPF DataGrid详细列表手动显示与隐藏

设置显示序号与折叠显示样式 <DataTemplate x:Key"dtNum"><Button BorderBrush"Transparent" Style"{x:Null}" Click"BtnRowDetail_ShowHideClick" FontSize"16" Background"Transparent"><Stack…

Dubbo从0到1——万字完整学习笔记

目录 RPC理论概述 RPC的基本思想 RPC的实现组成部分 RPC的实现流程 RPC的核心思想 RPC调用分类 初识Dubbo Dubbo特性 Dubbo设计架构 zookeeper环境搭建 搭建注册中心环境 搭建监控中心环境 Dubbo入门案例(Dubbo Spring) 实现步骤 搭建中介者组件共享资源 打包为jar&#xf…

京东数据接口:京东数据分析怎么做?

电商运营中数据分析的重要性不言而喻&#xff0c;而想要做数据分析&#xff0c;就要先找到数据&#xff0c;利用数据接口我们能够更轻松的获得比较全面的数据。因此&#xff0c;目前不少品牌商家都选择使用一些数据接口来获取相关电商数据、以更好地做好数据分析。 鲸参谋电商…

[0xGameCTF 2023] web题解

文章目录 [Week 1]signinbaby_phphello_httprepo_leakping [Week 2]ez_upload [Week 1] signin 打开题目&#xff0c;查看下js代码 在main.js里找到flag baby_php <?php // flag in flag.php highlight_file(__FILE__);if (isset($_GET[a]) && isset($_GET[b])…

2023年中国家纺行业研究报告

第一章 行业概况 1.1 定义 家纺行业&#xff0c;即家用纺织品行业&#xff0c;是纺织业中的一个重要分支&#xff0c;它与服装用纺织品和产业用纺织品共同构成了纺织业的三大支柱。家纺不仅仅是家庭生活中的必需品&#xff0c;更是居室装饰中不可或缺的元素&#xff0c;被誉为…

Java多线程篇(11)——BlockingQueue(优先级阻塞,延迟队列)

文章目录 1、PriorityBlockingQueue2、DelayQueue 1、PriorityBlockingQueue 优先级阻塞队列就是在优先级队列的基础上增加队列排序的功能&#xff0c;将高优先级排在前面&#xff0c;所以优先级队列的元素需要实现Comparator接口。 如果数据结构用数组去维护队列的话&#xf…

uniapp系列-图文并茂教你配置uniapp开发环境

环境安装 1. 安装 node.js (版本 18/16) 在搭建 Vue 开发环境之前&#xff0c;请先下载 node.js。 Node 可从官方网站下载&#xff0c;也可从中文网站下载。根据你的电脑选择 32 位 或 64 位。网站&#xff1a; Node 或者访问 历史版本 查看 node 版本 C:\Users> node -…

超级干货 | 数据平滑9大妙招(python版)

大家好&#xff0c;对数据进行平滑处理的方法有很多种&#xff0c;具体的选择取决于数据的性质和处理的目的。今天给大家分享9大常见数据平滑方法&#xff1a; 移动平均Moving Average 指数平滑Exponential Smoothing 低通滤波器 多项式拟合 贝塞尔曲线拟合 局部加权散点平…

【python海洋专题二十一】subplots共用一个colorbar

上期读取subplot&#xff0c;并出图 但是存在一些不完美&#xff0c;本期修饰 本期内容 共用colorbar 1&#xff1a;未共用colorbar 共用colorbar 1&#xff1a;横 2&#xff1a;纵 关键语句 图片 cb_ax fig.add_axes([0.15, 0.02, 0.6, 0.03]) #设置colarbar位置 cbar …

切换npm的版本

1、在配置环境变量的地址中&#xff0c;多准备几个已解压版本的node 2、要想升降版本直接更改该文件中的文件夹名称就行 环境变量中的path的值是不用变的C:\Program Files\nodejs

Leetcode 剑指 Offer II 048. 二叉树的序列化与反序列化

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#…

商品分类代码

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>商品分类代码</title> <script type"text/javascript"> function MM_preloadImages() { //v3.0var ddocument; if(d.images){ if(!d.MM_p) d.MM_p…