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 |