Changes between Version 90 and Version 91 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 19, 2011, 7:30:24 PM (13 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v90 v91  
    7171Dans ce TP4, le programme utilisateur utilisera l'appel système '''tty_getc_irq()''' pour lire un caractère.
    7272Cet appel système utilise un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''.
    73 Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'',
    74 qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable.
     73Ces deux variables appartiennent au système d'exploitation et sont stockées en mémoire dans le segment ''seg_kunc'', qui est à la fois protégé (non accessible par les programmes utilisateur) et non cachable.
    7574 
    7675Plutôt que d'accéder directement au registre STATUS du contrôleur TTY, l'appel système '''tty_get_irq()'''
     
    7877
    7978Dans une architecture monoprocesseur, le processeur peut exécuter plusieurs tâches (plusieurs programmes utilisateurs) en pseudo-paralléliseme, par multiplexage temporel. Chaque tâche possède alors son propre terminal écran/clavier, mais ces
    80 différents terminaux sont tous contrôlés par le même contrôleur TTY : Chaque terminal possède son propre jeu de 4 registres,
    81 pour communiquer avec l'OS.
     79différents terminaux sont tous contrôlés par le même contrôleur TTY : Chaque terminal possède donc son propre jeu de 4 registres, pour communiquer avec l'OS.
    8280 
    8381Le GIET supporte au plus 8 processeurs, et au plus 4 tâches par processeur. Le GIET supporte donc au plus 32 terminaux ecran/clavier, et définit donc deux tableaux '''_tty_get_buf[32]''' et '''_tty_get_full[32]''', indexés par le numéro du terminal concerné.
     
    192190Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur).
    193191Comme 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.
    194 Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le
    195 composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer.
     192Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer.
    196193
    197194 * Le GIET ne pouvant supporter que 8 processeurs, on vérifiera dans le code de la top-cell que le paramètre NPROCS est inférieur ou égal à 8.
     
    207204 * 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].
    208205
    209  * 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 + icu_segment_increment * proc_id. La valeur de cette variable devra donc  être définie dans le fichier '''tp4_top_multi.cpp pour le matériel, et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000.
    210 
    211  * 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 + tty_segment_increment * proc_id. On prendra  également la valeur 0x00100000.
     206 * 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 + icu_segment_increment * proc_id. La valeur de cette variable ''icu_segment_increment'' devra donc  être définie dans le fichier '''tp4_top_multi.cpp pour le matériel,
     207et dans le fichier '''ldscript''' pour le logiciel. On prendra par exemple la valeur 0x00100000.
     208
     209 * 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 + tty_segment_increment * proc_id. On prendra  également la valeur 0x00100000 pour la variable ''tty_segment_increment''.
    212210
    213211 * Pour la net-list, il faut utiliser des boucles indexées par l'index du processeur pour connecter les composants répliqués et signaux répliqués.