Changes between Version 55 and Version 56 of Archi-1-TP9
- Timestamp:
- Dec 4, 2020, 2:44:35 AM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v55 v56 50 50 Les trois figures ci-dessous donnent des informations sur l'architecture du prototype **almo1** sur lequel vous allez travailler. 51 51 * À droite, vous avez un schéma de connexion simplifié. 52 * Au centre, vous avez la représentation des 4 registres internes du contrôleur de terminal TTYnécessaires pour commander un couple écran-clavier.52 * Au centre, vous avez la représentation des 4 registres internes du contrôleur de terminal `TTY` nécessaires pour commander un couple écran-clavier. 53 53 * À gauche, vous avez la représentation de l'espace d'adressage implémenté pour le prototype. 54 54 … … 58 58 59 59 60 === Questions 61 62 60 **Questions** 63 61 {{{#!protected ------------------------------------------------------------------------------------ 64 62 ''Les réponses sont dans les transparents du cours … … 90 88 {{{#!protected ------------------------------------------------------------------------------------ 91 89 ''''''''''''''' 92 * Ici, c'est le composant TTYqui permet de sortir des caractères sur un écran et de lire des caractères depuis un clavier.90 * Ici, c'est le composant `TTY` qui permet de sortir des caractères sur un écran et de lire des caractères depuis un clavier. 93 91 * Dans un autre SoC, on pourrait avoir un contrôleur de disque, un contrôleur vidéo, un port réseau Ethernet, un port USB, des entrées analogiques (pour mesurer des tensions), etc. 94 92 ''''''''''''''' 95 93 }}} 96 1. Il y a 4 registres dans le contrôleur de TTY, a quelles adresses sont-il placés dans l'espace d'adressage ?\\Comme ce sont des registres, est-ce que le MIPS peut les utiliser comme opérandes pour ses instructions (comme add, or, etc.) ?\\Dans quel registre faut-il écrire pour envoyer un caractère sur l'écran du terminal (implicitement à la position du curseur) ?\\Que contiennent les registres `TTY_STATUS` et `TTY_READ` ?\\Quelle est l'adresse de `TTY_WRITE` dans l'espace d'adressage ?97 {{{#!protected ------------------------------------------------------------------------------------ 98 ''''''''''''''' 99 * Le composant TTYest placé à partir de l'adresse `0xD0200000`.94 1. Il y a 4 registres dans le contrôleur de `TTY`, a quelles adresses sont-il placés dans l'espace d'adressage ?\\Comme ce sont des registres, est-ce que le MIPS peut les utiliser comme opérandes pour ses instructions (comme add, or, etc.) ?\\Dans quel registre faut-il écrire pour envoyer un caractère sur l'écran du terminal (implicitement à la position du curseur) ?\\Que contiennent les registres `TTY_STATUS` et `TTY_READ` ?\\Quelle est l'adresse de `TTY_WRITE` dans l'espace d'adressage ? 95 {{{#!protected ------------------------------------------------------------------------------------ 96 ''''''''''''''' 97 * Le composant `TTY` est placé à partir de l'adresse `0xD0200000`. 100 98 * Non, ce sont des registres de périphériques placés dans l'espace d'adressage et donc accessibles par des instructions load/store uniquement. 101 99 * Pour écrire un caractère sur l'écran, il faut écrire le code ASCII du caractère dans le registre `TTY_WRITE` … … 103 101 ''''''''''''''' 104 102 }}} 105 1. Le contrôleur de TTYpeut contrôler de 1 à 4 terminaux. Chaque terminal dispose d'un ensemble de 4 registres (on appelle ça une carte de registres, ou en anglais une ``register map``). Ces ensembles de 4 registres sont placés à des adresses contiguës. S'il y a 2 terminaux (`TTY0` et `TTY1`), A quelle adresse est le registre `TTY_READ` de `TTY1` ?103 1. Le contrôleur de `TTY` peut contrôler de 1 à 4 terminaux. Chaque terminal dispose d'un ensemble de 4 registres (on appelle ça une carte de registres, ou en anglais une ``register map``). Ces ensembles de 4 registres sont placés à des adresses contiguës. S'il y a 2 terminaux (`TTY0` et `TTY1`), A quelle adresse est le registre `TTY_READ` de `TTY1` ? 106 104 {{{#!protected ------------------------------------------------------------------------------------ 107 105 ''''''''''''''' … … 122 120 123 121 L'usage du code assembleur est réduit au minimum. Il est utilisé uniquement où c'est indispensable. C'est le cas du code de démarrage. Ce code ne peut pas être écrit en C au moins une raison importante. Le compilateur C suppose la présence d'une pile et d'un registre du processeur contenant le pointeur de pile, or au démarrage les registres sont vides (leur contenu n'est pas significatif). Dans cette partie, nous allons nous intéresser à quelques éléments de l'assembleur qui vous permettront de comprendre le code en TP. 122 123 **Questions** 124 1. Supposons que l'adresse du premier registre du `TTY` se somme ? 125 {{{#!protected ------------------------------------------------------------------------------------ 126 ''''''''''''''' 127 * 128 ''''''''''''''' 129 }}} 124 130 125 131 … … 248 254 ''''''''''''''' 249 255 }}} 250 - Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal TTY?256 - Comment connaît-on l'adresse du registre de sortie du contrôleur de terminal `TTY` ? 251 257 {{{#!protected ------------------------------------------------------------------------------------ 252 258 ''''''''''''''' 253 259 - Le fichier `kernel.ld` déclare une variable `__tty_regs_map` initialisée avec l'adresse de 254 où sont placés les registres de contrôles du TTY. Le premier registre à l'adresse `__tty_regs_map`260 où sont placés les registres de contrôles du `TTY`. Le premier registre à l'adresse `__tty_regs_map` 255 261 est l'adresse du registre de sortie `TTY_WRITE`. 256 262 ''''''''''''''' … … 402 408 403 409 404 == 4. Accès aux registres de contrôle des terminaux TTY410 == 4. Accès aux registres de contrôle des terminaux `TTY` 405 411 406 412 … … 448 454 \\\\ 449 455 **Objectifs** 450 - Savoir comment créer un début de pilote pour le terminal TTY.456 - Savoir comment créer un début de pilote pour le terminal `TTY`. 451 457 - Savoir comment décrire une API en C 452 458