Programmer sur le STM32L-Discovery sur Linux
STM32 est une famille de plusieurs séries de circuits micro-contrôleurs, par STMicroelectronics (aussi connu comme ST), basé sur le processeur RISC 32 bits Cortex-M3 et Cortex-M4F d’ARM Holdings.
Dans ce tutoriel, vous allez apprendre a compilé un fichier C et l’envoyé pour l’exécution sur le micro-contrôleur STM32L.
Nous allons commencer par installer les paquets nécessaires:
- Git:
sudo apt-get install git
- libusb-1.0
sudo apt-get install libusb-1.0
- Et le reste:
sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev
Ensuite, nous allons télécharger les utilitaires nécessaires pour la connexion et la communication avec notre stm32l-discovery :
- D’abord, créer un dossier (ou tout va être téléchargé):
~ $ mkdir stm32l-discovery ~ $ cd stm32l-discovery
- Puis, on commence a télécharger:
~/stm32l-discovery $ git clone https://github.com/esden/summon-arm-toolchain.git
(summon-arm-toolchain)
~/stm32l-discovery $ git clone https://github.com/texane/stlink.git
(Stlink)
Et on installe le summon-arm-toolchain (en super-utilisateur):
~/stm32l-discovery $ cd summon-arm-toolchain/ ~/stm32l-discovery/summon-arm-toolchain $ sudo ./summon-arm-toolchain |
Nous devons maintenant compiler le STlink, ouvrez le dossier stm32l-discovery/stlink puis faites un make:
~ $ cd stm32l-discovery/stlink/ ~/stm32l-discovery/stlink $ make |
$ toolchain_path="/home/<user>/sat" |
Remplacez < user > par le nom d’utilisateur.
Compiler un fichier C et l’envoyer sur le STM32L-Discovery
Dans cet exemple, nous allons allumer les LEDs LD3 et LD4 (vert et bleu) une après l’autre, dés que le micro-contrôleur est branché.
-
Compilation
$ cd ~tunilame/stm32l-discovery/stlink/example/32l_dac/ ~/stm32l-discovery/stlink/example/32l_dac $ make -C ../libs_stm/build
Ici, on a compilez les fichiers et les bibliothèques spécifiques au STM32L-Discovery
~/stm32l-discovery/stlink/example/32l_dac $ make
et hop, on compile notre programme!
-
Envoi du programme sur le STM32L-Discovery
Branchez maintenant votre STM32L-Discovery avec un câble USB, puis exécuter le fichier st-util qui se trouve dans gdbserver/:
$ cd ~/stm32l-discovery/stlink ~/stm32l-discovery/stlink $ sudo ./gdbserver/st-util
Après avoir exécuter ces commandes, vous devez voir le LED LD1 (qui se trouve en haut a gauche du stm32) allumé en VERT.
Ouvrez maintenant un nouveau terminal et, sans fermer le terminal d’origine (ou est exécuté st-util), exécutez le arm−none-eabi−gdb qui se trouve dans le dossier $toolchain_path/bin:
$ /home/tunilame/sat/bin/arm-none-eabi-gdb
(gdb) target extended-remote :4242
Se connecter avec le stm32 (en utilisant le port 4242, qui a est utilisé par st-util dans l’autre terminal)
(gdb) cd ~/stm32l-discovery/stlink/example/32l_dac/ (gdb) load dac.elf
On charge notre programme…
(gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program:
Et on l’exécute!
-
Arreter l’execution
Pour arrêter l’exécution, faites un CTRL+C.
Pour quitter gdb et démonter votre stm32l:(gdb) quit A debugging session is active. Inferior 1 [Remote target] will be killed. Quit anyway? (y or n) y
Maintenant, vous pouvez essayer les fichiers présents dans le dossier stlink/examples, je vous suggère d’exécuter le fichier 32l_lcd.c qui affichera du texte sur l’écran LCD du STM32L-Discovery.
Dorénavant, utilisez 32l_dac et 32l_lcd présents dans stlink/examples comme base pour apprendre a programmer sur votre micro-contrôleur, et faîtes des recherches sur Google!
Pour tout problème/correction, merci de poster un commentaire.
sources:
- https://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32vldiscovery-in-linux/
- tutorial.pdf contenu dans stlink/doc/tutorial (que je vous conseille de lire)
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!

Merci pour le post…
Très util…
Juste, pour faciliter les choses, il faut aussi mentionné qu’il faut aussi installer le paquet « zlibg1-dev » sinon on aura une « zlib.h » manquante et ajouter la ligne du « toolchain_path » dans .bashrc.
Errata pour le commentaire précédent: la lib s’appelle « zlib1g-dev »
Un autre problème qui pourra rencontrer les utilisateurs de ce tuto, c’est la lib newlib-1.19.0.tar.gz:
Le site ftp de redhat ne laisse pas le script d’installation à terminer le fetch de l’url ftp de cette lib.
Pour celà, il suffit de la télécharger de l’addresse ftp avec votre navigateur et la mettre sous le répertoire ~/stm32l-discovery/summon-arm-toolchain/sources
Et bien sûr, pour pouvoir compiler les exemples de stlink, il faut ajouter dans ~/.bashrc cette ligne (à part la ligne du toolchain_path):
export PATH=$PATH: »/home//sat/bin »
tout en changeant par le login linux de votre session, pour que les commandes du toolchain (example arm-none-eabi-gcc) soient accessibles de n’importe quel répertoire.