Changes between Version 9 and Version 10 of SoclibCourseTp5


Ignore:
Timestamp:
Oct 19, 2009, 8:47:59 PM (15 years ago)
Author:
nipo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp5

    v9 v10  
    77= 1 Objectifs =
    88
    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.
     9Ce 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.
    1010D'autre part, et puisque l'outil GDB Server permet d'analyser le comportement d'architectures multiprocesseurs,
    11 on en profiter pour introduire les architectures clusterisées utilisant deux niveaux d'indexation.   
     11on en profitera pour introduire les architectures clusterisées utilisant deux niveaux d'indexation.   
    1212
    1313= 2 Outil GDB Server =
     
    1919La documentation de l'outil '''GDB Server''' peut être consultée [https://www.soclib.fr/trac/dev/wiki/Tools/GdbServer ici].
    2020
    21 Le GDB Server permet de:
    22  * poser des points d'arrêt dans le programme en cours d'exécution
    23  * d'exécuter le programme en pas à pas
     21Le 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
    2424 * de visualiser le contenu des registres de n'importe quel processeur
    2525 * de visualiser la valeur stockée à n'importe quelle adresse dans l'espace adressable
     
    4343
    4444Le 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,
     45En prenant le contrôle du GDB Server (par l'intermédiaire du client GDB), on peut donc contrôler le processeur
    4646(pour le faire fonctionnner en pas à pas par exemple), et on peut également contrôler le reste du système
    4747(en effectuant directement des commandes de lecture ou d'écriture vers la mémoire).
     
    5252}}}
    5353
    54 Il faut également complêter le fichier de description de l'architecture utilisé par soclib-cc (fichier platform.desc) :
     54Il faut également complêter le fichier de description de l'architecture utilisé par soclib-cc (fichier `platform.desc`):
    5555{{{
    5656Uses('caba:iss_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:mips32el')
     
    6060
    6161Pour 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 commande du GDB Server. Cela peut être réalisé en définissant la variable d'environnement SOCLIB_GDB avant de lancer le simulateur :
     62et 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 :
    6363{{{
    6464$ export SOCLIB_GDB=START_FROZEN
     
    7070Une 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:
    7171{{{
    72 mipsel_unknown_elf_gdb  soft/bin.soft
     72mipsel-unknown-elf-gdb  soft/bin.soft
    7373}}}
    7474
    7575La première commande à taper dans GDB est la commande permettant de connecter le client GDB au GDB Server:
    7676{{{
    77 (gdb) target remote Localhost:2346
     77(gdb) target remote localhost:2346
    7878}}}
    7979
     
    8181
    8282L'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 re-utiliser le client GDB
    84 standard, le GDB Server considère chaque processeur comme une thread. Pour obtenir le nombre de processeurs
     83monoprocesseur. Nous souhaitons ici contrôler une architecture multi-processeurs. Pour pouvoir réutiliser le client GDB
     84standard, le GDB Server considère chaque processeur comme un thread. Pour obtenir le nombre de processeurs
    8585contrôlables par GDB, il faut taper la commande :
    8686{{{
     
    128128Avec l'argument ''reg'', elle affiche le contenu des registres du processeur qui a détecté un point d'arrêt.
    129129Si 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 de la thread représentant le processeur.
     130utiliser la commande ''thread n'' (où n est le numéro du thread représentant le processeur).
    131131{{{
    132132(gdb) thread n