J'ai une carte de découverte STM32 et j'aimerais pouvoir la programmer sur Linux.
Quelle est la manière la plus simple de faire ça?
J'ai une carte de découverte STM32 et j'aimerais pouvoir la programmer sur Linux.
Quelle est la manière la plus simple de faire ça?
Réponses:
Un moyen facile de programmer et de déboguer la carte de découverte STM32 (ou tout STM32 utilisant un programmateur ST-Link) consiste à utiliser le projet 'stlink' https://github.com/texane/stlink (mais OpenOCD semble aussi populaire)
Les cartes ST Nucleo apparaissent également comme un périphérique flash USB, donc vous n'avez même pas besoin stlink
- copiez simplement le fichier dessus.
Il existe de bonnes pages sur la façon de développer pour la découverte STM32 sur Linux, telles que http://gpio.kaltpost.de/?page_id=131 et http://torrentula.to.funpic.de/2012/03/22/ setup-up-the-stm32f4-arm-development-toolchain / et http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Cependant, j'ai trouvé le dernier lien le plus utile. Il montre comment construire les projets STM32 de ST tels quels - Le seul changement est d'ajouter son Makefile, qui semble être une solution parfaite.
Sur les versions récentes d'Ubuntu, il existe un package que vous pouvez installer qui contient un compilateur ARM:
sudo apt-get install gcc-arm-none-eabi
Notez que les processeurs sont tous un peu différents. STM32F0..4 aura tous besoin de drapeaux de compilateur différents, et le script de l'éditeur de liens sera légèrement différent pour chacun (bien que ce ne soit vraiment qu'en raison de la taille modifiée de la RAM et du Flash).
Edit: si vous voulez commencer très rapidement, vous pouvez également consulter http://www.espruino.com . C'est un interpréteur JavaScript qui s'exécute sur le STM32 lui-même, donc une fois que vous avez 'stlink' installé afin que vous puissiez flasher sur la carte, vous pouvez simplement télécharger une image à partir de ce site, la flasher, puis vous connecter avec une application de terminal et commencer la programmation.
Si vous préférez les éditeurs de texte et les Makefiles au lieu d'utiliser une interface graphique, vous pouvez faire:
Obtenez votre projet au conseil d'administration. Soit utiliser
Codez dans un éditeur de texte et utilisez les outils de ligne de commande. Ce tutoriel fournira de nombreux conseils.
Prendre plaisir
Eclipse , GCC et OpenOCD sont une chaîne d'outils. Il est recommandé par EMCU-IT et il y a des informations supplémentaires ici . Ces pages recommandent également d'utiliser un RTOS comme FreeRTOS.org , mais cela dépend de vous.
Et pour aider à compiler les exemples STM32 sous Linux allez ici . Ce lien pointe vers un makefile pour les exemples qui peuvent être invoqués avec
git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip
Quelques corrections de code mineures sont également documentées, mais la plupart du projet devrait fonctionner avec
make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
J'ai eu du succès avec https://github.com/JorgeAparicio/bareCortexM (voir aussi les articles de blog liés). Je suis stupéfait de pouvoir simplement parcourir le code en une seule étape ou parcourir la mémoire de l'appareil au lieu d'insérer des instructions de débogage dans mon code ou de deviner ce qui se passe à l'intérieur de la puce.
Le projet bareCortexM est un modèle Eclipse pour le développement avec la série Cortex M, en particulier STM32, en C ++ sans OS. Il est configuré pour utiliser openocd, gcc et possède des scripts pour flasher et déboguer vers plusieurs cibles, y compris certaines des cartes de découverte. En suivant les instructions et en installant les plugins Eclipse recommandés, j'ai pu utiliser mon STM32VLDISCOVERY sur Ubuntu.
Comme recommandé, j'ai combiné le modèle eclipse avec la bibliothèque de modèles C ++ libstm32pp du même auteur pour le matériel STM32. libstm32pp fournit un remplacement étonnamment complet de CMSIS et des pilotes STM32 souvent critiqués avec un modèle de programmation qui vous permet de dire des choses comme PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)
et / PINB::setLow()
ou la PINB::setHigh()
plupart du temps en grande partie compilées en ligne grâce aux modèles C ++. La configuration est très sympa.
Ce serait peut-être utile à quelqu'un: mon court article (sur le russe) et mon projet simple . Tout sous Linux et sans choses inutiles comme l'éclipse.
Les bibliothèques proviennent du site Web de ST, makefile - d'un des nombreux exemples de GPL sur Internet.
Voici un petit projet de modèle innovant pour un démarrage rapide en utilisant la carte de découverte STM32F0 sous Linux ou tout autre système d'exploitation:
https://github.com/dobromyslov/stm32f0-chibios-template
Notez que le projet utilise ChibiOS - un système d'exploitation en temps réel gratuit et open source, il ne s'agit donc pas exactement d'une implémentation à part entière.
Considérez platformio . Si vous êtes à l'aise avec la ligne de commande, vous constaterez que platformio facilite considérablement le processus de développement. pio init
peut être utilisé pour mettre en place un projet. pio run
exploite la chaîne d'outils pour compiler. pio run --target upload
envoie le code à l'appareil. Platformio prend en charge le téléchargement des composants de la chaîne d'outils, des bibliothèques, etc. selon les besoins.