Introduction à STM32CubeProgrammer
STM32CubeProgrammer est un outil de programmation STM32 très puissant lancé par STMicroelectronics. Il intègre de manière très poussée les fonctions des outils suivants :
- STVP ou STLinkUtility (outil de programmation JTAG/SWD)
- STMFlashLoaderDemo (outil de programmation UART)
- DfuSeDemo (outil de gravure USB)
- ST-LinkUpgrade (outil de mise à niveau du micrologiciel du programmateur Stlink)
Interface utilisateur de STM32CubeProgrammer
STM32CubeProgrammer fournit à la fois une interface utilisateur graphique et une interface utilisateur en ligne de commande. De plus, il fournit également une API C++, et les utilisateurs peuvent intégrer les fonctions de STM32CubeProgrammer dans les applications PC qu'ils développent.
Comme le montre la figure ci-dessus, dans la zone de configuration à droite, les utilisateurs peuvent choisir de se connecter au microcontrôleur STM32 via l'interface de débogage STLink ou via des interfaces de communication telles que USB et UART. Une fois connecté au microcontrôleur STM32, vous pouvez voir le modèle actuel du microcontrôleur, sa version et la taille de la mémoire Flash dans la zone « Informations sur le périphérique ». Si une carte de développement ST officielle est connectée, le nom de la carte de développement s'affiche également.
Fonctions de STM32CubeProgrammer
STM32CubeProgrammer prend en charge l'effacement et la lecture/écriture de la mémoire intégrée des microcontrôleurs STM32 via l'interface de débogage SWD/JTAG de STLink ou via des interfaces de communication telles que UART, USB, I2C, SPI et CAN, à l'aide du bootloader système programmé en usine et stocké dans la puce.
Voici les principales fonctions de STM32CubeProgrammer :
Effacement et programmation
STM32CubeProgrammer prend en charge l'effacement par secteur et l'effacement complet de la mémoire Flash. Il peut importer divers formats de fichiers pour la programmation, notamment les fichiers binaires (.bin), elf (.elf, .axf, .out), hexadécimaux (.hex) et Motorola S-record (.srec).
Opération d'effacement
Après avoir établi une connexion avec le microcontrôleur cible via STLink, vous pouvez effacer des secteurs Flash sur la page « Erasing & Programming » (Effacement et programmation) par secteur ou effectuer un effacement complet de la puce en sélectionnant le bouton « Full chip erase » (Effacement complet de la puce).
Opération de programmation
Sur la page « Effacement et programmation », vous pouvez cliquer sur le bouton « Parcourir » pour importer un fichier exécutable, puis cliquer sur « Démarrer la programmation » pour lancer le processus de programmation.
Vous pouvez également, sur la page « Édition de la mémoire et des fichiers », ouvrir le fichier exécutable que vous souhaitez programmer, puis cliquer sur « Télécharger » pour lancer la programmation.
Sur la page « Édition de la mémoire et des fichiers », sous « Mémoire du périphérique », vous pouvez également lire les valeurs de la mémoire du microcontrôleur à une plage d'adresses spécifiée et enregistrer le contenu lu sous forme de fichiers binaires (.bin), hexadécimaux (.hex) ou S-record (.srec) à l'aide du menu « Enregistrer sous ».
Outre la programmation de l'ensemble du fichier exécutable, vous pouvez modifier directement la valeur à une adresse spécifique sur la page « Memory & File Edition » (Édition de la mémoire et des fichiers) sous « Device Memory » (Mémoire du dispositif). Après avoir appuyé sur « Enter », STM32CubeProg lira, modifiera, effacera et réécrira automatiquement. Cette méthode peut être utilisée pour programmer des octets programmables une seule fois (OTP).
Octet d'option lecture/écriture
Dans la page OB (Option Byte), vous pouvez consulter les paramètres actuels des octets d'option pour le microcontrôleur connecté. Vous pouvez également modifier les valeurs des octets d'option ici. Pour obtenir des explications détaillées sur les octets d'option, veuillez vous reporter au manuel de référence du microcontrôleur spécifique.
Programmation « deux en un »
En utilisant le mode de programmation « Deux en un » de la page « Effacement et programmation », vous pouvez programmer à la fois la mémoire FLASH et les octets d'option en une seule opération. La configuration des octets d'option s'effectue à l'aide de la « ligne de commande STM32CubeProgrammer » avec la commande « -ob ». Par exemple, pour définir la protection en lecture au niveau 1 après la programmation de la mémoire FLASH, procédez comme suit :
- Définissez le chemin d'accès au fichier exécutable à télécharger.
- Cochez « Effacement complet de la puce » et « Télécharger le fichier » sous « Mode automatique ».
- Dans la zone de saisie « Option bytes commands » (Commandes des octets d'option), entrez « -ob rdp=0xBB ».
- Cliquez sur « Start automatic mode » (Démarrer le mode automatique) et STM32CubeProgrammer exécutera les opérations spécifiées dans l'ordre, en affichant la progression dans la fenêtre du journal.
Pour plus de détails sur le format de la commande « -ob », reportez-vous à la section 3.2.15 de l'UM2237 (Manuel d'utilisation de l'outil logiciel STM32CubeProgrammer). Les définitions des champs OptByte dans la commande « -ob » ne sont pas expliquées dans UM2237, mais vous pouvez les trouver en consultant l'onglet « Option bytes » (Octets d'option) dans l'interface graphique STM32CubeProgrammer, car les définitions dans la commande « -ob » correspondent à celles qui s'y trouvent. Vous pouvez également utiliser la commande « -ob displ » pour afficher la configuration actuelle de tous les octets d'option, ce qui vous permettra de comprendre les définitions de chaque champ OptByte.
Lecture/écriture de mémoire externe
Si vous souhaitez lire/écrire sur une mémoire externe connectée au STM32 via des interfaces telles que SPI, FMC, QSPI, vous aurez besoin d'un chargeur externe. CubeProgrammer fournit des chargeurs externes par défaut correspondant à la mémoire externe intégrée dans les cartes de développement STM32. Si vous utilisez un autre modèle de mémoire, vous pouvez créer vos propres fichiers de chargeur externe (*.stldr). Reportez-vous à la section 2.3.3 de l'UM2237 pour obtenir des instructions détaillées.
Avant d'effectuer des opérations sur la mémoire externe, vous devez sélectionner le chargeur externe correspondant sur la page « Chargeur externe ». Ce chargeur externe sera utilisé lors des opérations d'effacement et de programmation ultérieures sur la mémoire externe sur les pages « Effacement et programmation » et « Édition de la mémoire et des fichiers ».
Chargeur d'amorçage
Les microcontrôleurs STM32 sont livrés avec une mémoire système interne contenant un bootloader, qui permet de mettre à jour la mémoire Flash intégrée via des interfaces telles que USART, USB, I2C, SPI et CAN. L'interface du bootloader prise en charge varie en fonction du modèle de microcontrôleur STM32. Vous trouverez des informations spécifiques à ce sujet dans la note d'application AN2606. STLink v2 et STLink v3 fournissent des interfaces de pont entre les protocoles de communication USART, USB, I2C, SPI et CAN vers USB, permettant aux microcontrôleurs STM32 de se connecter à un PC.
STM32CubeProgrammer fournit une interface côté PC pour effacer et programmer la mémoire Flash intégrée via le bootloader. STLink v2 ne prend en charge que les interfaces de communication USART et USB, tandis que STLink v3 ajoute la prise en charge des interfaces de communication I2C, SPI et CAN. ST proposait auparavant deux outils logiciels distincts côté PC : « STM32 Flash loader demonstrator » et « Dfuse Demo », chacun prenant en charge le bootloader USART et la fonctionnalité USB DFU. Désormais, vous pouvez utiliser STM32CubeProgrammer, un outil logiciel unique, pour prendre en charge toutes ces interfaces de communication.
Fenêtre de saisie d'informations SWO
Au cours du développement, il est souvent nécessaire d'afficher des informations de débogage. Une méthode courante consiste à rediriger la sortie printf vers un port série, ce qui consomme un port série. Une autre méthode consiste à rediriger la sortie printf vers la broche SWO (Serial Wire Output) via l'interface de débogage SWD, ce qui permet d'envoyer les informations de débogage via SWO. La fenêtre SWV (Serial Wire Viewer) de STM32CubeProgrammer peut afficher les informations de débogage envoyées via SWO et enregistrer toutes les informations reçues dans un fichier « .log » spécifié.
Interface de ligne de commande
STM32CubeProgrammer fournit une interface en ligne de commande qui vous permet d'exécuter la plupart de ses fonctions à l'aide de commandes. Le fichier exécutable « STM32_Programmer_CLI.exe » se trouve dans le dossier « bin » du répertoire d'installation de STM32CubeProgrammer. L'exécution de « STM32_Programmer_CLI.exe » affiche la liste des commandes prises en charge et leurs paramètres.
L'interface en ligne de commande offre également certaines fonctionnalités qui ne sont pas disponibles dans l'interface graphique, telles que la création de paquets fiables, la programmation sécurisée, le calcul des valeurs CRC, etc. Pour obtenir des instructions détaillées, reportez-vous à la référence UM2237. L'exemple illustré dans la figure montre comment se connecter à la puce cible via l'interface SWD et définir le niveau de protection en lecture 1 à l'aide d'instructions en ligne de commande. La commande complète est « STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB ».
Mise à jour du micrologiciel STLink
Après avoir connecté le débogueur STLink à votre ordinateur, ouvrez STM32CubeProgrammer et actualisez la connexion STLink pour afficher la version actuelle du micrologiciel STLink. Cliquez sur le bouton « Firmware upgrade » (Mise à niveau du micrologiciel) et ouvrez l'outil STLinkUpgrade pour mettre à jour la version du micrologiciel STLink.
Comment utiliser STM32CubeProgrammer ?
STM32CubeProg est un outil de programmation complet qui inclut des opérations courantes telles que la lecture, l'écriture (téléchargement/programmation), l'effacement et la programmation des octets d'option.
Télécharger STM32CubeProg
Site officiel : https://www.st.com/en/development-tools/stm32cubeprog.html
Environnement d'installation
STM32CubeProg prend en charge les systèmes d'exploitation Windows, Linux et macOS. Comme il est basé sur JAVA, vous devez installer Java Runtime Environment (JRE) sur votre ordinateur. Le processus d'installation est illustré dans l'image ci-dessous (version 2.5.0b) :
Connexion des puces et STM32CubeProg
Lorsque vous utilisez STM32CubeProgrammer pour vous connecter à la carte cible via STLINK, il peut arriver que la connexion échoue. Cela peut être dû à une version trop ancienne du micrologiciel dans le STLINK. Pour y remédier, cliquez sur le bouton « Firmware upgrade » (Mise à niveau du micrologiciel) afin d'effectuer une mise à niveau du micrologiciel. Au cours du processus de mise à niveau, vous devrez peut-être brancher et débrancher plusieurs fois. Une fois la mise à niveau terminée, débranchez puis rebranchez une fois pour que STM32CubeProgrammer reconnaisse le STLINK.
Programmation et débogage de puces
Une fois le débogage du programme terminé, vous devez programmer la puce avec votre code. En général, vous avez trois options :
- Utilisez l'interface de débogage JTAG/SWD pour programmer la puce, ce qui nécessite souvent le logiciel STLink Utility ou STVP.
- Programmer la puce via l'interface UART, à l'aide du logiciel de démonstration STM32 Flash loader sur le PC.
- Programmer la puce via l'interface USB, en utilisant le logiciel USB DfuSe.



