Changes between Version 66 and Version 67 of SoclibCourseTp4
- Timestamp:
- Dec 5, 2010, 10:43:03 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v66 v67 63 63 en allant écrire dans un emplacement prédéfini en mémoire. 64 64 65 == 2.2 Communication entre l e GIETet 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 au68 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 67 Dans le TP3, le programme utilisateur utilise l'appel système ''tty_getc()'' pour lire un caracère. 68 Cet appel système bloquant contient une boucle de scrutation dans laquelle, à chaque tour de boucle, 69 69 on 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.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 utilisera l'appel système ''tty_get_irq()'' pour lire un caractère. 73 73 Cet appel système utilise un tampon mémoire partagé '''_tty_get_buf''', protégé par une variable de synchronisation '''-tty_get_full'''. 74 74 Ces deux variables appartiennent au système d'exploitation et sont stockées dans le segment ''seg_kunc'', … … 134 134 == 4.1 Code de boot == 135 135 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.136 En 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. 137 137 138 138 '''Question''' : En ouvrant le fichier '''isr.s''', déterminez les nom des quatre ISRs associées aux composants Timer, TTY, … … 141 141 '''Question''' : Le fichier '''icu.h''' contient la carte des registres adressables du composant ICU. Ouvrez ce fichier (rangé) 142 142 dans 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 == 143 dé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 146 146 147 147 On 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. 148 148 149 '''Question''' : modifiez le fichier '''main_0.c''' pour que le TIMER génère des interruptions avec une période de 1 000000 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. 150 150 151 151 == 4.3 Utilisation du contrôleur TTY == … … 163 163 == 4.4 Contrôleur IOC et contrôleur d'écran graphique == 164 164 165 On v autiliser 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.165 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. 166 166 Le fichier '''images.raw''' contient des images de 128 lignes de 128 pixels codées en 256 niveaux de gris (un octet par pixel. 167 167