CN / EN
CN / EN

提问

获得支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

GR551X SDK中after_build.bat脚本及固件格式说明(仅适用于1.7.0之前SDK版本) GR551x

已解决

Ping

汇顶员工
2021-12-16 12:18

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 文件。

1收藏

4赞成

最佳答案

Ping

汇顶员工
2022-01-14 11:01


1条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注