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 zlib1g-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 |
$ gedit ~/.bashrc |
Puis collez ces deux lignes a la fin de ce fichier (~/.bashrc):
toolchain_path="/home/< user >/sat" export PATH=$PATH:/home/< user >/sat/bin |
Remplacez < user > par le nom d’utilisateur.
Merci à Sami_Tunisien pour cette information!
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 ~/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:
$ ~/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.
[...] Si on compare l’ancienne carte Discovery à la nouvelle il n’y a pas photo. Le prix est quasiment le même, les performance du STM32L152 sont bien meilleur que celle du STM32F103, et niveau périphériques interne et externe la STM32L est bien plus riche. Cependant comme tout produit nouveau le support dans le monde du libre et encore “léger”, pour le moment coocox IDE ne supporte pas la série STM32L (ni même la série STM32F4). La seul solution consiste donc à compiler sa propre toolchain arm-gcc pour pouvoir utiliser la STM32L Discovery librement. J’ai à ce sujet trouvé un excellent tutoriel (en français !) expliquant point par point comment procéder. -> http://tunila.me/article/programmation/embarque/programmer-sur-le-stm32l-discovery-sur-linux.html [...]
slt,
est ce que je peut connaitre « le slider » sur la la carte sert a quoi?
sa fonction???
Bonjour,
.::Nom::.
‘Slider’ c’est un capteur tactile linéaire ‘potentiométrique’, au même temps c’est un ensemble de 4 touches tactiles (linear touch sensor/4 touchkeys).
.::Fonction::.
Le capteur tactile résistif est sensible à une pression qui permettent de détecter l’emplacement d’une touche dans une zone d’affichage ou autres.
Ce capteur contiennent deux feuilles souples séparés par un écart d’air et recouvert d’un matériau résistant appelé oxyde d’indium-étain.
Lorsque le contact est détecté sur la surface tactile, les deux feuilles ensemble et appuyer sur enregistrer l’emplacement de la touche.
.::Lien::.

.::Info::.
La technologie résistive (!= La technologie capacitive) : C’est la technologie la plus économique et la plus répandue. Elle est constituée de deux films souples qui entrent en contact l’un avec l’autre quand on appuie dessus.
La surface réagit précisément au doigt ou avec un stylet basique. Fragile aux rayures et sa conductivité électrique de ces deux faces s’use un peu lors de chaque contact entre elles! C’est pourquoi la précision de la détection des
coordonnées du point touché se réduit avec l’usage.
Bien Mr6 beaucoup pour ce Tuto… C tres intéressant