nRF51 SDK - S310 SoftDevice
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
DFU Transport Layers

DFU Transport Layers

DFU itself is designed to be transport agnostic, and assumes the transport to be reliable. Since all transports have fix a maximum data unit, it is possible for DFU to reassemble the binary firmware in smaller fragments. The transport may create multiple logical channels, for example in BLE, two logical end points are created one for control packets (DFU messages) and the other for data packets (Init Data and Binary Firmware fragments). However, the DFU expects the transport to submit it one Data Unit at time. For example, if the transport has multiple DFU Packets, the transport should ensure that only one packet is submitted to the DFU at any given point of time and in the correct chronological order. DFU does not detect out-of-sequence packets. It expects the transport to ensure this.

The Bootloader/DFU example supports two transport layers

  • Bluetooth Low Energy, BLE
  • UART (HCI)

The BLE Transport Layer is described in DFU Service Specification and DFU Profile Specification.

The Serial (HCI) Transport Layer is described in Serial (HCI)

The DFU module supports only binary data images on transferring. This means that an application in HEX or AXF (ELF) file format must be converted into a binary file for the DFU to be able to process the image.

The binary image can be transferred in multiple data packets over Serial or BLE.

Section Description
DFU Serial Transport Description of the DFU Serial Wire transport layer
DFU BLE Transport Description of the DFU BLE transport layer