Programmation du processeur stm32f103 par liaison série

Introduction

Le microprocesseur STM32F103, équipant les modules bluepill et maple-mini-clone, nécessite le chargement d'un programme avant toute utilisation. Pour cela, Le processeur dispose en ROM d'un bootloader utilisant la liaison série sur l'USART1, sans autre alternative immédiate.

Ce document présente les instructions pour réaliser le chargement par la liaison série.

Bootloader sur liaison série

Il faut d'abord se procurer le programme de communication sur la liaison série stm32flash [1] qui fonctionne sur la machine de développement ainsi qu'un cable fournissant une interface série, qui peut être un adaptateur USB ou un simple cable avec adaptateur de niveau.

Il est aussi nécessaire de cabler une prise pour recevoir le cable de liaison série et l'adaptateur d'interface:

Pour atteindre le mode Bootloader en ROM, il faut, après avoir brancher le cable liaison série reliant le PC à la carte, une vitesse de transmission comprise entre 1200 et 115200 et par défaut 57600 bits/s, 1 start, 1 stop, parité paire.

  1. Connecter Boot1 à 0
  2. Connecter Boot0 à 1
  3. Appuyer sur le bouton reset
  4. Sur PC, lancer l'application stm32flash

Pour lire les informations du processeur exécuter la commande suivante:

$ stm32flash /dev/ttyS0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (STM32F10xxx Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB

C'est peut être le moment de sauvegarder le contenu de la flash (on ne sait jamais !), car après il sera trop tard.

$ stm32flash -r mapleclone.bin /dev/ttyS0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (STM32F10xxx Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Memory read
Read address 0x08020000 (100.00%) Done.

La commande suivante permet d'écrire un binaire en flash et le verifier:

stm32flash -w usbdfu.bin -v  /dev/ttyS0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (STM32F10xxx Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote and verified address 0x

Bootloader DFU (Device firmware update)

Voir page usbdu

Bootloader par l'interface JTAG

Il est aussi possible de télécharger un programme en flash par l'interface JTAG. C'est à expérimenter... par exemple avec Black Magic Probe Voir le lien ref7.

Références

  1. Open source flash program for STM32 using the ST serial bootloader.
  2. dfu-util - Device Firmware Upgrade Utilities.
  3. libopencm3 - Open Source ARM cortex m microcontroller library.
  4. Device Firmware Upgrade par USB..
  5. Utilisation du circuit Maple Mini clone..
  6. Utilisation du circuit stm32 appelé bluepill..
  7. Développement sur stm32..
  8. The Black Magic Probe .