Articles récents
STM32 : Environnement de développement
STMicroelectronics propose un environnement de développement afin de rendre accessible la programmation de leurs microcontrôleurs STM32. En effet, le STM32 présente de nombreuses fonctionnalités qui peuvent rendre le code source assez indigeste.
Par ailleurs, STMicroelectronics propose un framework pour faciliter l'écriture du code et mieux maîtriser cette complexité au vu des nombreux paramètres à mettre en oeuvre.
1)Le framwork ODE
Le framework ODE fournit plusieurs choses:STM32Cube est une initiative originale de STMicroelectronics visant à améliorer considérablement la productivité des développeurs en réduisant les efforts de développement, le temps et les coûts. STM32Cube couvre l'ensemble du portefeuille STM32.
STM32Cube comprend STM32CubeMX, un outil de configuration logicielle graphique qui permet la génération de code d'initialisation C à l'aide d'assistants graphiques. Il comprend également le package MCU STM32CubeF4 composé de la couche d'abstraction matérielle (HAL) STM32Cube et des API de la couche inférieure (LL), ainsi qu'un ensemble cohérent de composants middleware (RTOS, USB, système de fichiers FAT, graphiques et TCP / IP). La pile logicielle graphique TouchGFX est également incluse dans le package MCU STM32CubeF4 en tant que partie de l'écosystème STM32Cube. Il est disponible gratuitement pour la production et la redistribution sur les microcontrôleurs STM32. Tous les utilitaires logiciels intégrés sont livrés avec un ensemble complet d'exemples fonctionnant sur des cartes STMicroelectronics.
Ce logiciel est téléchargeable (gratuitement donc) sur le site de STMicroelectronics. Il nécessite un JRE Java 64 bits à jour sur Windows 10.
Le STM32Cube HAL est une couche logicielle intégrée au STM32 qui garantit une portabilité maximisée à travers le portefeuille STM32, tandis que les API LL constituent une couche rapide, légère et orientée vers les experts, plus proche du matériel que le HAL. Les API HAL et LL peuvent être utilisées simultanément avec quelques restrictions.
Les functions pack:
STM propose des package STMCubeXX, XX pour la version du ARM, pour moi F4 soit le STM32CubeF4. Dans la suite ce sera la version étudiée.
STM32CubeF4 rassemble dans un seul package tous les composants logiciels intégrés génériques requis pour développer une application sur les microcontrôleurs STM32F4. Cet ensemble de composants est portable, non seulement au sein de la série STM32F4 mais également vers d'autres séries STM32. Les API HAL et LL sont disponibles en licence BSD open source.
Seuls les sous-répertoires de Projects peuvent être modifiés par l’utilisateur. Ils se décomposent en plusieurs sous-répertoires dont :
Dans STM Cube vous pouvez télécharger les packs correspondants à vos environnements avec le Menu Help > Manage embedded software packages, par exemple pour le F4:
2)Création d'un projet
Dans le STM32 Cube, on va dans l'onglet Project manager pour renseigner le nom du projet et son emplacement sur le disque. Ensuite, on fait Generate code, ce qui va générer dans le dossier qui va bien un code générique que l'on pourra compléter. L'avantage de cette méthodologie est que tous les paramètres génériques sont pris en compte dans ce template.L’onglet Pinout sert à configurer les broches du microcontrôleur. En effet, les broches présentent de nombreuses fonctionnalités qu'il faut sélectionner (ADV, UART, I2C, ...). Le STM32 permettant à une même broche d’être utilisée par différents périphériques pour plusieurs fonctions, STM32CubeMX recherche la configuration de brochage optimale pour les périphériques sélectionnés par l’utilisateur, les conflits sont représentés par des couleurs. L’outil utilise un code de couleurs pour les éventuels conflits sur un périphérique :
L’onglet Clock Configuration permet de gérer les horloges.
3)L'interface de dĂ©veloppement Keil μVision
3.1)Installation
Il existe plusieurs Integrated Development Environments (IDE) pour travailler comme Keil μVision, IAR, SW4STM32, MBED, ...Personnellement, j'ai choisi Keil μVision qui est gratuit jusqu'Ă un programme de 32Ko (ce qui sera largement suffisant pour moi).
L'installation se fait assez facilement, un formule d'inscription est à renseigner pour pouvoir télécharger le logiciel. Ensuite rien de difficile pour l'installation. Une fois l'installation terminée, ce n'est pas tout, maintenant il faut installer les différents package liés à votre configuration avec le PackInstaller (dans le dossier UV4/PackInstaller.exe). Il suffit alors de sélectionner la carte Nucleo est de sélectionner les package à installer.
Dans le STM32CubeMX, dans Project Manager, il faut prĂ©ciser la Toolchain/IDE pour ĂŞtre compatible avec Keil μVision, c'est dire MDK-ARM et prendre la dernière version (pour moi V5.27).
Une fois la gĂ©nĂ©ration du code terminĂ©e, il faut choisir l'option ouvrir le projet. Ainsi, Keil μVision s'ouvre sur le projet gĂ©nĂ©rĂ©. On a ainsi l'environnement IDE ouvert et configurĂ© avec les bonnes options de la carte Nucleo-64.
Dernière chose, il est nécessaire d’installer le driver USB de la carte Nucléo. Vous le trouverez ici.
Ya plus qu'à ! On l'a vu, le STM32CubeMX a simplement généré le code générique du modèle de carte (ou MCU) selon les options choisies et préparé le code pour être compatible avec l'IDE de votre choix.
3.2)DĂ©bogage d'un programme
Prenons l'exemple Blinky, proposé par le packInstallerOn exécute le projet dans Keil en double-cliquant sur le fichier Blinky.uvprojx.
On peut vérifier sous Project>Options for Target… que nous avons sélectionné la bonne carte. Pour compiler le projet, il suffit d’appuyer sur le bouton Rebuild. Pour charger le programme sur la carte est configurer le STM32, appuyer sur le bouton LOAD ou DOWNLOAD. Et donc, le programme s’exécutera. A noter, qu'il est parfois utile pour certaine carte de faire un reset afin de relancer le programme.
Pour initier un débogage, il faut passer par le menu Debug>Start/Stop Debug Session (ou cliquer sur l’icône Start/Stop Debug Session).
L'interface de Keil s'adapte alors au mode débogage en terme d'ergonomie. Les registres sont présentés à gauche. (Le registre R15 donne l'adresse courante du programme en cours.) Les fenêtres du milieu visualisent le code assembleur et le code source du programme en C. Sur la fenêtre du code source, un indicateur bleu (flèche) indique la ligne en cours d’exécution. Le programme en mode debug est comme figé, c'est le développeur qui fait avancer lui même l’exécution de son programme (pas à pas, séquentiellement, ...). La flèche jaune indique le curseur du code assembleur exécuté en cours. Pour lancer notre programme, il suffit de cliquer sur Debug>Run (ou sur l’icône Run). La LED clignote et le message Hello World s’affiche sur un terminal. (Je ne vais pas m'attarder sur le programme dans cet article, nous verrons cela plus tard).
Il et possible placer des points d'arrĂŞts (bouton droit, Insert breakpoint) et d'avancer pas en observant les valeurs des registres ou des variables. Pour mettre une variable sous surveillance, double-cliquer sur la variable, bouton droit Add 'var' to > Watch1.
Conclusion
Voila une petite présentation de l'environnement de développement du STM32 avec le STM32CubeMX et l'IDE KEIL UVision. Cet IDE propose de nombreuses fonctionnalités, impossible de tout évoquer ici. Je vous laisse les découvrir, l'interface est assez intuitive.Par la suite, nous allons voir comment réaliser un petit programme autour des entrées/sorties GPIO et surtout mettre en oeuvre un peu en pratique dans cet environnement.
© 2024 www.doritique.fr par Robert DORIGNY