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.
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.
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
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.