自動生成版本信息,重新編譯指定文件,一鍵編譯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$\..\batcmd\rename.bat EWARMv8-App app-agv main_app project F4-” 命令內容根據不同的工程可能會有些許的不同,務必填寫,腳本中需要其中的參數去找到固件對應的目錄,每個參數分析如下
- 命令:$PROJ_DIR$\..\batcmd\rename.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
