Device Firmware Update#

Device Firmware Update.

These commands and events are related to controlling firmware updates over the configured host interface and are available only when the device is booted in DFU mode. DFU process:

  1. Boot device to DFU mode with the Bootloader interface

  2. Wait for sl_bt_evt_dfu_boot event

  3. Send command sl_bt_dfu_flash_set_address command to start the firmware update

  4. Upload the firmware with sl_bt_dfu_flash_upload commands until all data is uploaded

  5. Send sl_bt_dfu_flash_upload_finish command when all data is uploaded

  6. Finalize DFU firmware update with sl_bt_system_reset command

DFU mode is using the UART baudrate set in bootloader.

Modules#

sl_bt_evt_dfu_boot

sl_bt_evt_dfu_boot_failure

Functions#

sl_status_t
sl_bt_dfu_flash_set_address(uint32_t address)
sl_status_t
sl_bt_dfu_flash_upload(size_t data_len, const uint8_t *data)

Function Documentation#

sl_bt_dfu_flash_set_address#

sl_status_t sl_bt_dfu_flash_set_address (uint32_t address)
Parameters
[in]address

The offset in the flash where the new firmware is uploaded to. Always use the value 0x00000000.

After re-booting the local device in DFU mode, this command defines the starting address on the flash where the new firmware will be written.

Returns

  • SL_STATUS_OK if successful. Error code otherwise.


Definition at line 191 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_dfu_flash_upload#

sl_status_t sl_bt_dfu_flash_upload (size_t data_len, const uint8_t * data)
Parameters
[in]data_len

Length of data in data

[in]data

An array of data which will be written onto the flash.

Upload the whole firmware image file into the Bluetooth device. The passed data length must be a multiple of 4 bytes. Because the BGAPI command payload size is limited, multiple commands need to be issued one after the other until the whole firmware image file is uploaded to the device. After each command, the next address of the flash sector in memory to write to is automatically updated by the bootloader.

Returns

  • SL_STATUS_OK if successful. Error code otherwise.


Definition at line 208 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_dfu_flash_upload_finish#

sl_status_t sl_bt_dfu_flash_upload_finish ()

Inform the device that the DFU file is fully uploaded. To return the device back to normal mode, issue the command sl_bt_system_reset.

Returns

  • SL_STATUS_OK if successful. Error code otherwise.


Definition at line 219 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

Macro Definition Documentation#

sl_bt_cmd_dfu_flash_set_address_id#

#define sl_bt_cmd_dfu_flash_set_address_id
Value:
0x01000020

Definition at line 129 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_cmd_dfu_flash_upload_id#

#define sl_bt_cmd_dfu_flash_upload_id
Value:
0x02000020

Definition at line 130 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_cmd_dfu_flash_upload_finish_id#

#define sl_bt_cmd_dfu_flash_upload_finish_id
Value:
0x03000020

Definition at line 131 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_rsp_dfu_flash_set_address_id#

#define sl_bt_rsp_dfu_flash_set_address_id
Value:
0x01000020

Definition at line 132 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_rsp_dfu_flash_upload_id#

#define sl_bt_rsp_dfu_flash_upload_id
Value:
0x02000020

Definition at line 133 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h

sl_bt_rsp_dfu_flash_upload_finish_id#

#define sl_bt_rsp_dfu_flash_upload_finish_id
Value:
0x03000020

Definition at line 134 of file /mnt/raid/workspaces/ws.pY3F1RWXq/overlay/gsdk/protocol/bluetooth/build_release/bt_api/sw/bgapi/inc/sl_bt_api.h