The bootloader and DFU modules are used in the bootloaders provided as part of this SDK (Secure Bootloader, Open Bootloader with DFU), but you can also use them to build your own, custom bootloader.
A basic bootloader will start an application that is located at a specific place in memory, so you can use such a bootloader, for example, to switch between several applications or to initialize the device before you start the application.
The most important feature provided by the bootloader module is the Device Firmware Update (DFU) functionality. Major features of DFU are:
- updating the application, SoftDevice and bootloader,
- updates from authenticated source (signed updates),
- downgrade prevention,
- hardware compatibility validation,
- various transports: (BLE, UART, USBD),
- support for the application update with and without a SoftDevice,
- support for replacing SoftDevice dependent firmware with SoftDevice independent firmware,
- support for replacing SoftDevice independent firmware with SoftDevice dependent firmware.
For a DFU bootloader that uses ANT, see the Experimental: ANT Bootloader/DFU example.
The following figure shows the layer architecture of the bootloader modules:
See the following pages for more information about the modules that are available:
Additionally, see the information about the Cryptography library - nrf_crypto (nrf_crypto), which can be used to implement security features and signing for the DFU bootloader.
See also DFU Trigger Library (USB) nRF52840 only (nrf_dfu_trigger_usb)
The Secure Bootloader and Open Bootloader with DFU examples are a full implementation of a bootloader that allows secure and open Device Firmware Updates over various transports.