Changes between Version 55 and Version 56 of Archi-1-TP9


Ignore:
Timestamp:
Dec 4, 2020, 2:44:35 AM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v55 v56  
    5050Les trois figures ci-dessous donnent des informations sur l'architecture du prototype **almo1** sur lequel vous allez travailler.
    5151* À 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 TTY né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.
    5353* À gauche, vous avez la représentation de l'espace d'adressage implémenté pour le prototype. 
    5454
     
    5858
    5959
    60 === Questions
    61 
    62 
     60**Questions**
    6361{{{#!protected ------------------------------------------------------------------------------------
    6462''Les réponses sont dans les transparents du cours
     
    9088{{{#!protected ------------------------------------------------------------------------------------
    9189'''''''''''''''
    92 * 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.
     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.
    9391* 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.
    9492'''''''''''''''
    9593}}}
    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 TTY est placé à partir de l'adresse `0xD0200000`.
     941. 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`.
    10098* 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.
    10199* Pour écrire un caractère sur l'écran, il faut écrire le code ASCII du caractère dans le registre `TTY_WRITE`
     
    103101'''''''''''''''
    104102}}}
    105 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` ?
     1031. 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` ?
    106104{{{#!protected ------------------------------------------------------------------------------------
    107105'''''''''''''''
     
    122120
    123121L'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**
     1241. Supposons que l'adresse du premier registre du `TTY`  se somme ?
     125{{{#!protected ------------------------------------------------------------------------------------
     126'''''''''''''''
     127*
     128'''''''''''''''
     129}}}
    124130
    125131
     
    248254'''''''''''''''
    249255}}}
    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` ?
    251257{{{#!protected ------------------------------------------------------------------------------------
    252258'''''''''''''''
    253259  - 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`
    255261    est l'adresse du registre de sortie `TTY_WRITE`.
    256262'''''''''''''''
     
    402408
    403409
    404 == 4.  Accès aux registres de contrôle des terminaux TTY
     410== 4.  Accès aux registres de contrôle des terminaux `TTY`
    405411
    406412
     
    448454   \\\\
    449455   **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`.
    451457   - Savoir comment décrire une API en C
    452458