非加密非加签固件升级
固件配置
- SDK_Folder\projects\ble\dfu\app_bootloader\Keil_5工程
- SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu\Keil_5工程
- App bootloader工程配置
对于非加密非加签固件升级的App bootloader工程配置项如下表所示:说明:
- bootloader_config.h文件路径:SDK_Folder\projects\ble\dfu\app_bootloader\Src\config
- custom_config.h文件路径:SDK_Folder\projects\ble\dfu\app_bootloader\Src\config
表 9 App bootloader工程配置项(非加密非加签固件升级) 文件名 宏 值 bootloader_config.h
BOOTLOADER_DFU_BLE_ENABLE
1:打开蓝牙升级
BOOTLOADER_DFU_UART_ENABLE
0:关闭串口升级
BOOTLOADER_WDT_ENABLE
1:打开看门狗
BOOTLOADER_SIGN_ENABLE
0:关闭验签
BOOTLOADER_BOOT_PORT_ENABLE
0:使用GR5xx DFU方案
APP_FW_COMMENTS
"ble_app_temp"
DFU_FW_SAVE_ADDR
(FLASH_START_ADDR + 0x30000)
说明:
不同芯片FLASH_START_ADDR可能不同。
custom_config.h
APP_LOG_ENABLE
1:打开Log输出
APP_CODE_LOAD_ADDR
(Flash_START_ADDR+0x40000)
说明:
不同芯片FLASH_START_ADDR可能不同。
APP_CODE_RUN_ADDR
- ble_app_template_dfu工程配置
说明:
- custom_config.h文件路径:SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu\Src\config
- user_periph_setup.c文件路径:SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu\Src\platform
表 10 ble_app_template_dfu工程配置项(非加密非加签固件升级) 文件名 宏 值 custom_config.h
APP_CODE_LOAD_ADDR
0x01030000
说明:
不同芯片地址可能不同。
APP_CODE_RUN_ADDR
user_periph_setup.c
DFU_FW_SAVE_ADDR
(FLASH_START_ADDR + 0x60000)
说明:
Flash布局中Bank1区域的起始地址,不可与Bank0以及App bootloader区域重叠
固件烧录
编译App bootloader工程和ble_app_template_dfu工程,生成app_bootloader.bin固件和ble_app_template_dfu.bin固件,将固件导入至GProgrammer烧录,设置app_bootloader固件为启动固件,固件烧录如下图所示。

固件烧录完成后,串口输出的Log信息如下图所示。

创建目标升级固件
进入SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu目录,拷贝ble_app_template_dfu,重命名为ble_app_template_dfu_mine,然后在Keil中打开该工程。按照如下步骤创建用于升级的目标固件文件:
- 命名目标固件。
将 user_app.c(路径: SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu_mine\Src\user)中的设备广播名修改为 Goodix_Tem_New,操作如下:
- 修改设备广播名。
#define DEVICE_NAME "Goodix_Tem_New"
- 修改扫描应答所使用的名称。
static const uint8_t s_adv_rsp_data_set[] = { // Complete Name 0x0f, BLE_GAP_AD_TYPE_COMPLETE_NAME, 'G', 'o', 'o', 'd', 'i', 'x', '_', 'T', 'e', 'm', '_', 'N', 'e', 'w', // Manufacturer specific adv data type 0x05, BLE_GAP_AD_TYPE_MANU_SPECIFIC_DATA, // Goodix SIG Company Identifier: 0x04F7 0xF7, 0x04, // Goodix specific adv data 0x02, 0x03, };
- 修改设备广播名。
- 修改Load Address和Run Address,以GR551x为例,修改APP_CODE_RUN_ADDR和APP_CODE_LOAD_ADDR为0x01030000,其他系列芯片请参考Flash布局或Flash布局填写,如下所示:
表 11 修改Load Address和Run Address 文件名 宏 值 custom_config.h
APP_CODE_LOAD_ADDR 0x01030000
APP_CODE_RUN_ADDR - 生成bin文件。
- 重新编译工程,编译后在ble_app_template_dfu_mine\keil_5\Listings文件夹中生成ble_app_template_dfu.bin文件为最新固件。
- 由Keil生成的固件在固件尾部不存在固件信息,而在升级时,传输的固件需要包含固件信息。因此,在Keil生成bin文件后,还需将ble_app_template_dfu.bin文件导入GProgrammer。
- 导入GProgrammer后,在ble_app_template_dfu_mine\keil_5\Listings路径下生成ble_app_template_dfu_fw.bin文件,如下图所示。
图 16 目标固件生成界面 - 将生成的目标升级固件ble_app_template_dfu_fw.bin存入手机根目录下。
进入GRToolbox升级界面
进入GRToolbox升级界面有两种方式:
- 通过点击页面上方的
进入
- 通过DFU应用进入
说明:
GRToolbox界面图片中的参数均以GR551x为例。
下面分别介绍上述两种方式。
- 通过点击页面上方的
进入
图 17 选择“Goodix_Tem_DFU” 图 18 点击升级按钮 图 19 DFU升级界面 - 通过DFU应用进入
![]() |
![]() |
![]() |
![]() |
固件升级
本节主要介绍后台双区升级模式及非后台单区升级模式的详细操作。
后台双区升级模式
- 进入GRToolbox界面后,点击选择文件按钮,选择存入手机根目录的ble_app_template_dfu_fw.bin固件,勾选双区升级模式。
- 勾选双区升级模式后,下方出现拷贝地址(如图 24所示)。
默认情况下,该地址置灰,不可修改。若发现该地址有误,可点击界面右上角
后,勾选自定义拷贝地址,即可修改拷贝地址,如图 26所示。
图 25中快速模式和写控制点选项介绍如下:
- 快速模式:选择当前升级方式是否使能快速模式,如果取消勾选快速模式,当前升级过程中将采用普通DFU模式,速度较慢。
- 写控制点:下发开始设备DFU任务的命令。实际应用中为减小功耗,DFU任务并非始终运行。当手机端连接的设备此时的DFU任务尚未运行,并且需要在开始升级前,通过GRToolbox获取固件信息,可通过点击写控制点,下发启动DFU任务命令的方式唤醒DFU任务运行。关于DFU任务停止以及启动的机制请参考DFU移植方式详解。
图 24 勾选“双区升级模式” 图 25 自定义拷贝地址 图 26 修改拷贝地址 - 点击升级按钮进行升级,如图 27所示,升级过程会有进度条标明升级进度。升级完成后,在界面底部会提示升级完成。
在创建目标升级固件时,已将广播名更改为 Goodix_Tem_New,因此,为了验证当前升级是否完成,可搜索有无广播名为Goodix_Tem_New的固件。如图 28所示,可搜索到该设备,说明升级成功。
图 27 升级进度 图 28 搜索“Goodix_Tem_New”
非后台单区升级模式
非后台单区升级模式有两种场景:
- 当前固件运行在ble_app_template_dfu。
- 应用固件损坏,当前固件运行在App bootloader。
下面将分别介绍两种场景的操作步骤。
- 当前固件运行在ble_app_template_dfu。
非后台单区升级模式的步骤与后台双区升级模式的基本一致。
- 当前固件运行在App bootloader
当应用固件损坏或当前没有应用固件时,则需要在app_bootloader中进行固件升级。其操作与在ble_app_template_dfu中的基本一致,区别在于广播名称不同,需要连接的广播名称为Bootloader_OTA,连接后的操作同在ble_app_template_dfu中升级是一致的,此处不再赘述,可参考当前固件运行在ble_app_template_dfu的升级步骤。