Changes between Version 20 and Version 21 of SoclibCourseTp3


Ignore:
Timestamp:
Sep 17, 2009, 4:36:14 PM (15 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp3

    v20 v21  
    4444de l'espace addressable). Cela signifie que ce composant décode les bits de poids fort de l'adresse VCI
    4545pour adresser le segment désigné. Les dimensions des tableaux qui implémentent les bancs mémoire
    46 physique sont définis par les longueurs des segments définis dans la MappingTable.
     46physique sont définis par les longueurs des segments définis dans la !MappingTable.
    4747
    4848= 3 Génération et chargement du logiciel embarqué =
     
    9191à la MappingTable, il peut déterminer quels segments de la RAM (ou de la ROM) doivent être initialisés.
    9292
    93 On ''économise'' ainsi plusieurs millions de cycles, et le code de boot peut être beaucoup plus court.
     93On économise ainsi plusieurs millions de cycles de simulation, et le code de boot peut être beaucoup plus court.
    9494 
    9595= 4 Travail à réaliser =
     
    105105De même, l'utilisation d'un contrôleur de terminal suppose l'ouverture d'une ou plusieurs fenêtres XTERM sur la station de travail qui exécute la simulation.
    106106
    107 Nous ne les décrivons pas en détail, mais vous pouvez consulter le fichier ''Makefile'' pour avoir la liste de tous les
     107Vous pouvez consulter le fichier ''Makefile'' pour avoir la liste de tous les
    108108fichiers objets qui doivent être compilés pour générer le simulateur de cette architecture très simple.
    109109
     
    155155 * le fichier '''Makefile''' permet de lancer la compilation du logiciel embarqué.
    156156
    157 On peut considérer que les trois fichiers ''reset.s'', ''giet.s'', et ''syscalls.s'' jouent le rôle d'un système d'exploitation
    158 extrêmement réduit, qui se contente de lancer une unique application en mode ''user'', en protègeant l'accès aux
    159 périphériques et à la mémoire.
    160  
    161 Question : Quels sont les appels système qui permettent d'accéder à un terminal TTY ?
     157'''Question''' : Quels sont les appels système qui permettent d'accéder à un terminal TTY ? Quels sont les arguments des fonctions C correspondantes?
    162158
    163159On rappelle que l'instruction ''eret'' de sortie du GIET ou du code de boot effectue principalemnt deux actions :
     
    165161 1. Elle effectue un branchement à l'adresse contenue dans le registre EPC (registre 14 du coprocesseur ''système'').
    166162
    167 Question : Quels sont les registres initialisés par le code de boot ? pouquoi ces initialisations ?
    168 
    169 Puisqu'on dispose d'un contrôleur de terminal dans l'architecture, le premier programme que vous allez exécuter se contentera d'afficher le célèbre ''hello world'' sur le terminal. Complêtez le fichier ''main.c'' en utilisant la fonction C ''fputs()''. N'oubliez pas de terminer proprement le programme par un appel à la fonction C ''exit()''.
    170 
    171 Lancez l'exécution du Makefile. Un fichier ''soft.bin'' doit doit être créé dans le répertoire ''soft''.
    172  
    173 le fichier ''soft.bin.txt'' contient un version desassemblée de ce code binaire, qui vous permet de visualiser le
    174 code qui va être chagé dans les mémoires du prototype virtuel, pour exécution par le processeur MIPS32.
    175 
    176 == 4.3 Instanciation des modèles des composants ==
     163'''Question''' : Quels sont les registres initialisés par le code de boot ? pouquoi ces initialisations ?
     164
     165Puisqu'on dispose d'un contrôleur de terminal dans l'architecture, le premier programme que vous allez exécuter se contentera d'afficher le célèbre ''hello world'' sur le terminal. Ouvrez lz fichier ''soft/main.c''.
     166
     167'''Question''' : Que fait ce programme ? (on rappelle que la fonction ''getc()'' est bloquante, et ne rend pas la main au programme appelant tant qu'un caractère
     168n'a pas été saisi au clavier).
     169
     170Lancez l'exécution du Makefile. Deux fichiers ''soft.bin'' et ''soft.bin.txt'' doivent  être créé dans le répertoire ''soft'' :
     171Le fichier ''soft.bin'' contient le code binaire au format ELF, et le fichier ''soft.bin.txt'' contient un version desassemblée (donc lisible) de ce code binaire.
     172
     173== 4.3 Définition de l'architecture matérielle
     174
     175Il faut  compléter le fichier ''tp3_top.cpp'', pour définir les segments enregistrés dans la MappingTable,
     176définir les arguments des constructeurs ainsi que les valeurs des paramètres template des différents composants matériels instanciés,
     177et définir le cheminom permettant au ''loader'' des composants ROM et RAM d'accéder au fichier ELF.
     178
     179'''Question''' : Parmi les 7 segments utilisés dans cette l'architecture, lesquels doivent être déclarés cachables ?
     180
     181'''Question''' : Quel est le nombre de bits de poids fort de l'adresse qui doivent être décodés par le contrôleur du bus
     182pour déterminer la cible VCI désignée ? Cette information est un des arguments du constructeur de la !MappingTable.
     183
     184'''Question''' quels sont les bits d'adresse qui doivent être décodés par le contrôleur du cache, pour déterminer
     185qu'une adresse appartient à un segment non-cachable, et doit être diredtement transmise à la mémoire ?
     186Cette information est un autre argument du constructeur de la !MappingTable.
    177187
    178188Comme dans le TP2, il faut modifier tous les fichiers des composants qui possèdent des paramètres templates pour définir
    179 les valeurs de ces paramètres templates. Il faut ajouter à la fin de chaque fichier une ligne du type :
     189les valeurs de ces paramètres avant de générer le fichier objet correspondant.
     190Il faut donc ajouter à la fin du fichier ''vci_lcd_coprocessor.cpp'' la ligne  :
     191
    180192{{{
    181193template class VciLcdCoprocessor<soclib::caba::VciParams<4, 8, 32, 1, 1, 1, 12, 1, 1, 1> >;
    182194}}}
    183195
    184 == 4.4 Définition de la Top-cell  ==
    185 
    186 Il faut compléter le fichier ''tp3_top.cpp'', pour définir complêtement la MappingTable,
    187 définir les arguments des constructeurs et les valeurs des paramètres template des différents composants matériels instanciés,
    188 et définir le cheminom permettant au ''loader'' d'accéder au fichier ELF.
    189 
    190 == 4.5 Compilation et génération du simulateur ==
    191 
    192 Complêtez le Makefile qui vous est fourni dans le répertoire TP3, pour définir l'ensemble de tous les fichiers
    193 objet utilisés pour construire le simulateur ''tp3_mono_simulator.x''.
    194 
    195 Lancez la compilation, puis exécutez la simulation.
     196Il faut faire de même pour les autres composants matériels instanciés.
     197
     198Quand tout ceci est fait, lancez le Makefile qui vous est fourni dans le répertoire TP3, pour générer le simulateur ''simulator.x''.
     199
     200== 4.5 Lancement de la simulation
     201
     202Lancez la simulation en lançant la commande habituelle:
     203{{{
     204$ ./simulator.x 2000
     205}}}
     206
     207En cas de problème lors de l'éxécution, vous pouvez relancer la compilation du simulateur en activant le mode DEBUG.
     208Il faut modifier le fichier Makefile en ajoutant un flag supplémentaire dans la list des flags de gcc :
     209{{{
     210CFLAGS = -Wno-deprecated -DSOCLIB_MODULE_DEBUG
     211}}}
     212
     213Ce flag permet d'activer les directives de compilation conditionnelle qui se trouvent
     214à la fois dans le fichier ''tp3_top.cpp'', et dans les modèles des composants matériels.
     215
     216Pour attirer votre attention sur des erreurs fréquentes, faites les essais suivants :
     217 * Modifiez l'adresse de base du segment ''seg_lcd'' pour lui donner la valeur 0xB0000000 au lieu de 0x9000000. Relancez la compilation et la simulation. Expliquez les résultats obtenus.
     218 1. Déclarez les segments correspondant aux périphériques (seg_tty et seg_lcd) comme cachables, le processeur part en exception
     219en signalant une erreur d'accès mémoire. Expliquez pourquoi.
    196220
    197221== 4.6 Modification du logiciel embarqué ==
    198222
    199 Il est maintenant possible de modifier le logiciel embarqué (fichier ''main.c''), sans modifier l'architecture matérielle (fichier ''tp3_top.cpp'').
    200 L'application logicielle ''hello world'' n'utilisait pas le coprocesseur LCD.
     223Puisque le logiciel embarqué est chargé dynamiquement dans la RAM et dans la ROM lors du lancement du simulateur,
     224il est possible de modifier le logiciel embarqué (fichier ''bin.soft''), sans modifier l'architecture matérielle et donc
     225sans recompiler le simulateur et sans avoir à regénérer le fichier ''simulator.x''.
     226
     227On peut donc maintenant écrire une application logicielle un peu plus complexe, qui utilise le coprocesseur LCD,
     228simplement en modifiant le fichier ''main.c'' dans le répertoire ''soft'', et en relançant la compilation et la génération
     229du fichier ''bin.soft''.
     230
    201231Modifiez le fichier ''main.c'', pour que les programme C exécute une boucle infinie dans laquelle on effectue successivement
    202232les sept opérations suivantes :