Changes between Version 66 and Version 67 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 5, 2010, 10:43:03 PM (15 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v66 v67  
    6363en allant écrire dans un emplacement prédéfini en mémoire.
    6464
    65 == 2.2 Communication entre le GIET et le contrôleur TTY ==
    66 
    67 Dans le TP3, le programme utilisateur utilise l'appel système ''tty_getc()'' pour lire un caracère saisi au
    68 clavier. Cet appel système bloquant contient une boucle de scrutation dans laquelle, à chaque tour de boucle,
     65== 2.2 Communication entre l'OS et le contrôleur TTY ==
     66
     67Dans le TP3, le programme utilisateur utilise l'appel système ''tty_getc()'' pour lire un caracère.
     68Cet appel système bloquant contient une boucle de scrutation dans laquelle, à chaque tour de boucle,
    6969on effectue une transaction sur le bus pour lire la valeur du registre STATUS du terminal TTY concerné.
    70 On ne sort de cette boucle que lorsqu'un caractère a effectivement été saisi. au clavier.
    71 
    72 Dans ce TP4, le programme utilisateur utilise l'appel système ''tty_get_irq()'' pour lire un caractère.
     70On ne sort de cette boucle que lorsqu'un caractère a effectivement été saisi au clavier.
     71
     72Dans ce TP4, le programme utilisateur utilisera l'appel système ''tty_get_irq()'' pour lire un caractère.
    7373Cet appel système utilise un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''.
    7474Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'',
     
    134134== 4.1 Code de boot ==
    135135
    136 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.
     136En plus des registres $28, $29, SR et EPC le ''code de boot'' 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.
    137137
    138138'''Question''' : En ouvrant le fichier '''isr.s''', déterminez les nom des quatre ISRs associées aux composants Timer, TTY,
     
    141141'''Question''' : Le fichier '''icu.h''' contient la carte des registres adressables du composant ICU. Ouvrez ce fichier (rangé)
    142142dans le répertoire du GIET) pour déterminer l'offset du registre ICU_MASK_SET, et complétez le fichier '''reset.s''' pour
    143 démasquer les quatre lignes d'interruption utilisées : irq_in[0], irq_in[1], irq_in[5], irq_in[6],
    144 
    145 == 4.2 Activation du TIMER ==
     143démasquer les quatre lignes d'interruption utilisées : irq_in[0], irq_in[1], irq_in[2], irq_in[3].
     144
     145== 4.2 Activation du TIMER ==o
    146146
    147147On 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.
    148148
    149 '''Question''' : modifiez le fichier '''main_0.c''' pour que le TIMER génère des interruptions avec une période de 1 000 000 cycles.
     149'''Question''' : modifiez le fichier '''main_0.c''' pour que le TIMER génère des interruptions avec une période de 100000 cycles.
    150150
    151151== 4.3 Utilisation du contrôleur TTY ==
     
    163163== 4.4 Contrôleur IOC et contrôleur d'écran graphique ==
    164164
    165 On va 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.
     165On 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.
    166166Le fichier '''images.raw''' contient des images de 128 lignes de 128 pixels codées en 256 niveaux de gris (un octet par pixel.
    167167