From 2d11c1a21b1e4ec18047815203895de6e6c63b6f Mon Sep 17 00:00:00 2001 From: xengineering Date: Sun, 13 Feb 2022 12:51:29 +0100 Subject: Add documentation for firmware upload with stm32flash --- firmware/README.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/firmware/README.txt b/firmware/README.txt index d24eab5..7836bc2 100644 --- a/firmware/README.txt +++ b/firmware/README.txt @@ -43,6 +43,39 @@ Mention that you do not have to quit GDB to upload new compiled firmware. Just call `load` and `run` again. +Upload firmware via serial bootloader +------------------------------------- + +STM32 microcontrollers have a built-in serial bootloader to flash firmware. It +is activated if pin BOOT0 is pulled to 3.3 V, BOOT1 to 0 V (GND) and the +microcontroller is restarted. In this state it is possible to flash firmware +with just a USB to serial adapter via USART1 (PA9 and PA10). This works with a +FTDI USB to UART adapter (3.3 V TTL logic and 5 V VCC). + +To upload a *.bin firmware to the MCU just follow these steps. You will need to +install the stm32flash utility (maybe via AUR): + +- connect: + - GND (UART adapter) to GND (MCU) + - RX (UART adapter, yellow in my case) to PA9 (MCU) + - TX (UART adapter, orange in my case) to PA10 (MCU) + - VCC (UART adapter) to VCC (MCU) just if no other power source is + connected! +- set BOOT0 to 1 (3.3 V) and BOOT1 to 0 (GND) +- reboot MCU +- flash firmware with stm32flash + +To flash and verify `firmware.bin` via `/dev/ttyUSB0` use this command: + + stm32flash -w firmware.bin -v /dev/ttyUSB0 + +It can then be started with: + + stm32flash -g 0x0 /dev/ttyUSB0 + +For further details run `man stm32flash`. + + External References ------------------- -- cgit v1.2.3-70-g09d2