NIHM : nouvelles Interactions Humain-Machine
Le SDK est en C, tout comme le code des programmes pour microcontrôleurs ST microelectronics et bien d'autres. Il inclut : Récupérez l'archive, contenant un repository git avec dessus un Makefile et code source d'exemple. Les documentations des divers composants avec lesquels on va travailler vous seront aussi utiles, et rappelées dans les fiches de TP individuelles. Décompressez cette archive dans votre
home
.
uC-sdk
est déclaré cumme un submodule GIT, ce qui permet de ne pas stocker son historique en doublon, et de récuérer facilement ses mises à jour par son repository original. Pour le récupérer, exécutez :
git submodule init ; git submodule update
Créez un repository sur https://gitlab-etu.fil.univ-lille1.fr portant votre/vos nom(s) et ajoutez-le en remote dans le repository que vous avez dézippé avec la commande
git remote add origin …
Vous pourrez ainsi conserver l'historique de votre travail sur le Gitlab de l'université. 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
.
Nous utiliserons 3 onglets de terminal. Le permier servira à compiler votre programme. Le deuxième servira à lancer
openocd
. Le troisième servira à débugguer avec
gdb
.

Compilation

Compilez votre programme en tapant tout simplement
make
.

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

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)
bt
afficher la pile d'exécution