Nos robots sont programmés en Ada. Pourquoi? Alexis écrivait en 2008 « c’est un langage beaucoup plus sûr ». C’est vrai – mais excessivement réducteur.
Cette série d’articles va vous apporter les premiers pas d’Ada pratique sur STM32 – on ne va pas trop parler au début du typage fort et des restrictions du profile Ravenscar.
Le programme est le suivant:
- Démarrage: installer les outils de développement (GNAT, bibliothèques, outils associés); compiler un premier programme (vide).
- Clignotons des diodes: comment (presque) contrôler le monde
- Bases d’Ada en 60 secondes chrono: packages, fichiers programme, GNATMake…
- Le multitâche basique: faisons plein de choses en même temps – sans effort.
[Cette liste sera mise à jour au fur et à mesure de la publication des articles]
Liste de courses
On va avoir besoin des outils suivants:
- Un PC – idéalement sous linux. Votre serviteur utilise une debian stable et/ou Ubuntu 14.04 LTS, et de temps en temps OSX 10.9 « Mavericks ». A défaut une machine virtuelle ‘VirtualBox’ peut faire l’affaire.
- Une carte de développement STM32F4 ‘discovery’ – disponible pour une 15aine d’euros chez Farnell, Radiospares…
- Un cable USB
Logiciel
Les essentiels de développement
- Git:
sudo apt-get install git
- GCC 4.6 avec support Ada:
sudo apt-get install gnat-4.6
- Outils divers, bibliothèques:
sudo apt-get install build-essential libncurses5-dev
GNAT: le compilateur
(Repris depuis le tutoriel Ada pour STM32)
AdaCore propose depuis quelques semaines un compilateur Ada ciblé pour le STM32 et prêt à l’emploi. Nous ne l’avons pas encore évalué (ça viendra). Nous allons utiliser notre propre variante, basée sur GNAT 2011 pour lego mindstorms.
On va récupérer un script qui va préparer le compilateur et la bibliothèque standard pour nous:
git clone https://github.com/telrob/stm32-ada.git
cd stm32-ada
export CC=gcc-4.6
export INSTALL_PREFIX=$HOME/stm32
make
Suivant votre machine ce processus peut prendre entre 5 minutes et 2 heures.
Programmeur
Le programmeur sert à installer un programme sur la carte. J’utilise ST-Link, d’autres utilisent OpenOCD (j’ai plus d’expérience positive avec ST-Link).
git clone https://github.com/texane/stlink.git
cd stlink
sh autogen.sh
./configure PREFIX=$HOME/stm32
make
make install
Testons
Nous avons installé nos programmes dans [home]/stm32 – pour pouvoir les utiliser nous devons dire à notre shell où tout ça se trouve:
export PATH=$HOME/stm32/bin:$PATH
Les outils devraient être visibles à présent:
which st-flash
devrait donner le chemin de st-flash; si ça dit « not found » il y a eu un problème.
which arm-none-eabi-gnat
devrait donner le chemin de gnat pour ARM; si ça dit « not found » il y a eu un problème.
Premier programme
Créons un programme vide: test.adb
procedure Test is
begin
loop
null;
end loop;
end Test;
On compile:
arm-none-eabi-gnatmake --RTS=rts-raven test.adb
Et voilà – un beau binaire qui ne fait *rien*.
Au prochain numéro: comment faire quelque chose (ou presque).