Ping
1. after build脚本功能
Keil 的“After Build”可以指定一个可执行程序或批处理文件在成功 build 之后运行。SDK中build\scripts目录的after_build.bat脚本在Keil 完成 building 后会被自动执行,它会调用 ble_tools.exe 工具读取用户配置文件custom_config.h中的配置参数,在keil编译生成固件的基础上加工生成新固件,汇顶下载工具 GProgrammer工具会识别固件中的相关信息,烧录时将固件下载到Flash指定位置。
2. 脚本配置方法
SDK中的工程默认已添加after_build.bat文件在“After Build”中,开发者无需再手动配置“After Build” ,如果开发者新建一个工程,则需要按照以下步骤配置 After Build:
(1) 点击 Keil Toolbar 的“ Options for Target”按钮 ,打开“ Options for Target‘GR551x_SK’”对话框。选中“User”标签页;
(2) 在“ After Build/Rebuild”展开的选项中勾选“ Run #1”,然后点击 浏览选择SDK_Folder\build\scripts 下的 after_build.bat 文件,或者先将 SDK_Folder\build\scripts 下的after_build.bat 文件复制到工程目录再选择它;
(3) 点击“OK”,保存设置;
备注: after_build.bat 中含有一些相对路径,比如 SDK tools 目录的路径,如果该批处理文件不再位于 SDK_Folder\build\scripts 中了,开发者应该修改这些相对路径,以避免 AfterBuild Error。配置方法如下图所示:
3. 编译生成的固件说明
(1) 以1.6.12版本SDK ble_app_template_freertos例程为例,编译后生成的文件如下:
ble_app_template_freertos.axf:除了包含代码数据外,还包括输出给调试器的调试信息;
ble_app_template_freertos.map:用于反映各个函数模块之间的调用关系以及在flash和SRAM中的分布情况 ;
ble_app_template_freertos.s:反汇编后生成的汇编代码,用于定位代码的运行状态;
ble_app_template_freertos_fw.bin:keil 生成的.bin文件基础上, 在末尾添加了 img info 的信息 ,用于gprogrammer下载;
ble_app_template_freertos_encrypt_fw.bin:加密后的_fw.bin文件,用于gprogrammer下载;
load_app.hex: 记录了代码存储位置的十六进制的ble_app_template_freertos_fw.bin,被引用于download.ini 文件,使得在keil 中实现程序下载,用于keil 下载;
load_app_encrypt.hex:加密后的 load_app.hex文件,用于keil 下载;
4. 脚本关键语句说明(基于1.6.12版本SDK)
(1) %TOOL_PATH%\ble_tools.exe --mode=gen_fw
根据原固件加工生成其他固件,如 info.bin、 header.bin、ble_app_uart_fw.bin、 ble_app_uar、t_fw.dap.binble_ap_uart_fw.hex。
A:info.bin —存放 boot info,
Boot_Info(32Byte)区域中存储了 Firmware 启动信息,Bootloader会根据启动信息,校验和跳转到Firmware的入口地址。
B:header.bin —存放 img info,Img_Info区域存储了最多10个Firmware信息,当使用 GProgrammer下载Firmware或使用DFU升级Firmware时,Firmware 信息会被存储到 Img_Info区域。
原固件和info.bin/header.bin的组合生成其它固件,关于Boot_Info和Img_Info的详细信息请参考《GR551x开发者指南》2.4.1章节说明。
(2) %FW_ENCRYPT_SIGN_TOOL_PATH%\generate_encrypt_bin.exe
对 ble_app_template_freertos_fw.bin 进 行 加 密 生 成ble_app_template_freertos_encrypt_fw.bin。
(3) %TOOL_PATH%\ble_tools.exe --mode=encrypt
通过入参中的...\smt.bin 生成入参中最后一个参数所示的文件 “Efuse_SWD_Disable_0_Encry_Mode_1_0X0016A286”,可以通过配置%SWD_DISENABLE%和%ENCRY_ENABLE%参数,来开启/关闭 swd,开启/关闭加密。
Efuse_SWD_Disable_0_Encry_Mode_1_0X0016A286 用于 keil 实现芯片的加密,现在的策略是用 gprogrammer 进行加密,不建议使用,详情参考《GR551x固件加密及应用介绍》说明。
(4) %TOOL_PATH%\ble_tools.exe --mode=bin2hex
把二进制.bin 文件转化为记录了代码存储位置的十六进制.hex 文件。
Ping
打开微信,使用“扫一扫”即可关注