samedi 30 mars 2019

STM32 : environnements de développement




STM32 : environnements de développement


Cet article décrit les différentes possibilités de travailler avec un STM32. Il décrit brièvement les environnements existants sur le marché mais pas seulement.

Quand on travaille sur un STM32 plusieurs possibilités s'offrent à nous :
  • environnement graphique intégré
  • Makefile
  • IDE ARDUINO
Cet article fait suite à ceux-ci :
https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html
https://riton-duino.blogspot.com/2019/03/stm32-duino-deboguer.html

https://riton-duino.blogspot.com/2019/03/stm32-boitier-st-link.html

1. Les librairies

Les principales librairies (SDK) avec lesquelles on peut travailler sont peu nombreuses.

1.1. STM32Cube

Il s'agit des librairies ST Microlectronics.

Elles sont assez bas niveau, et leur utilisation demande beaucoup de travail.
Elles sont téléchargeables ici :

https://www.st.com/en/embedded-software/stm32cube-mcu-mpu-packages.html

Il y a une librairie par famille de processeur : F0, F1, F3, L0, L4, etc.

Ces librairies sont utilisées par la plupart de environnements du marché.

1.2. MBED

MBED vous offrira un ensemble de librairies permettant de gérer des afficheurs, des modules de communication et des composants divers.

https://os.mbed.com/handbook/mbed-SDK

Ce SDK est supporté nativement par PlatformIO, mais peut aussi être utilisé avec KEIL et IAR.

2. L'environnement intégré

Si vous travaillez avec un environnement évolué comme KEIL, SW4STM32, ATOLLIC ou IAR tout le travail de choix des options et de compilation se passe de manière plutôt transparente pour vous, et tant mieux.Vous avez simplement à faire quelques choix dans l'interface :
  • modèle de processeur
  • version debug ou non 
  • choix du boîtier JTAG
  • etc.
Ensuite vous n'avez plus qu'à cliquer sur un bouton pour compiler et charger dans la cible. Quelques autres boutons vous permettront de déboguer.

Une liste des environnements est fournie ici :

https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools.html

Normalement, certaines librairies ARDUINO devraient fonctionner avec ces environnements, par contre il faudra les intégrer vous-même à vos projets, et gérer les dépendances (certaines librairies ont besoin d'autres librairies). L'opération ne sera pas aussi facile qu'avec l'IDE ARDUINO et STM32DUINO.

Par contre vous aurez un debugger intégré, ce qui est quand même un gros avantage.

Vous pouvez essayer ces environnements de développement et leur debugger et si votre choix se porte sur l'un d'eux.

2.1. KEIL µVision

C'est un environnement simple et rapide à maîtriser. Il utilise le compilateur ARM.

Malheureusement il est seulement disponible sous Windows.

KEIL est gratuit si vos projets ont une taille inférieure à 32K de code (binaire bien entendu).

2.2. SW4STM32 et ATOLLIC

SW4STM32 et Atollic sont les environnements de ST Microlectronics. Ils sont basés sur Eclipse.

SW4STM32 et ATOLLIC sont gratuits. Il fonctionnent aussi sous LINUX.

2.3. IAR

IAR est payant.

2.4. PlatformIO

PlatformIO est basé sur Visual SourceCode, un clone d'Atom.

Le gros intérêt est qu'il n'est pas limité au STM32. Il permet de travailler avec différents processeurs :
  • ARDUINO
  • ESP8266, ESP32
  • MSP430
Il permettra de travailler avec diffrents frameworks ou SDK :
  • STM32DUINO
  • MBED
  • CMSIS
  • SPL
  • STM32Cube 
Il est de loin mon choix préféré, y compris en tant que simple éditeur.

3. Le Makefile

Certains développeurs travaillent avec un éditeur de leur choix (Visual Studio, Eclipse, etc.) et compilent leur code en ligne de commande. Ils écrivent des fichiers de script appelés Makefiles qui se chargent de la compilation et de l'édition de liens.
Le Makefile peut également charger le binaire dans la cible.

Dans certaines grosses équipe un développeur spécialisé est chargé d'écrire les Makefiles.

Contrairement à ce que l'on peut croire ce n'est pas une manière arriérée de travailler. C'est au contraire la seule manière correcte de travailler en équipe, car en général un serveur d'intégration continue se charge de recompiler (build) le travail de toute l'équipe quand le code est modifié.
De plus le serveur se charge en général d'exécuter des tests automatisés sur le code produit.

Les membres de l'équipe sont avertis en temps réel par mail si le build échoue.

4. L'IDE ARDUINO

L'IDE ARDUINO est un peu à part. Il est plutôt destiné aux amateurs et décharge ceux-ci de pas mal de connaissances liées aux environnements habituels(build automatique, intégration de librairies, etc.).

Que fait l'IDE ARDUINO pour vous, et que ne fait-il pas ?
  • il choisit les options pour vous
  • certaines options sont modifiables grâce au menu "Outils"
  • il compile et fait l'édition de liens
  • il charge le binaire dans la cible
  • c'est tout
Avec son package STM32DUINO il est capable de compiler du code STM32.

Mais il peut aussi vous permettre de travailler sur des microcontrôleurs Espressif ESP8266 et ESP32.

Il ne possède aucune possibilité de déboguer, mais on peut utiliser un débugger séparé comme gdb ou gdbgui.

5. Liens utiles

https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html
https://riton-duino.blogspot.com/2019/03/stm32-duino-deboguer.html

https://riton-duino.blogspot.com/2019/03/stm32-boitier-st-link.html


Cordialement
Henri

6 commentaires:

  1. je veut bien travailler sur la carte stm32 mais j'ai pas le bonne lien ou je vais télécharger i IDE de se dernier


    je le veut vraiment en urgence la majorité de tout ces liens sont pas correcte svp et merci

    RépondreSupprimer
    Réponses
    1. De quoi parle t'on ?
      IDE ARDUINO avec package STM32 ou autre chose ?

      Supprimer
  2. Article super clair. Je viens de le découvrir via le forum Arduino.
    Sur la partie STM32Cube, "Elles sont assez bas niveau, et leur utilisation demande beaucoup de travail." c'est très subjectif. Le travail réside où exactement ? trouver les bon #include ou recoder des fonctions plus haut niveau ?

    RépondreSupprimer
    Réponses
    1. Il suffit d'ouvrir quelques exemples fournis avec la librairie pour s'en rendre compte.
      (répertoire Projects).

      Supprimer
  3. Bonjour Henri,
    je commence a m'intéresser aux stm32 en commençant dans l'environnement arduino. Grace à tes bon conseils et ceux trouvés en complément sur quelques rares autres sites, j'ai réussi a faire clignoter la LED de la carte. Parfait. Juste de l’incompréhension quand aucun port com n'était validé dans l'IDE . Avec des habitudes arduino j'ai cherché quelques heures avant de trouver qu'avec un St-Link (Ali...) il n'y en a pas besoin !
    Ensuite, trouvant dommage que ce joli connecteur USB ne serve pas, j'ai rechercher si on ne pouvait pas malgré tout s'en servir. Et la miracle, comme par chance j'avais pris une black pill comme carte d’essai, elle fonctionne en mode DFU qui permet la programmation par le connecteur USB et le dialogue avec le moniteur ! Plus besoin de ST-link mais il est nécessaire d'appuyer sur NRST BOOT0 avant un téléchargement. Je n'ai pas bien compris la séquence du chargement du bon pilote (sous W10) mais malgré tout le mal lu sur W... ça a fini par s'installer tout seul sans que je n'ai rien à faire.
    Je voulais te signaler ce mode de fonctionnement pour que tu puisse l'ajouter peut-être dans une prochaine mise à jour. (Je n'ai pas regardé si on peut faire du debug ainsi, faut peut-être pas rêver non plus)
    Bravo et merci pour ton blog.

    RépondreSupprimer
    Réponses
    1. Oui, en effet, les STM32 ont un bootloader intégré qui permet le chargement du code à partir d'un UART, de l'I2C ou du SPI.

      Supprimer