创建目标升级固件
- 进入SDK_Folder\projects\ble\ble_peripheral\ble_app_template_dfu目录,拷贝ble_app_template_dfu,重命名为ble_app_template_dfu_mine,然后在keil中打开该工程。相关文件说明如表 4所示。
表 4 ble_app_template_dfu文件说明 Group 描述 gr_profiles
Service源文件添加
user_callback
用户定义的BLE回调函数
user_platform
用户外设初始化
user_app
用户应用逻辑实现
- 按照以下步骤创建用于升级的目标固件文件。
说明:
目标固件为bin格式的文件。
- 为目标固件命名。
将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" /**< Device Name which will be set in GAP. */
- 修改扫描应答所使用的名称
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, };
说明:如需了解广播名配置详情,请参考Bluetooth Core_Spec中的Advertising and Scan Response Data Format(Vol 3,Part C)。
- 修改设备广播名
- 修改Load Address和Run Address。打开custom_config.h文件,为防止覆盖已下载的Boot固件,确保APP_CODE_RUN_ADDR和APP_CODE_LOAD_ADDR为0x01040000,如下所示:
#define APP_CODE_RUN_ADDR 0x01040000 /**<Code run address. */ #define APP_CODE_LOAD_ADDR 0x01040000 /**<Code save address in flash. */
说明:使用Boot跳转升级方式时,用户需要根据固件大小,规划Flash布局。升级目标固件的Load Address不能覆盖Boot固件(ble_dfu_boot.bin)的Load Address。
- 生成bin文件。
重新编译工程,编译完成后在ble_app_template_dfu_mine\Keil_5\build文件夹中生成的ble_tem_dfu.bin文件为最新固件。
- 为目标固件命名。