Changes between Version 69 and Version 70 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 8, 2010, 9:35:45 PM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v69 v70  
    153153(un seul caractère à la fois) et les exécute.
    154154On traitera au minimum les trois commandes suivantes:
     155 * '''a''' : activation des interruptions générées par le TIMER
    155156 * '''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.
    160160
    161161== 4.4 Contrôleur IOC et contrôleur d'écran graphique ==
     
    166166'''Question''' : Quel est l'encombrement d'une image en nombre de blocs?
    167167
    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]?
    169169Utilisez l'appel système '''fbf_write()''' pour afficher cette image sur l'écran graphique.
    170170N'oubliez pas de tester systématiquement la valeur du code de retour chaque fois que vous utilisez un appel système.
     
    172172
    173173'''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.
     174de 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.
    176175
    177176= 5. Architecture multi-processeurs générique =
     
    182181
    183182Modifiez 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 
     183Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur).
     184Le 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).
    195191
    196192'''Question''' : Modifiez le fichier '''tp3_top.desc''' pour créer un fichier '''tp3_tp_multi.desc''', et modifiez le fichier '''Makefile'''