自动生成版本信息,重新编译指定文件,一键编译IAR工程同时生成hex,bin,out文件
平台:IAR + windows_bat
1.自动生成版本信息 目的: 脚本自动更新程序svn对应的的版本号
前提: svn需要安装command line (参考 https://jingyan.baidu.com/article/a3a3f8113f89198da2eb8aed.html)
主要技术点: 具体.bat脚本主要来源于网络,文件放置在agv_dev_platform->User目录下,编译脚本将生成svnversion.h文件,文件内容仅是SVN_REVISION的一个宏,最终程序使用这个宏进行版本显示即可
配置方法: 在程序编译之前执行更新svnversion.h文件,具体操如下 IAR->右击工程options->Build Actions->Pre-build Actions
2.编译工程的同时更新编译时间,一键编译IAR工程同时生成hex,bin,out文件
目的: 在指定工程目录下Exe文件夹下生成类似“F4-20180815-180547”的文件夹,同时文件夹中包含以文件为名的bin、hex、out文件,方便版本定位和调试
前提: IAR必须配置为生成hex文件,且名字为project,具体操作如下 IAR->右击工程options->Output Converter->Output->output format选择Interl Extended hex并勾上Generate additional output IAR必须配置为生成project.out文件,具体操作如下 IAR->右击工程options->Linker->Output中填写project.out
主要技术点: 文件主要涉及到两个脚本,具体内容已经放置在project->batcmd下面,重新编译指定文件主要是删除指定文件的.O文件,一键编译主要流程为在程序编译结束之后将hex和out文件重新命名,同时移动到一个以时间戳命名的文件夹内,最后再增加一个由hex转化成bin的文件
配置方法: 在程序编译之前执行更新svnversion.h文件,具体操如下 IAR->右击工程options->Build Actions->Post-build Actions Configuration->增加命令“$PROJ_DIR$..atcmd
ename.bat EWARMv8-App app-agv main_app project F4-” 命令内容根据不同的工程可能会有些许的不同,务必填写,脚本中需要其中的参数去找到固件对应的目录,每个参数分析如下
- 命令:$PROJ_DIR$..atcmd ename.bat /* 执行重命名脚本 */
- 参数1:EWARMv8-App/* 该名字来源于工程名,工程吗是什么填写什么 */
- 参数2:app-agv/* 该名字来源于configurations,项目是叫什么填写什么 */
- 参数3:main_app/* 该名字来为指定需要重新编译的文件,目前工程中F4使用main_app,F1使用main_stm32f10x_app */
- 参数4:project/* 暂时规定为project不可以修改,其为out和bin的文件名 */
- 参数5:F4-/* 暂时规定F4统一使用F4-,F1统一使用F1-,该参数主要为生成目的固件名字的头 */
附件:
1 @echo off 2 set src_dir=%~dp0 3 for /f "delims=" %%i in ('svn info ^| findstr "Revision"') do set rev=%%i 4 set rev=%rev:~10% 5 echo #define SVN_REVISION %rev% > "%src_dir%"svnversion.h