Awesome
DFU Bootloader
This repository contains a generic USB device bootloader firmware for STM32 controllers.
Features
- Fully-featured DFU class (with support to STMicroelectronics protocol Extension) USB device
- Small footprint: consumes only 8kB flash with
-Os
(50% smaller than the STM32Cube solution) - The DFU interface is allocated to a fixed address, so it can be mounted on the application's USB device, allowing convenient entry to firmware update mode
- Easy to port on virtually any STM32 device that is supported by STM32_XPD
- C# CLI application available for performing the update: LibUsbDfu
How to build
Simply run make
with the following arguments:
Symbol Name | Use |
---|---|
SERIES | The series of the STM32 device |
TARGET_HEADER | String of the device-specific STM32_XPD header |
APP_ADDRESS | Value of the application's flash start address |
APP_SIZE | The total available flash space for the application in bytes |
TOTAL_ERASE_MS | Average erase time of the application flash area |
VID | Vendor ID of the USB device in hexadecimal format (no prefix) |
PID | Product ID of the USB device in hexadecimal format (no prefix) |
DFUSE | Set to 1 if DFUSE protocol is desired |
DESC_STR | DFUSE specific flash layout descriptor string |
BINPATH | Path to build toolchain binaries (/usr/bin by default) |
An example for an STM32F042K6 device with (VID,PID)={FFFF,FFFF}:
make TARGET_HEADER="\<stm32f042x6.h\>" SERIES=STM32F0 APP_ADDRESS=0x08002000 APP_SIZE=24568 TOTAL_ERASE_MS=480 VID=FFFF PID=FFFF
Further examples can be found in .travis.yml
.
Built with GCC. (arm-atollic-eabi- is preferred over arm-none-eabi- as it provides better size optimization)