搜索
bottom↓
回复: 66

上传个小工具,可以给单片机C程序自动产生并增加版本号

  [复制链接]

出0入0汤圆

发表于 2012-1-13 10:41:32 | 显示全部楼层 |阅读模式
由于想要在单片机产品中能显示固件的版本号和编译时间,以前一直是手工添加的,很不方便,如果每次编译时能自动增加版本号就方便多了,为此写了个小程序,可以很方使的嵌入到IDE中实现此功能(在MDK和STVD+COSMIC环境下测试过,理论上对大部份IDE都有效),现上传给大家,欢迎拍砖。

给单片机C程序自动产生版本号的程序ourdev_712769GBDVRJ.rar(文件大小:120K) (原文件名:Version.rar)

工作原理:很简单地说,运行Version.exe生成一个"version.h"头文件,文件的内容如下:

#ifndef VERSION_H_INCLUDED
#define VERSION_H_INCLUDED

#define VERNUM "1.0.0"
#define BUILDNUM "0"
#define BUILDTIME "2011-12-13 09:50:58"

#endif

将version.h文件包含到你的工程代码中,在需要的地方直接调用VERNUM,BUILDNUM,BUILDTIME即可,将Version.exe加入到IDE工程选项中编译前运行的程序栏,这样每次执行编译时将自动调用Version.exe,自动将BUILDNUM的值递增,同时将当前时间替换掉BUILDTIME的内容。



使用方法:

一、在MDK环境下:

1.解压缩后将Version.exe复制到MDK工程的源文件目录下,比如:../Source/Version下,记下此路径。
2.打开MDK项目,在User标签下的“Run User Program Before Build/Rebuild"栏选择Version.exe所在的路径"..\Source\Version\Version.exe",Run #1前的框打上√。
3.在C/C++标签下的Include Paths中加入Version.exe所在的目录"../Source/Version"
4.在C源码中#include "version.h",在需要显示版本号的地方调用BUILDNUM等需要的值,比如printf("Version %s Build %s @ %s",VERNUM,BUILDNUM,BUILDTIME);即可。

项目设置 (原文件名:1.jpg)
二、在STVD环境下:
1.解压缩后将Version.exe复制到STVD工程的源文件目录下,比如:../Source/Version下,记下此路径。
2.双击运行一下Version.exe,生成version.h,将version.h加入到工程中。
3.在Project Settings中Pre-Link标签下的Commands文本框中将Version.exe的路径加上去,如图:

STVD设置 (原文件名:2.jpg)

4.在C源码中#include "version.h",在需要显示版本号的地方调用BUILDNUM等需要的值,比如printf("Version %s Build %s @ %s",VERNUM,BUILDNUM,BUILDTIME);即可。

另:Version.exe有一个参数-v可指定VERNUM的值,如果不指定则默认为1.0.0,并且VERNUM的值不会自动改变,变的只是BUILDNUM和BUILDTIME。-v参数的使用:
../Version.exe -v xxxxxxxx
其中xxxxxxxx为任意字符串,没有限定长度和格式,可以是2.0.1,也可以是abcdefg等等。

出0入0汤圆

发表于 2012-1-13 10:43:28 | 显示全部楼层
好东西,收藏了!

出0入0汤圆

发表于 2012-1-13 10:50:09 | 显示全部楼层
刚试了下,很好使。

出0入0汤圆

发表于 2012-1-13 10:54:47 | 显示全部楼层
回复【1楼】yzhu
-----------------------------------------------------------------------

在mdk4.22a上试了,好用.

出0入0汤圆

发表于 2012-1-13 11:08:08 | 显示全部楼层
好东西,收藏了!

出0入0汤圆

发表于 2012-1-13 11:14:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-13 11:14:34 | 显示全部楼层
最好再加一个自动读取器件唯一ID。

出0入0汤圆

发表于 2012-1-13 11:15:32 | 显示全部楼层
makr

出0入0汤圆

 楼主| 发表于 2012-1-13 11:20:42 | 显示全部楼层
回复【6楼】.titrwh  灰机
最好再加一个自动读取器件唯一id。
-----------------------------------------------------------------------
怎么加呢?读取器件唯一ID本来不就是很方便的吗?

出0入0汤圆

发表于 2012-1-13 11:22:53 | 显示全部楼层
信息,辛苦了

出0入0汤圆

发表于 2012-1-13 11:52:07 | 显示全部楼层
用作加密怎么样了?

出0入0汤圆

发表于 2012-1-13 12:04:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-13 12:07:52 | 显示全部楼层
绝对的好东西,一直想要这样的软件了。

出0入0汤圆

发表于 2012-1-13 12:07:53 | 显示全部楼层
辛苦了 谢谢!

出0入0汤圆

发表于 2012-1-13 12:10:48 | 显示全部楼层
这个记号下!

出0入0汤圆

发表于 2012-1-13 12:19:20 | 显示全部楼层
mark。

出0入0汤圆

发表于 2012-1-13 12:23:22 | 显示全部楼层
好东西,顶顶

出0入0汤圆

发表于 2012-1-13 12:24:16 | 显示全部楼层
好东西。
本人用网络芯片nc80j60时,发现需要自己设置mac地址。这个比较麻烦,特别是批量的时候。用你这个东西可以改造一下就很好了。不过如果能够直接写hex文件就更加好,因为生产部门不需要编译源码的。

出0入0汤圆

发表于 2012-1-13 12:24:54 | 显示全部楼层
好东西,顶顶

出0入0汤圆

发表于 2012-1-13 12:46:49 | 显示全部楼层
严重感谢~~

出0入8汤圆

发表于 2012-1-13 12:51:20 | 显示全部楼层
记号~

出0入0汤圆

发表于 2012-1-13 13:00:50 | 显示全部楼层
这个好,收藏了

出0入0汤圆

发表于 2012-1-13 13:02:31 | 显示全部楼层
我承认我是来踢馆的.
其实有个更简单的办法
只需定义
const unsigned char CompilerTime[] = {__DATE__ __TIME__};
生成的字符串就是你的编译时间,当然需要将包含这个定义的文件设置为始终编译.

(原文件名:1.JPG)

(原文件名:2.JPG)

出0入0汤圆

发表于 2012-1-13 13:13:12 | 显示全部楼层
~~~~~

出0入0汤圆

 楼主| 发表于 2012-1-13 14:12:44 | 显示全部楼层
回复【22楼】lqsoft  
我承认我是来踢馆的.
其实有个更简单的办法
只需定义
const unsigned char compilertime[] = {__date__ __time__};
生成的字符串就是你的编译时间,当然需要将包含这个定义的文件设置为始终编译.

(原文件名:1.jpg)

(原文件名:2.jpg)

-----------------------------------------------------------------------
这个方法早用过了,但其实很不好用,而且不通用

出0入0汤圆

发表于 2012-1-13 14:43:27 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-13 15:00:33 | 显示全部楼层
这个给力

出0入0汤圆

发表于 2012-1-13 15:19:41 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-13 15:38:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-13 16:22:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-13 16:49:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-14 10:42:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-14 12:14:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-14 14:07:04 | 显示全部楼层
记号

出0入0汤圆

发表于 2012-1-15 01:58:05 | 显示全部楼层
mark 方便查找

出0入0汤圆

发表于 2012-1-16 01:24:37 | 显示全部楼层
好东西,改天试试。

出0入0汤圆

发表于 2012-1-16 01:48:37 | 显示全部楼层
mark。。。

出0入0汤圆

发表于 2012-1-16 02:14:34 | 显示全部楼层
这个我也记号一下。

出0入0汤圆

发表于 2012-1-16 09:14:49 | 显示全部楼层
试试

出0入0汤圆

发表于 2012-1-16 09:42:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 09:57:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 11:22:07 | 显示全部楼层
记号。

出0入0汤圆

发表于 2012-1-16 11:31:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 11:42:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 11:53:55 | 显示全部楼层
mark 两种方法都试一下。

出0入0汤圆

发表于 2012-1-16 17:26:05 | 显示全部楼层
有意思 收藏 试用

出0入0汤圆

发表于 2012-1-16 18:25:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-4-26 23:19:54 | 显示全部楼层
终于又找到了,旧论坛顶过,差不到回复记录了~

出0入0汤圆

发表于 2012-4-27 03:00:51 | 显示全部楼层
mark!给力呀

出0入0汤圆

发表于 2012-4-27 09:01:50 | 显示全部楼层
真是福音呀!!!

出0入0汤圆

发表于 2012-4-27 09:10:23 | 显示全部楼层
不错,这个小工具相当实用啊

出0入0汤圆

发表于 2012-4-27 10:33:00 | 显示全部楼层
这个可以MARK

出0入0汤圆

发表于 2012-4-27 20:46:56 | 显示全部楼层
mark                       

出0入0汤圆

发表于 2012-4-27 20:50:52 | 显示全部楼层
比较方便

出0入0汤圆

发表于 2012-4-28 00:08:58 | 显示全部楼层
不错的工具!

出0入0汤圆

发表于 2012-5-15 19:11:20 | 显示全部楼层
好东西,正式我想找的,收藏了!

出0入0汤圆

发表于 2012-5-15 19:33:37 | 显示全部楼层
很好的功能,准备加入到项目中.

出0入0汤圆

发表于 2012-5-15 20:07:10 | 显示全部楼层
收藏了。
应该用得着、

出0入0汤圆

发表于 2012-5-17 03:22:58 | 显示全部楼层
这个我也记号一下。

出0入0汤圆

发表于 2012-5-17 07:46:25 | 显示全部楼层
很好很好

出0入0汤圆

发表于 2012-8-22 10:25:34 | 显示全部楼层
MDK下很好用,谢谢楼主

出0入0汤圆

发表于 2012-8-22 10:42:49 来自手机 | 显示全部楼层
手机党记号

出0入0汤圆

发表于 2012-8-22 12:46:18 来自手机 | 显示全部楼层
好东西                    

出0入0汤圆

发表于 2012-9-7 09:40:59 | 显示全部楼层
能否把源码共享出来……谢谢

出0入0汤圆

发表于 2012-9-20 15:09:52 | 显示全部楼层
mark   以后试试

出0入24汤圆

发表于 2018-1-15 02:44:27 来自手机 | 显示全部楼层
mark标记一下

出0入0汤圆

发表于 2020-9-19 12:46:13 | 显示全部楼层
mark下,有用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 07:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表