Skip to content

Commit

Permalink
docs: improve stm32 embassy-usb-dfu example
Browse files Browse the repository at this point in the history
  • Loading branch information
badrbouslikhin committed Dec 5, 2024
1 parent 75a21e5 commit 78b536e
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions examples/boot/bootloader/stm32wb-dfu/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,37 @@
# Bootloader for STM32

The bootloader uses `embassy-boot` to interact with the flash.
This bootloader implementation uses `embassy-boot` and `embassy-usb-dfu` to manage firmware updates and interact with the flash memory on STM32WB55 devices.

# Usage
## Prerequisites

Flash the bootloader
- Rust toolchain with `cargo` installed
- `cargo-flash` for flashing the bootloader
- `dfu-util` for firmware updates
- `cargo-binutils` for binary generation

## Usage

### 1. Flash the Bootloader

First, flash the bootloader to your device:

```
cargo flash --features embassy-stm32/stm32wb55rg --release --chip STM32WB55RGVx
```

### 2. Build and Flash Application

Generate your application binary and flash it using DFU:

```
cargo objcopy --release -- -O binary fw.bin
dfu-util -d c0de:cafe -w -D fw.bin
```

## Troubleshooting

- Make sure your device is in DFU mode before flashing
- Verify the USB VID:PID matches your device (c0de:cafe)
- Check USB connections if the device is not detected
- Make sure the transfer size option of `dfu-util` matches the bootloader configuration. By default, `dfu-util` will use the transfer size reported by the device, but you can override it with the `-t` option if needed.
- Make sure `control_buf` size is larger than or equal to the `usb_dfu` `BLOCK_SIZE` parameter (in this example, both are set to 4096 bytes).

0 comments on commit 78b536e

Please sign in to comment.