Changes between Version 9 and Version 10 of SoclibCourseTp5
- Timestamp:
- Oct 19, 2009, 8:47:59 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp5
v9 v10 7 7 = 1 Objectifs = 8 8 9 Ce TP possède un double objectif. D'un côté, on présente l'outil '''GDB Server''' qui est pratiquement indispensable pour déverminer une application logicielle embarquée s'exécutant sur une architecture matérielle prototypée avec SoCLib.9 Ce TP possède un double objectif. D'une part, on présente l'outil '''GDB Server''' qui est pratiquement indispensable pour déverminer une application logicielle embarquée s'exécutant sur une architecture matérielle prototypée avec SoCLib. 10 10 D'autre part, et puisque l'outil GDB Server permet d'analyser le comportement d'architectures multiprocesseurs, 11 on en profiter pourintroduire les architectures clusterisées utilisant deux niveaux d'indexation.11 on en profitera pour introduire les architectures clusterisées utilisant deux niveaux d'indexation. 12 12 13 13 = 2 Outil GDB Server = … … 19 19 La documentation de l'outil '''GDB Server''' peut être consultée [https://www.soclib.fr/trac/dev/wiki/Tools/GdbServer ici]. 20 20 21 Le GDB Server permet de:22 * poser des points d'arrêt dans le programme en cours d'exécution23 * d'exécuter le programme en pas à pas21 Le GDB Server permet: 22 * de poser des points d'arrêt dans le programme en cours d'exécution 23 * d'exécuter le programme pas à pas 24 24 * de visualiser le contenu des registres de n'importe quel processeur 25 25 * de visualiser la valeur stockée à n'importe quelle adresse dans l'espace adressable … … 43 43 44 44 Le GDB server est donc un pseudo-composant matériel, qui s'interface entre le processeur et le cache. 45 En prenant le contrôle du GDB Server (par l'intermédiaire du client GDB), on peut donc contrôler le processeur ,45 En prenant le contrôle du GDB Server (par l'intermédiaire du client GDB), on peut donc contrôler le processeur 46 46 (pour le faire fonctionnner en pas à pas par exemple), et on peut également contrôler le reste du système 47 47 (en effectuant directement des commandes de lecture ou d'écriture vers la mémoire). … … 52 52 }}} 53 53 54 Il faut également complêter le fichier de description de l'architecture utilisé par soclib-cc (fichier platform.desc):54 Il faut également complêter le fichier de description de l'architecture utilisé par soclib-cc (fichier `platform.desc`): 55 55 {{{ 56 56 Uses('caba:iss_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:mips32el') … … 60 60 61 61 Pour utiliser GDB Server, il est généralement préférable de lancer le simulateur dans un mode où la plate-forme est "gelée", 62 et attend une commandedu GDB Server. Cela peut être réalisé en définissant la variable d'environnement SOCLIB_GDB avant de lancer le simulateur :62 et attend la connexion du GDB Server. Cela peut être réalisé en définissant la variable d'environnement SOCLIB_GDB avant de lancer le simulateur : 63 63 {{{ 64 64 $ export SOCLIB_GDB=START_FROZEN … … 70 70 Une fois que le simulateur est lancé, il faut lancer (dans une autre fenêtre), l'exécution du client GDB adapté au type de processeur instancié dans la plate-forme, en lui passant en argument le nom du fichier contenant le code binaire exécuté par les processeurs de l'architecture. Pour un processeur MIPS32: 71 71 {{{ 72 mipsel _unknown_elf_gdb soft/bin.soft72 mipsel-unknown-elf-gdb soft/bin.soft 73 73 }}} 74 74 75 75 La première commande à taper dans GDB est la commande permettant de connecter le client GDB au GDB Server: 76 76 {{{ 77 (gdb) target remote Localhost:234677 (gdb) target remote localhost:2346 78 78 }}} 79 79 … … 81 81 82 82 L'outil GDB standard permet par d'analyser le comportement d'applications multi-threads s'exécutant sur une architecture 83 monoprocesseur. Nous souhaitons ici contrôler une architecture multi-processeurs. Pour pouvoir r e-utiliser le client GDB84 standard, le GDB Server considère chaque processeur comme un ethread. Pour obtenir le nombre de processeurs83 monoprocesseur. Nous souhaitons ici contrôler une architecture multi-processeurs. Pour pouvoir réutiliser le client GDB 84 standard, le GDB Server considère chaque processeur comme un thread. Pour obtenir le nombre de processeurs 85 85 contrôlables par GDB, il faut taper la commande : 86 86 {{{ … … 128 128 Avec l'argument ''reg'', elle affiche le contenu des registres du processeur qui a détecté un point d'arrêt. 129 129 Si on veut observer les valeurs contenues dans les registres d'un autre processeur, il faut préalablement 130 utiliser la commande ''thread n'' (où n est le numéro d e la thread représentant le processeur.130 utiliser la commande ''thread n'' (où n est le numéro du thread représentant le processeur). 131 131 {{{ 132 132 (gdb) thread n