CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
文档中心 > GR5xx固件升级开发指南/ 使用GRToolbox升级/ 非加密非加签固件升级 Copy URL

非加密非加签固件升级

固件配置

使用GRToolbox工具进行升级时,将使用两个工程:
  • SDK_Folder\projects\ble\dfu\app_bootloader\Keil_5工程
  • SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu\Keil_5工程
  1. 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

  2. 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固件为启动固件,固件烧录如下图所示。

图 14 固件烧录

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

图 15 Log信息

创建目标升级固件

进入SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu目录,拷贝ble_app_template_dfu,重命名为ble_app_template_dfu_mine,然后在Keil中打开该工程。按照如下步骤创建用于升级的目标固件文件:

  1. 命名目标固件。
    user_app.c(路径: SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu_mine\Src\user)中的设备广播名修改为 Goodix_Tem_New,操作如下:
    1. 修改设备广播名。
      #define DEVICE_NAME "Goodix_Tem_New" 
    2. 修改扫描应答所使用的名称。
      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,
      };
  2. 修改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
  3. 生成bin文件。
    1. 重新编译工程,编译后在ble_app_template_dfu_mine\keil_5\Listings文件夹中生成ble_app_template_dfu.bin文件为最新固件。
    2. 由Keil生成的固件在固件尾部不存在固件信息,而在升级时,传输的固件需要包含固件信息。因此,在Keil生成bin文件后,还需将ble_app_template_dfu.bin文件导入GProgrammer。
    3. 导入GProgrammer后,在ble_app_template_dfu_mine\keil_5\Listings路径下生成ble_app_template_dfu_fw.bin文件,如下图所示。
      图 16 目标固件生成界面
    4. 将生成的目标升级固件ble_app_template_dfu_fw.bin存入手机根目录下。

进入GRToolbox升级界面

进入GRToolbox升级界面有两种方式:

  • 通过点击页面上方的 进入
  • 通过DFU应用进入
    说明:

    GRToolbox界面图片中的参数均以GR551x为例。

下面分别介绍上述两种方式。

  • 通过点击页面上方的 进入
    1. 打开手机端GRToolbox APP,设备列表中选择Goodix_Tem_DFU并连接(如图 17)。
    2. 点击页面上方的 升级按钮(如图 18),此时会跳转进入DFU升级界面(如图 19)。
    图 17 选择“Goodix_Tem_DFU”
    图 18 点击升级按钮
    图 19 DFU升级界面
  • 通过DFU应用进入
    1. 打开手机端GRToolbox,在界面下方选项卡中选择应用,然后点击DFU应用,如图 20所示。
    2. 进入DFU升级界面(如图 21),此时显示未连接设备,点击界面下方连接按钮,进入连接设备界面,如图 22所示。
    3. 在设备列表中选择Goodix_Tem_DFU,进入升级模式,如图 23所示。
图 20 点击“DFU”应用
图 21 DFU升级界面
图 22 扫描设备
图 23 进入升级模式

固件升级

本节主要介绍后台双区升级模式及非后台单区升级模式的详细操作。

后台双区升级模式

  1. 进入GRToolbox界面后,点击选择文件按钮,选择存入手机根目录的ble_app_template_dfu_fw.bin固件,勾选双区升级模式
  2. 勾选双区升级模式后,下方出现拷贝地址(如图 24所示)。

    默认情况下,该地址置灰,不可修改。若发现该地址有误,可点击界面右上角 后,勾选自定义拷贝地址,即可修改拷贝地址,如图 26所示。

    图 25快速模式写控制点选项介绍如下:

    • 快速模式:选择当前升级方式是否使能快速模式,如果取消勾选快速模式,当前升级过程中将采用普通DFU模式,速度较慢。
    • 写控制点:下发开始设备DFU任务的命令。实际应用中为减小功耗,DFU任务并非始终运行。当手机端连接的设备此时的DFU任务尚未运行,并且需要在开始升级前,通过GRToolbox获取固件信息,可通过点击写控制点,下发启动DFU任务命令的方式唤醒DFU任务运行。关于DFU任务停止以及启动的机制请参考DFU移植方式详解
    图 24 勾选“双区升级模式”
    图 25 自定义拷贝地址
    图 26 修改拷贝地址
  3. 点击升级按钮进行升级,如图 27所示,升级过程会有进度条标明升级进度。升级完成后,在界面底部会提示升级完成。

    在创建目标升级固件时,已将广播名更改为 Goodix_Tem_New,因此,为了验证当前升级是否完成,可搜索有无广播名为Goodix_Tem_New的固件。如图 28所示,可搜索到该设备,说明升级成功。

    图 27 升级进度
    图 28 搜索“Goodix_Tem_New”

非后台单区升级模式

非后台单区升级模式有两种场景:

  • 当前固件运行在ble_app_template_dfu。
  • 应用固件损坏,当前固件运行在App bootloader。

下面将分别介绍两种场景的操作步骤。

  • 当前固件运行在ble_app_template_dfu。

    非后台单区升级模式的步骤与后台双区升级模式的基本一致。

    1. 进入手机端GRToolbox时,同样搜索Goodix_Tem_DFU,连接后进入升级界面,然后勾选单区升级模式,如图 29所示。
    2. 如需选择快速模式,则点击界面右上角,勾选快速模式(如图 30所示)。
    3. 设置完成后,点击升级

      此模式下进入升级进度条之前所耗时间要比后台双区升级模式多,因为当前需要从ble_app_template_dfu固件跳转至app_bootloader固件并进行重连,重连后便进入升级进度条(如图 31所示)。升级完成后,会在界面底部提示。

      图 29 勾选“单区升级模式”
      图 30 勾选“快速模式”
      图 31 升级进度
  • 当前固件运行在App bootloader

    当应用固件损坏或当前没有应用固件时,则需要在app_bootloader中进行固件升级。其操作与在ble_app_template_dfu中的基本一致,区别在于广播名称不同,需要连接的广播名称为Bootloader_OTA,连接后的操作同在ble_app_template_dfu中升级是一致的,此处不再赘述,可参考当前固件运行在ble_app_template_dfu的升级步骤

扫描关注

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