Changes between Version 71 and Version 72 of SoclibCourseTp4
- Timestamp:
- Dec 9, 2010, 5:38:21 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v71 v72 161 161 == 4.4 Contrôleur IOC et contrôleur d'écran graphique == 162 162 163 On veut utiliser le contrôleur IOC pour charger dans un tampon mémoire du programme utilisateur une séquence d'images stockées dans le fichier ' "images.raw''' qui est fourni dans l'archive, avant d'afficher ces images sur l'écran graphique contrôlé par le composant FBF.163 On veut utiliser le contrôleur IOC pour charger dans un tampon mémoire du programme utilisateur une séquence d'images stockées dans le fichier '''images.raw''', avant d'afficher ces images sur l'écran graphique contrôlé par le composant FBF. 164 164 Le fichier '''images.raw''' contient des images de 128 lignes de 128 pixels codées en 256 niveaux de gris (un octet par pixel. 165 165 … … 182 182 Modifiez le fichier '''tp3_top.cpp''' et renommez-le '''tp3_top_multi.cpp''' . 183 183 Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur). 184 Comme chaque processeur peut - en principe - exécuter plusieurs tâches en pseudo-parallélisme, et que chaque tâche 185 possède un terminal privé, on peut avoir un grand nombre de terminaux. On aura donc un contrôleur TTY indépendant 186 pour chaque processeur. 184 Comme chaque processeur peut - en principe - exécuter plusieurs tâches en pseudo-parallélisme, et que chaque tâche possède un terminal privé, on peut avoir un grand nombre de terminaux. On aura donc un contrôleur TTY indépendant pour chaque processeur. 185 Pour ce qui concerne les TIMERs, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le 186 composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer. 187 187 188 188 * Le GIET ne pouvant supporter que 8 processeurs, on vérifiera que le paramètre NPROCS est inférieur ou égal à 8. 189 189 190 * Il faut définir des tableaux de pointeurs pour les composants répliqués PROC[i], TTY[i] et ICU[i], ainsi que pour les signaux associés, et introduire des boucles indexées par l'index du processeur chaque fois que ces composants sont concernés. 190 * Il faut définir des tableaux de pointeurs pour les composants répliqués PROC[i], TTY[i] et ICU[i], ainsi que pour les différents signaux connectés à ces composants. 191 192 * Il faut utiliser une boucle indexée par l'index du processeur pour chaque fois que ces composants sont concernés. 191 193 192 194 * Pour l'index des initiateurs (SRCID), on utilisera les valeurs 0 à (NPROCS-1) pour les processeurs, et les valeurs NPROCS et (NPROCS+1) pour le composant IOC et pour le composant DMA respectivement. 193 195 194 * pour l'index des cibles (TGTID), on utilisera les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i].196 * Pour l'index des cibles (TGTID), on utilisera les valeurs (0) à (6) pour les composants matériels non répliqués (ROM, RAM GCD, TIMER, IOC, DMA, FBF). On utilisera les valeurs (7) à ( 7 + NPROCS -1) pour les composants TTY[i]. On utilisera les valeurs (7 + NPROCS) à (7 + 2*NPROCS -1) pour les composants ICU[i]. 195 197 196 198 * il faut définir NPROCS segments pour les composants ICU[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_icu_base + 0x00100000 * proc_id (cette contrainte est imposée par le GIET). 197 199 198 * il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + 0x00100000 * proc_id (cette contrainte est imposée par le GIET). 200 * Il faut définir NPROCS segments pour les NPROCS TTY[i]. L'adresse de base du segment associé au composant ICU[i] est définie comme : seg_tty_base + 0x00100000 * proc_id (cette contrainte est imposée par le GIET). 201 202 * Pour ce qui concerne les interruptions, les interruptions non-répliquées (IRQ_TIMER, IRQ_IOC, IRQ_DMA) 199 203 200 204 '''Question''' : Modifiez le fichier '''tp4_top.cpp''' pour rendre l'architecture générique, conformément aux recommandations ci-dessus.