加密加签固件升级
将系统设置成加密模式,需要设置eFuse,eFuse中存放着产品配置信息、安全模式控制信息以及用于加密加签的各种密钥信息,因此如果尚未下载过设置信息至eFuse中,需要先进行eFuse设置,然后将设置信息下载至eFuse。用户可点击GProgrammer工具左侧工具栏中的Encrypt & Sign进入芯片加密操作界面,如下图所示。

GR5405、GR533x系列芯片支持加签,但不支持加密加签。
eFuse设置
用户可通过GProgrammer中的Encrypt & Sign指定产品的Name、ID和Firmware Key,并配置Security Mode和SWD接口,生成存储在eFuse中的相关文件。

eFuse是芯片内部的一个具有随机访问接口的一次性可编程存储器。图 34中参数说明如下:
- Firmware Key:可使用软件自动生成的随机Key,也可使用用户自行添加的Key文件。
- Security Mode:选择Open将启用芯片安全模式,该模式开启后不能被关闭。
- SWD:选择Close将关闭SWD功能,开发者依然可以通过DFU对固件进行升级。
- Batch eFuse:可指定生成相应数量的数据密钥文件,以支持一机一密的使用场景。若不勾选则只会生成一个数据密钥文件。
生成的文件包括:

- efuse.json:临时文件。
- Encrypt_key_info.bin、2_Encrypt_key_info.bin、3_Encrypt_key_info.bin:eFuse下载文件,包含产品及加密加签信息。此文件需下载至eFuse。
- firmware.key:用于加密固件的私钥。
- Mode_control.bin:eFuse下载文件,包含Security Mode和SWD信息。此文件需下载至eFuse。
- product.json:产品信息文件。当固件加密加签时,需导入此文件。
- sign.key:用于生成签名的私钥。
- sign_pub.key:用于验证签名的公钥。
- Public_key_hash.txt:用于验证签名的公钥Hash。
为了方便用户下载文件至eFuse或加密加签固件,生成的Encrypt_key_info.bin和Mode_control.bin文件的路径将被默认添加至Download区域,产品信息文件product.json的路径被默认添加至Encrypt and Sign的Product Info中。

eFuse下载
若用户已执行eFuse设置操作,可直接点击Download to eFuse将文件下载至eFuse中。否则,需先手动选择添加Encrypt_key_info.bin和Mode_control.bin文件,然后才能下载。

固件配置
对于加密加签固件的升级,需要配置app_bootloader和ble_app_template_dfu工程相关参数,才能在跳转应用固件之前对应用固件进行正确校验。
- app_bootloader工程的bootloader_config.h文件路径:SDK_Folder\projects\ble\dfu\app_bootloader\Src\config
- ble_app_template_dfu工程的custom_config.h文件路径:SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu\Src\config
文件名 | 宏 | 值 |
---|---|---|
bootloader_config.h |
BOOTLOADER_SIGN_ENABLE |
1:打开验签 |
BOOTLOADER_PUBLIC_KEY_HASH |
Public_key_hash.txt文件内的值 |
BOOTLOADER_PUBLIC_KEY_HASH是一组值,该值存放在图 35所示的Public_key_hash.txt文件中,将该文件中的数值复制到bootloader_config.h文件中的BOOTLOADER_PUBLIC_KEY_HASH宏定义中。
文件名 | 宏 | 值 |
---|---|---|
custom_config.h | SECURITY_CFG_VAL |
安全配置
各芯片支持的配置如下:
|
生成加密加签固件
在芯片加密模式下,固件需要加密加签后才可下载至Flash中运行。GProgrammer允许用户使用同一套产品信息和同一个Random Number加密加签多个固件文件。在 图 38所示:
中添加多个固件时,各固件的路径之间用分号隔开,如
在加密芯片中,需要对app_bootloader和ble_app_template_dfu固件同时进行加密,程序才能正确运行,加密加签后生成的文件如下图所示:

固件升级
加密加签固件在GRToolbox的升级操作与非加密非加签固件的操作基本一致,区别仅在于存放入手机的固件是加密加签固件,其他操作可参考固件升级。