Using the USB Device Firmware Upgrade (DFU) class a firmware upgrade function can be simply added to any USB device. Due to the standard protocol usual tools (like dfu-util) can be used on the host to perform a firmware upgrade of the USB device. Upload of firmware images is also supported.
The DFU class can be combined with any other USB class and does not require additional endpoints.
The DFU class supports two operation modes: Runtime and DFU mode. In runtime mode the USB device performs its normal operation and signals the host the DFU capability. But in this mode it is not able to accept firmware downloads. The host may switch the USB device into DFU mode, in which firmware upgrades can be done. This is helpful if the firmware of the USB device is separated into a runtime firmware and a bootloader.
It is also possible to run the DFU component in a single configuration mode, where firmware downloads can be processed in normal operation mode of the USB device.