文章目录
- 一 目的
- 二 步骤
- 2.1 打开 BK3633 的 app_gatt 的 Keil 工程文件
- 2.2 修改原始目标为 Debug 和新增 Release 目标
- 2.3 在 app_gatt\obj 目录中新增 debug 和 release 目录,用于存放各自对应的编译目标文件
- 2.4 修改 Debug 和 Release 目标生成的目标文件路径到上一步骤创建的 debug 和 release 目录
- 2.5 修改 Debug 和 Release 目标生成 bin 文件的 fromelf 命令的输入文件路径
- 2.6 修改 translate.bat 文件内容,使其输出带有版本号,编译日期,debug 或 release 字样的固件名
- 2.7 在 Debug 和 Release 目标执行 translate.bat 脚本时分别增加输入参数 debug 和 release
- 2.8 修改编译选项,源文件中判断宏定义是否定义,来区别 debug 和 release 版本
- 2.9 保存以上所有工程修改
- 三 执行
- 四 结果
一 目的
- 一次编译出 Debug 和 Release 版本,提高效率;
- 固件名自动填充版本号和编译日期,便于发布与调试。
二 步骤
2.1 打开 BK3633 的 app_gatt 的 Keil 工程文件
2.2 修改原始目标为 Debug 和新增 Release 目标
2.3 在 app_gatt\obj 目录中新增 debug 和 release 目录,用于存放各自对应的编译目标文件
2.4 修改 Debug 和 Release 目标生成的目标文件路径到上一步骤创建的 debug 和 release 目录
Debug 目标如下:
Release 目标如下:
2.5 修改 Debug 和 Release 目标生成 bin 文件的 fromelf 命令的输入文件路径
Debug 目标如下:
Release 目标如下:
2.6 修改 translate.bat 文件内容,使其输出带有版本号,编译日期,debug 或 release 字样的固件名
此处切记,编辑器默认的换行符必须是 CRLF,否则 bat 脚本将无法成功运行
translate.bat 内容如下:
:: 获取发布标记输入参数值
set RELEASE_FLAG=%1%
:: 由于不好同步代码里面版本号,所以此处也需要创建相同的版本变量,
:: 版本号变更时,此处也需要变更,才能使得生成 oad ota 升级文件变更版本号.
set APP_MAJOR_VER=1
set APP_MINOR_VER=0
:: 获取当前日期,例如:20220507
set /a APP_VER=(APP_MAJOR_VER "<<" 4) + APP_MINOR_VER
set BUILD_DATE=%date:~2,2%%date:~5,2%%date:~8,2%
:: SDK traslate.bat 自带内容
.\output\BinConvert -oad .\output\boot\bk3633_boot.bin .\output\stack\bk3633_stack.bin .\output\app\bk3633_app.bin -m 0x1F00 -l 0x25b00 -v %APP_VER% -rom_v 0x000D -e 00000000 00000000 00000000 00000000
:: 先修改文件名,再复制文件到组合了版本号、编译日期、发布版本标记的固件名文件,此处保留原始文件,是为了方便追踪
move .\output\app\bk3633_app_merge_crc.bin .\output\app\bk3633_app_merge_crc_%RELEASE_FLAG%.bin
move .\output\app\bk3633_app_oad.bin .\output\app\bk3633_app_oad_%RELEASE_FLAG%.bin
copy .\output\app\bk3633_app_merge_crc_%RELEASE_FLAG%.bin .\output\app\bk3633_app_merge_V%APP_MAJOR_VER%.%APP_MINOR_VER%_%BUILD_DATE%_%RELEASE_FLAG%.bin
copy .\output\app\bk3633_app_oad_%RELEASE_FLAG%.bin .\output\app\bk3633_app_oad_V%APP_MAJOR_VER%.%APP_MINOR_VER%_%BUILD_DATE%_OTA_%RELEASE_FLAG%.bin
2.7 在 Debug 和 Release 目标执行 translate.bat 脚本时分别增加输入参数 debug 和 release
Debug 目标如下:
Release 目标如下:
2.8 修改编译选项,源文件中判断宏定义是否定义,来区别 debug 和 release 版本
Debug 目标新增如下编译选项:
Release 目标不新增该编译选项
源文件中使用如下条件判断:
#ifdef APP_DEV_DEBUG
//debug 版本
#else
//release 版本
#endif
其实 Debug 和 Release 目标最主要的区别就在于调试打印信息是否输出
2.9 保存以上所有工程修改
三 执行
3.1 单独编译 Debug 目标
3.2 一次性编译 Debug 和 Release 目标
四 结果
一次性编译后,在目标目录下自动生成了如下文件,避免了每次发布版本需要手动添加版本号和编译日期等信息,提高了效率