Difference between revisions of "DFU"

From PaparazziUAV
Jump to navigation Jump to search
m (airframe configuration for default values)
Line 30: Line 30:
==Native DFU bootloader (embedded in ROM)==
==Native DFU bootloader (embedded in ROM)==


This bootloader is already embedded in the ROM of the MCU. <br/>
STM32F4 MCUs have a bootloader already embedded in the ROM. <br/>
The MCU will not go automatically in DFU mode. <br/>
The MCU will not go automatically in DFU mode. <br/>
To trigger DFU mode, connect pin BOOT0 with 3V (if it dowsn't work also connect BOOT1 with GND), Reset MCU, disconnect BOOT0 (and BOOT1).<br>
To trigger DFU mode, connect pin BOOT0 with 3V (if it dowsn't work also connect BOOT1 with GND), Reset MCU, disconnect BOOT0 (and BOOT1).<br>

Revision as of 06:28, 20 December 2014

DFU (Device Firmware Upgrade) is the standard method to upload new code to a STM32 MCU via USB.

There are two different DFU bootloader which require different software:

  • custom Luftboot/KroozSD bootloader which uses stm32_mem.py script
  • native (embedded in ROM) dfu bootloader which requires dfu-util

Custom bootloader (e.g.Luftboot,KroozSD)

This bootloader must be upload first, so paparazzi center can use stm32_mem.py to upload code to the MCU.
This bootloader is available for LisaM/Lia (Luftboot) and Krooz/kroozSD (KroozSD) boards.

Airframe configuration

To use custom DFU bootloader via USB as default:
Set FLASH_MODE=DFU

stm32_mem.py

stm32_mem.py will be used to upload the code.
To get a list of possible options, run:

sw/tools/dfu/stm32_mem.py --help

Native DFU bootloader (embedded in ROM)

STM32F4 MCUs have a bootloader already embedded in the ROM.
The MCU will not go automatically in DFU mode.
To trigger DFU mode, connect pin BOOT0 with 3V (if it dowsn't work also connect BOOT1 with GND), Reset MCU, disconnect BOOT0 (and BOOT1).


For further information, look at the STM's Application note

Airframe configuration

To use ROM based DFU via USB as default:
Set FLASH_MODE=DFU-UTIL

Needed software

dfu-util packet is needed for this bootloader.
Present in the current Ubuntu and Debian repo:

sudo apt-get install dfu-util

More information about dfu-util can be found at their Homepage http://dfu-util.gnumonks.org