DFU types

nRF5 SDK v15.0.0

Data Structures

struct nrf_dfu_bank_t
Description of a single bank. More...
struct dfu_progress_t
struct nrf_dfu_settings_t
DFU settings for application and bank data. More...

Macros

#define INIT_COMMAND_MAX_SIZE 256
#define CODE_PAGE_SIZE ( MBR_PAGE_SIZE_IN_WORDS * sizeof(uint32_t))
Size of a flash page. This value is used for calculating the size of the reserved flash space in the bootloader region.
#define DATA_OBJECT_MAX_SIZE ( CODE_PAGE_SIZE )
Maximum size of a data object.
#define BOOTLOADER_SETTINGS_PAGE_SIZE ( CODE_PAGE_SIZE )
Page location of the bootloader settings address.
#define NRF_UICR_MBR_PARAMS_PAGE_ADDRESS (NRF_UICR_BASE + 0x18)
MBR parameters page in UICR. More...
#define NRF_MBR_PARAMS_PAGE_SIZE ( CODE_PAGE_SIZE )
#define DFU_APP_DATA_RESERVED ( CODE_PAGE_SIZE * 3)
Page location of the MBR parameters page address. More...
#define DFU_REGION_END (bootloader_start_addr)   ((bootloader_start_addr) - ( DFU_APP_DATA_RESERVED ))
Total size of the region between the SoftDevice and the bootloader.
#define DFU_REGION_START ( nrf_dfu_bank0_start_addr ())
#define DFU_REGION_TOTAL_SIZE (( DFU_REGION_END ) - (DFU_REGION_START))
#define NRF_DFU_CURRENT_BANK_0 0x00
#define NRF_DFU_CURRENT_BANK_1 0x01
#define NRF_DFU_BANK_LAYOUT_DUAL 0x00
#define NRF_DFU_BANK_LAYOUT_SINGLE 0x01
#define NRF_DFU_BANK_INVALID 0x00
DFU bank state codes. More...
#define NRF_DFU_BANK_VALID_APP 0x01
#define NRF_DFU_BANK_VALID_SD 0xA5
#define NRF_DFU_BANK_VALID_BL 0xAA
#define NRF_DFU_BANK_VALID_SD_BL 0xAC

Typedefs

typedef void(* nrf_dfu_observer_t )( nrf_dfu_evt_type_t notification)
Function for notifying DFU state.

Variables

ANON_UNIONS_ENABLE
DFU progress. More...
ANON_UNIONS_DISABLE

Detailed Description

Macro Definition Documentation

#define DFU_APP_DATA_RESERVED   ( CODE_PAGE_SIZE * 3)

Page location of the MBR parameters page address.

Size (in bytes) of the flash area reserved for application data.

The area is found at the end of the application area, next to the start of the bootloader. This area will not be erased by the bootloader during a firmware upgrade. The default value is 3 pages which matches the size used in most SDK examples.

#define INIT_COMMAND_MAX_SIZE   256

Maximum size of the init command stored in dfu_settings.

#define NRF_DFU_BANK_INVALID   0x00

DFU bank state codes.

The DFU bank state indicates the content of a bank: A valid image of a certain type or an invalid image.Invalid image.

#define NRF_DFU_BANK_VALID_APP   0x01

Valid application.

#define NRF_DFU_BANK_VALID_BL   0xAA

Valid bootloader.

#define NRF_DFU_BANK_VALID_SD   0xA5

Valid SoftDevice.

#define NRF_DFU_BANK_VALID_SD_BL   0xAC

Valid SoftDevice and bootloader.

#define NRF_UICR_MBR_PARAMS_PAGE_ADDRESS   (NRF_UICR_BASE + 0x18)

MBR parameters page in UICR.

Register location in UICR where the page address of the MBR parameters page is stored (only used by the nRF52 MBR).

Note
If the value at the given location is 0xFFFFFFFF, no MBR parameters page is set.

Enumeration Type Documentation

Event types in the bootloader and DFU process.

Enumerator
NRF_DFU_EVT_DFU_INITIALIZED

Starting DFU.

NRF_DFU_EVT_TRANSPORT_ACTIVATED

Transport activated (e.g. BLE connected, USB plugged in).

NRF_DFU_EVT_TRANSPORT_DEACTIVATED

Transport deactivated (e.g. BLE disconnected, USB plugged out).

NRF_DFU_EVT_DFU_STARTED

DFU process started.

NRF_DFU_EVT_OBJECT_RECEIVED

A DFU data object has been received.

NRF_DFU_EVT_DFU_FAILED

DFU process has failed, been interrupted, or hung.

NRF_DFU_EVT_DFU_COMPLETED

DFU process completed.

NRF_DFU_EVT_DFU_ABORTED

DFU process aborted.

Variable Documentation

ANON_UNIONS_ENABLE

DFU progress.

Be aware of the difference between objects and firmware images. A firmware image consists of multiple objects, each of a maximum size DATA_OBJECT_MAX_SIZE .

Note
The union inside this struct is cleared when CREATE_OBJECT of command type is executed, and when there is a valid post-validation. In DFU activation (after reset) the dfu_progress_t::update_start_address will be used in case of a SD/SD+BL update.