Changes between Version 59 and Version 60 of SoclibCourseTp4
- Timestamp:
- Dec 5, 2010, 12:30:18 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v59 v60 118 118 Outre les fichiers qui permettent de générer le simulateur de l'architecture matérielle, cette archive contient également le sous-répertoire ''soft'' qui est utilisé pour la génération du logiciel embarqué. 119 119 120 Question''' : Complêtez le fichier '''tp4_top.cpp''' pour définir les adresses de base et les tailles des cinq segments associés aux composants ICU, TIMER, IOC, FBF et DMA. 120 '''Question''' : Complêtez le fichier '''tp4_top.cpp''' pour définir les adresses de base et les tailles des cinq segments associés aux composants ICU, TIMER, IOC, FBF et DMA, et pour introduire ces 5 segments dans la table des segments. Ces segments sont-ils cachables ou non cachables? 121 121 122 '''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les paramètres des constructeurs des cinq nouveaux composants ICU, TIMER, IOC, FBF et DMA. Utilisez le Makefile pour pour générer le simulateur.122 '''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les paramètres des constructeurs des cinq nouveaux composants ICU, TIMER, IOC, FBF et DMA. 123 123 124 '''Question''' : Complétez la net-list pour connecter les 4 lignes d'interruption utilisées dans cette architecture mono-processeur. 124 '''Question''' : Complétez la net-list dans le fichier '''tp4_top.cpp''' pour connecter les 4 lignes d'interruption utilisées dans cette architecture mono-processeur. 125 126 '''Question''' : Complétez le fichier '''tp4_top.desc''' pour pouvoir utiliser soclib-cc, et utilisez le Makefile pour pour générer le simulateur. 125 127 126 128 = 4. Logiciel embarqué = 127 129 130 Le répertoire ''soft'' contient les quatre fichiers '''ldscript''', '''reset.s''', '''main.c''', et '''Makefile''' permettant de générer 131 le logiciel embarqué. 132 128 133 == 4.1 Code de boot == 129 134 130 Le ''code de boot'' défini dans le fichier '''reset.s''' doit maintenant initialiser le vecteur d'interruption (c'est à dire le tableau indexé par le numéro d'interruption, et contenant les adresses des différentes routines d'interruption).135 Le ''code de boot'' défini dans le fichier '''reset.s''' doit initialiser le vecteur d'interruption (c'est à dire le tableau indexé par le numéro d'interruption, et contenant les adresses des différentes routines d'interruption). Il doit également initialiser le composant ICU, pour démasquer les interruptions qu'on veut autoriser. 131 136 132 '''Question''' : En ouvrant le fichier '' isr.s'', déterminez les nom des quatre ISRs associées aux composants Timer, TTY,133 IOC et DMA. Modifiez le fichier reset.spour initialiser les entrées correspondantes du vecteur d'interruption.137 '''Question''' : En ouvrant le fichier '''isr.s''', déterminez les nom des quatre ISRs associées aux composants Timer, TTY, 138 IOC et DMA. Modifiez le fichier '''reset.s''' pour initialiser les entrées correspondantes du vecteur d'interruption. 134 139 135 == 4.2 Programme utilisateur utilisant le TTY == 140 '''Question''' : Le fichier '''icu.h''' contient la carte des registres adressables du composant ICU. Ouvrez ce fichier (rangé) 141 dans le répertoire du GIET) pour déterminer l'offset du registre ICU_MASK_SET, et complétez le fichier '''reset.s''' pour 142 démasquer les quatre lignes d'interruption utilisées : irq_in[0], irq_in[1], irq_in[5], irq_in[6], 136 143 137 '''Question''' : Ecrire ou modifier un programme main() réalisant un interprêteur de commandes utilisant les appels système ''tty_getc_irq()'', tty_getw_irq(), tty_printf. 144 == 4.2 Activation du TIMER == 138 145 139 == 4.3 Activation du TIMER == 146 On va commencer par exécuter un programme main() très simple, qui se contente d'activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier ''stdio.c'' pour déterminer quels sont les deux appels système qui permettent de définir la période et d'autoriser le TIMER à générer les interruptions périodiques. 140 147 141 On veut maintenant activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier ''stdio.c'' pour 142 déterminer quels sont les deux appels système qui permettent de définir la période du TIMER et d'autoriser les interruptions périodiques. 148 '''Question''' : modifiez le fichier '''main.c''' pour que le TIMER génère des interruptions avec une période de 1 000 000 cycles. Compilez ce programme, et exécutez-le sur le simulateur. 143 149 144 '''Question''' : Modifiez le programme main()pour que le TIMER génère une interruption périodique tous les 100 000 cyles. Exécutez ce nouveau programme et vérifiez le comportement de la machine. 150 == 4.3 Programme utilisateur utilisant le TTY == 145 151 146 '''Question''' : Pour le fun, un interprêteur de commande permettant d'activer ou de désactiver le TIMER 152 On veut maintenant utiliser le contrôleur TTY en écrivant 153 un petit interprêteur de commandes, qui exécute une boucle infinie dans laquelle il lit des commandes tapées au clavier 154 (un seul caractère à la fois) et les exécute. 155 On traitera au minimum les trois commandes suivantes: 156 * '''d''' : desactivation des interruptions générées par le TIMER 157 * '''a''' : activation des interruptions générées par le TIMER 158 * '''q''' : sortie du programme par l'appel système exit() 147 159 148 == 4.4 Contrôleur de disque == 160 '''Question''' : Modifiez le programme main() pour écrire cet interprêteur de commandes en utilisant les appels système ''tty_getc_irq()'' et tty_puts(). 161 162 == 4.4 Contrôleur IOC et Contrôleur graphique == 149 163 150 164 Le contrôleur de disque disponible dans SoCLib... … … 152 166 = 5. Architecture multi-processeurs générique = 153 167 154 On va dans cette section modéliser une architecture matérielle comportant un nombre variable de processeurs de sorte que le nombre de processeurs soit un paramètre ; défini sur la ligne de commande au lancement du simulateur. 168 Modifiez l'architecture matérielle de la section 3 pour introduire un nombre variable de processeurs. 169 Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur), 170 et son propre contrôleur TTY (un contrôleur TTY par processeur). 171 Le nombre de processeurs doit être un paramètre défini sur la ligne de commande au lancement du simulateur. 172 155 173 On souhaite exécuter sur cette architecture matérielle une application logicielle multi-tâches coopérative. 156 174 … … 161 179 == 5.4 Programme coopératif multi-tâches == 162 180 163 164 165 166 181 = 6 Compte-rendu = 167 182