ASM – Environnements de développement croisé
- 3 -
Etudiez maintenant les variables d’environnement de U-Boot avec printenv et exécutez
l’application hello_world en vous aidant de run, go et des variables d’environnement.
Consignes supplémentaires pour le rendu de votre laboratoire
Répondez aux questions dans votre fichier README.md et complétez avec deux captures d’écran
sur lesquelles on peut voir l’exécution du programme et les commandes utilisées pour le lancer.
(x86 et ARM)
Etape no. 3 - Debugger une application tournant dans l'émulateur qemu
Le debugger est un outil puissant. Nous allons étudier son utilisation dans le cadre des exercices suivants.
Dans le projet exo1, une petite application vous permet de jouer au jeu "Feuille-Caillou-Ciseaux" contre
l’ordinateur. Mais attention l’ordinateur triche tout le temps et utilisera toujours le choix qui lui permet
de vous battre. Une fois l’application compilée le but sera d’utiliser le debugger et de modifier les valeurs
dans les registres à l’exécution afin de tricher à notre tour et ainsi battre l’ordinateur. (Il est demandé de
gagner sans modifier les fichiers sources).
a) Lancez la commande make dans le projet exo1.
⇒ Quelle est la toolchain utilisée dans ce projet ?
b) Lancez cette fois-ci le script ./stf-debug (Ce script démarre la machine cible comme le script ./stf mais
en plus il démarre un serveur gdb afin de pouvoir débugger la machine cible depuis la machine hôte.)
et utilisez la configuration de debug Eclipse intitulée "labo2 (ARM) Debug".
c) Exécutez l'application feuille_caillou_ciseaux en utilisant le même procédé qu’à l’étape
précédente. Utilisez la commande printenv afin de visualiser les variables d'environnement dans cette
version d'U-boot pour vous aider.
(NB: l’environnement émulé attendra que la configuration de debug soit lancée dans Eclipse avant
de pouvoir continuer.)
d) Observez le déroulement du programme en exécutant les commandes “pas à pas” et modifier la valeur
des registres afin de gagner la partie. Le code source de l’application peut vous aider.
e) Il est aussi possible de modifier directement le programme chargé en mémoire dans U-Boot. Utilisez
les commandes md et mw pour modifier le binaire chargé dans U-Boot et changer le message "You
lost ! " par "You win !".
Aidez-vous du debugger et des applications objdump/readelf pour trouver les adresses.
Indications
- La commande md.l <adresse> <#bytes à afficher> vous permet d’explorer et
d’afficher le contenu de la mémoire dans U-Boot.
- La commande mw.l <adresse> <valeur sur 4 bytes> permet d’écrire 4 octets.
- La commande mw.b <adresse> <valeur sur 1 byte> permet d’écrire 1 octet.
- Pour rappel, le processeur est configuré en little-endian.