Changes between Version 69 and Version 70 of SoclibCourseTp4
- Timestamp:
- Dec 8, 2010, 9:35:45 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v69 v70 153 153 (un seul caractère à la fois) et les exécute. 154 154 On traitera au minimum les trois commandes suivantes: 155 * '''a''' : activation des interruptions générées par le TIMER 155 156 * '''d''' : desactivation des interruptions générées par le TIMER 156 * '''a''' : activation des interruptions générées par le TIMER 157 * '''q''' : sortie du programme par l'appel système exit() 158 159 '''Question''' : Modifiez le fichier '''main_0.c''' pour écrire cet interprêteur de commandes en utilisant les appels système '''tty_getc_irq()''' et '''tty_puts()'''. Compilez en utilisant le Make file du répertoire soft, et exécutez ce programme interactif sur le simulateur. 157 * '''q''' : sortie de l'interprêteur par l'appel système exit() 158 159 '''Question''' : Complétez le fichier '''main_0.c''' pour coder cet interprêteur de commandes en utilisant les appels système '''tty_getc_irq()''' et '''tty_puts()'''. Compilez en utilisant le Makefile du répertoire soft, et exécutez ce programme interactif sur le simulateur. 160 160 161 161 == 4.4 Contrôleur IOC et contrôleur d'écran graphique == … … 166 166 '''Question''' : Quel est l'encombrement d'une image en nombre de blocs? 167 167 168 '''Question''' : Ecrivez un nouveau programme main ()dans un fichier '''main_1.c'''. Vous utiliserez les appels système '''ioc_read()''' et '''ioc_completed()''' pour charger une image dans un tampon mémoire de 128*128 octets tab[128][128], déclaré dans la fonction main(). Dans quel segment sera rangéé ce tableau tab[128][128]?168 '''Question''' : Ecrivez un nouveau programme main_1 dans un fichier '''main_1.c'''. Vous utiliserez les appels système '''ioc_read()''' et '''ioc_completed()''' pour charger une image dans un tampon mémoire de 128*128 octets tab[128][128], déclaré dans la fonction main(). Dans quel segment sera rangéé ce tableau tab[128][128]? 169 169 Utilisez l'appel système '''fbf_write()''' pour afficher cette image sur l'écran graphique. 170 170 N'oubliez pas de tester systématiquement la valeur du code de retour chaque fois que vous utilisez un appel système. … … 172 172 173 173 '''Question''' : Complétez le fichier '''main_1.c''' pour encapsuler cette séquence chargement / affichage dans une boucle 174 de façon à afficher successivement les images du fichier '''images.raw'''. On pourra utiliser les appels système '''tty_puts()''' et 175 '''tty_getc_irq''' pour rendre interactif le passage à l'image suivante. 174 de façon à afficher successivement les images du fichier '''images.raw'''. On pourra utiliser l'appel système '''tty_getc_irq''' pour rendre interactif le passage à l'image suivante. 176 175 177 176 = 5. Architecture multi-processeurs générique = … … 182 181 183 182 Modifiez le fichier '''tp3_top.cpp''' et renommez-le '''tp3_top_multi.cpp''' . 184 Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur), 185 et son propre contrôleur TTY (un contrôleur TTY par processeur). 186 Le nombre de processeurs NPROCS doit être un paramètre défini sur la ligne de commande au lancement du simulateur. 187 Le GIET ne pouvant supporter que 8 processeurs, on vérifiera que le paramètre NPROCS est inférieur ou égal à 8. 188 189 Il faut définir des tableaux de pointeurs pour les composants PROC[i], ICU[i], et TTY[i], ainsi que pour les signaux associés, 190 et introduire des boucles indexées par l'index du processeur chaque fois que ces composants sont concernés. 191 192 * il faut définir NPROCS segments pour les NPROCS TTY[i] 193 * il faut définir NPROCS segments pour les NPROCS ICU[i] 194 * Les NPROCS composants 183 Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur). 184 Le nombre de processeurs NPROCS sera défini comme un paramètre supplémentaire -NPROCS sur la ligne de commande au lancement du simulateur. Le GIET ne pouvant supporter que 8 processeurs, on vérifiera que le paramètre NPROCS est inférieur ou égal à 8. 185 186 * Pour 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. 187 188 * Il faut définir des tableaux de pointeurs pour les composants PROC[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. 189 190 * il faut définir NPROCS segments pour les NPROCS 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 imposée par le GIET). 195 191 196 192 '''Question''' : Modifiez le fichier '''tp3_top.desc''' pour créer un fichier '''tp3_tp_multi.desc''', et modifiez le fichier '''Makefile'''