INFO2 - TP n°5 Utilisation de l`outil de debug Keil avec la carte

INFO2 TP5 page 1
INFO2 - TP n°5
Utilisation de l'outil de debug Keil avec la carte mbed LPC1768
PARTIE 1 Présentation et Installation de l'outil Keil
Pour faire le debug d'un code développé pour une plateforme embarqué comme le mbed LPC1768, il
y a deux solutions:
faire des affichages sur une console
ou bien utiliser un environnement de debug.
La première solution est simple à mettre en œuvre (il s'agit d'ajouter des printf dans le code source)
mais demeure peu pratique et peu efficace. Dans ce TP n°5 nous allons opter pour la seconde
solution en utilisant l'outil de debug Keil disponible pour les processeurs ARM. Cet outil s'utilise très
simplement depuis le port USB de la carte LPC1768. L'outil Keil permet de visualiser le code généré
par le compilateur (le code assembleur) ainsi que les différents registres du processeur ARM Cortex-
M3 ou encore de mettre des points d'arrêts dans le code (breakpoints).
1) Faire un upgrade du bootloader (compatibilité avec l'interface CMSIS-DAP)
Avant de pouvoir lancer l'outil Keil avec la plateforme LPC1768 il faut s'assurer que la version du
bootloader est compatible. En effet, l'interface CMSIS-DAP utilisée pour reliée le LPC1768 à l'outil
Keil n’est supportée que pour la version 141212 du bootloader.
Remarque: Le bootloader est le programme lancé au démarrage de votre plateforme. Ce programme
est stocké dans la mémoire Flash du LP1768.
Pour effectuer un upgrade du bootloader (flasher votre mbed), suivre les instructions indiquées sur
ce lien:
http://developer.mbed.org/handbook/Firmware-LPC1768-LPC11U24
2) Installer les outils Keil
Les outils Keil (la MDK Version 5) sont déjà installés en salle 3A. Si jamais les outils ne sont pas
installés sur votre machine, voici le lien pour trouver les outils à installer :
http://www.keil.com/dd2/nxp/lpc1768/
Remarque : une inscription est nécessaire pour télécharger les outils Keil.
Important: c'est une version d’évaluation avec certaines restrictions comme par exemple la taille
programme + données qui est limitée à 32 kb (mais c'est largement suffisant pour ce que nous
aurons à faire dans ce TP).
INFO2 TP5 page 2
PARTIE 2 Prise en main de l'outil Keil
3) Exporter un projet mbed sur la cible Keil µVision
Une fois l'outil Keil installé, nous allons exporter (pour la cible µVision) un projet sous
l’environnement en ligne de mbed (clic droit sur votre projet et faire "Export Program…". Cette étape
génère un .ZIP qu’il faut décompresser où vous voulez.
Créer un projet sous l'environnement de développement mbed (mbed.org) et écrire le programme
suivant qui permet de faire clignoter une LED.
// Chenillard sur les 4 leds de la carte mbed
#include "mbed.h"
DigitalOut myled[4]= {LED1, LED2, LED3, LED4};
Serial pc(USBTX, USBRX);
int main()
{
pc.printf("Chenillard...\n");
int leds = 0x1;
int i = 0;
while(1) {
myled[i] = 1; // Led ON
wait(0.2); // unit in second
myled[i++] = 0; // Led ON
leds = (leds<<1);
if (leds == 0x10) {
leds = 1;
i=0;
}
}
}
4) Lancer l'outil Keil µVision
Lancer les outils Keil (µVision) et ouvrir le projet qui a été néré depuis mbed en ligne (Project->
Open Project). Le projet a une extension .uvproj (cliquer sur "Migrate to Device Pack" afin de générer
un projet compatible avec la version de Keil).
Il faut à présent vérifier la configuration de l'outil Keil pour la cible LPC1768.
Depuis l’IDE Keil, allez dans le menu
a. Flash-> Configure Flash Tools…
b. Sélectionner “CMSIS-DAP Debugger” dans « Use Target Driver for Flash Programming »
INFO2 TP5 page 3
c. Ensuite cliquer sur “Settings” puis “Add”
d. Il reste à choisir la cible, ici LPC17xx
e. Avant de lancer le debugger il est nécessaire de compiler le projet, pour cela aller dans
"Project -> Build Target" ou plus simplement en cliquant sur la touche F7. Cette opération crée un
exécutable compatible pour le mode debug et dont l'extension du fichier est ".axf".
5) Il reste à lancer le debugger : Menu Debug -> Start/Stop Debug Session.
Si tout se passe bien vous pouvez visualiser le code désassemblé, la mémoire, les registres, mettre
des point d’arrêts, des watch de variables, etc… bref faire du debug. Mais nous verrons cela dans la
partie 3 de ce TP.
Pour lancer l’exécution du programme il suffit de faire F5 (ou Debug-> Run).
Vérifier que le programme s'exécute correctement (chenillard avec les leds de la carte mbed).
INFO2 TP5 page 4
Vérifier que la connexion au Terminal pour les printf/scanf est bien fonctionnelle.
Tout ce que nous venons de voir (ou presque) est résumé sur cette page :
http://developer.mbed.org/handbook/CMSIS-DAP-MDK
Code désassemblé
Code C
Les registres
INFO2 TP5 page 5
PARTIE 3 Exécuter du code en mode Debug
6) Mettre des points d'arrêts dans le code et faire une exécution pas à pas
a) Les points d'arrêts (breakpoints)
Grâce à l'outil Keil, nous pouvons mettre un point d'arrêt (breakpoint) dans le code C. Un breakpoint
permet de stopper l'exécution d'un programme à un endroit précis
Remarque : il est également possible de stopper l'exécution lorsqu'un programme accède à une
donnée en mémoire en lecture ou écriture.
Pour mettre un breakpoint il suffit de cliquer à gauche dans la fenêtre affichant le code C à l'endroit
l'on souhaite s'arrêter. Un petit rond rouge apparait alors indiquant que le breakpoint a bien été
posé (cf. Figure ci-dessous).
Lancer l'exécution du programme en appuyant successivement sur la touche F5 (i.e. Run). Que
constatez-vous? Expliquez.
b) L'exécution pas à pas (step by step)
La touche F5 permet de lancer l'exécution du programme. Dans ce cas, l'exécution ne s'arrête que si
le programme rencontre un point d'arrêt ou lorsqu'il se termine. Or, il est parfois bien utile de faire
une exécution du code pas à pas (step-by-step en anglais) afin de bien analyser et comprendre ce qui
se passe…
c) Différence entre les différents modes d'exécution pas à pas
Expliquer la différence entre les différentes possibilités d'exécution pas à pas :
- Step
Le breakpoint a été posé
Les différentes possibilités de faire
une exécution pas à pas
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !