IHMA : Interactions Humain-Machine Avancées
Le SDK est en C, tout comme le code des programmes pour microcontrôleurs ST microelectronics et bien d'autres. Il inclut : Créez un fork du squelette de TP et clonez le en local avec la commande
git clone [adresse]
. Vous pourrez ainsi conserver l'historique de votre travail sur le Gitlab de l'université. Les documentations des divers composants avec lesquels on va travailler vous seront aussi utiles, et rappelées dans les fiches de TP individuelles.
uC-sdk
est déclaré cumme un submodule GIT, ce qui permet de ne pas stocker son historique en doublon, et de récupérer facilement ses mises à jour par son repository original. Pour le récupérer, exécutez :
git submodule init ; git submodule update
Regardez le
Makefile
, qui contient la configuration du SDK, la cible que l'on souhaite construire (
test.elf
). Si vous souhaitez renommer
test.c
, n'oubliez pas de modifier le
Makefile
. De même si vous voulez ajouter d'autres fichiers sources, ajoutez les cibles (
.o
) dans une nouvelle variable
TARGET_OBJS
.

Compilation

Compilez votre programme en tapant tout simplement
make
ou en utilisant le bouton “Run and debug” de VS Code.

openocd

Lancez
openocd
avec la commande :
openocd -f board/stm32f429discovery.cfg
Celui-ci va se connecter au ST-link intégré à la carte, ce qui nous permettra d'y charger notre programme, et de débugguer.

gdb

Si vous n'utilisez pas VS Code, lancez
gdb
avec la commande suivante, en remplaçant
test.elf
si besoin est par le nom de votre programme :
arm-none-eabi-gdb -ex "target extended-remote :3333" test.elf
Celui-ci va se connecter à openocd. Dans ce terminal nous pourrons saisir des commandes usuelles de gdb afin de contrôler le programme. Voici quelques commandes utiles :
monitor reset halt
arrêter l'exécution du programme et remettre la carte à 0
load
charger le programme sur la carte
continue
commencer/reprendre l'exécution du programme
break fichier:ligne
placer un point d'arrêt dans le fichier indiqué à la ligne indiquée
clear
supprimer le point d'arrêt à la ligne courante
delete x
supprimer le point d'arrêt x
step
exécuter la prochaine instruction
stepi
exécuter la prochaine insctruction assembleur
list
afficher le code source autour de la position courante
print a
afficher le contenu de la variable a (
p/x a
pour afficher en hexa)
dprintf fichier:ligne, "format", variables…
afficher une chaine formatée au format printf quand l'exécution passe par le fichier à la ligne donnée
bt
afficher la pile d'exécution