Avant de commencer à programmer, il vous faut mettre en place la chaîne de compilation, c’est-à-dire l’ensemble des éléments nécessaires pour la compilation d’un programme dont fait partie le compilateur, mais aussi l’éditeur de liens (linker), un ensemble de librairies de base et éventuellement un débogueur.
Qu’est-ce qu’une chaîne de compilation pour l’embarqué ?
Lorsque vous programmez pour l’embarqué, vous allez compiler et exécuter votre code sur deux machines différentes, qui n’ont pas la même micro-architecture. C’est la grande différence entre la programmation usuelle sur une machine du bureau et la programmation pour l’embarqué ! On parle alors de compilation croisée (cross compilation).
Dans le cas qui nous intéresse, il nous faut une chaîne de compilation déployable sur Windows et qui produit du code exécutable sur l’architecture du STM32F103RB. Nous allons utiliser la ARM compiler toolchain qui est la chaîne de compilation proposée par la société ARM (la société qui a conçu le cœur du STM32F103RB).
La chaîne de compilation ARM permet de construire des applications écrites en C, C++ et assembleur sur les processeurs ARM. La chaîne est composée :
d’un compilateur (armcc) pour les langages C et C++ ;
d’un assembleur (armasm) pour traiter directement du langage d’assemblage propre aux architectures ARM ;
d’un éditeur de liens (linker) (armlink) qui permet de lier les différents objets pour produire un exécutable ;
un outil (armar) permettant de créer des archives au format ELF afin de construire des librairies pré-compilées ;
un utilitaire (fromelf) permettant de travailler et d'avoir des informations sur les archives au format ELF telles que la taille du code ou des données.
À cela s’ajoute des librairies pour le C++ ainsi que des librairies C avec des extensions POSIX et les librairies standards. Nous utiliserons enfin une implémentation de la microlib C spécifique pour ARM et qui offre une version optimisée (en particulier l’empreinte mémoire) des librairies standards pour les systèmes embarqués.
Enfin, pour ce qui est du débogueur, l'IDE µVision met à disposition un outil intégré permettant de suivre pas à pas l'exécution d'un programme aussi bien en simulé que sur la cible réelle. L'IDE offre aussi un outil pour charger (loader) le code sur la cible suivant différents formats de fichiers binaires compilés.
Installation de la chaîne de compilation et l'IDE
La chaîne de compilation ARM fait partie intégrante de l’IDE µVision. Vous allez donc commencer par installer cet environnement.
Pour cela, il vous faut :
un système d’exploitation Windows (une machine virtuelle avec Windows marche aussi très bien)
l’application MDK-ARM que vous pouvez télécharger sur le site de Keil (nécessite une inscription gratuite).
Une fois l'installateur récupéré, suivez les instructions pour procéder à l’installation. À la fin de l'installation, le Pack Installer est lancé. À vous de spécifier les composants sur lesquels vous allez développer ! Comme indiqué sur l'image ci-dessous, choisissez dans l'onglet Devices le support STM32F1 Series dans STMMicroelectronics et dans l'onglet Boards la carte NUCLEO-F103RB.
Dans la partie droite du Pack Installer, si les éléments STM32F1xx_DFP, STM32NUCLEO_BSP, CMSIS et MDK-Middleware ne sont pas Up to date cliquez sur Install et attendez la fin de la mise à jour.
Finissez en installant le Legacy support for ARM Cortex-M devices. Pour cela, chargez simplement l'installeur et lancez-le.
Installation du driver
Si vous souhaitez utiliser la carte NUCLEO pour le développement de vos applications, il vous faut aussi charger le driver Windows ST-LINK/V2. Vous le trouverez sur les pages de ST. Chargez l'archive avec le driver (nommé STSW-LINK009), décompressez-la et installez le driver (lancez dpinst_x86 ou dpinst_amd64 en fonction de l'architecture de votre PC).
Pour savoir si le driver est bien installé, branchez la carte Nucleo via un câble USB et consultez l'état du périphérique via Windows.
Dans ce chapitre, vous venez d’installer les outils de développement qui vous seront utiles pour programmer la carte NUCLEO :
un IDE ;
un compilateur ;
un loader ;
un débogueur.
Vous allez maintenant commencer à les manipuler en commençant par créer une nouveau projet.