Changes between Version 3 and Version 4 of AS6-TME-B1


Ignore:
Timestamp:
Feb 8, 2022, 11:47:12 AM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B1

    v3 v4  
    2121
    2222* Vous devez être sur une **machine Linux** native.
    23 * Vous devez avoir installer l'environnement
     23* Vous devez avoir installer l'environnement, sinon relisez [wiki:Howto-TP Configuration de l'environnement]
    2424* Dans le `terminal`, exécutez la commande  **`cd ; tree -L 2 2kO6`**. Vous devriez obtenir ceci:
    2525{{{#!bash
     
    8383'''''''''''''''
    8484}}}
     851. Qu'est-ce l'espace d'adressage de l'application ?
     86{{{#!protected ------------------------------------------------------------------------------------
     87'''''''''''''''
     88* L'espace d'adressage de l'application est l'ensemble des adresses que peut utiliser l'application.
     89* Ici, c'est la même chose de l'espace d'adressage du MIPS, même si certains segments ne sont utilisable que lorsque le MIPS est en mode kernel.
     90* Dans un SoC plus évolué, l'application pourrait ne pas avoir accès à tout.
     91'''''''''''''''
     92}}}
    85931. Dans quel composant matériel se trouve le code de démarrage et à quelle adresse est-il placé dans l'espace d'adressage et pourquoi à cette adresse ?
    8694{{{#!protected ------------------------------------------------------------------------------------
     
    94102'''''''''''''''
    95103* 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.
    96 * 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.
     104* On peut avoir aussi 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.
    97105'''''''''''''''
    98106}}}
     
    119127'''''''''''''''
    120128}}}
    121 1. Que fait le contrôleur DMA et en quoi est-il différent du contrôleur de TTY (''aide initiateur ou cible'') ?
     1291. Que fait le contrôleur DMA et donner des différences par rapport au contrôleur de TTY ?
    122130{{{#!protected ------------------------------------------------------------------------------------
    123131'''''''''''''''
     
    280288* En utilisant ce que nous venons de voir dans la question précédente : on peut définir une macro instruction différente au début de chaque fichier `.h` (en utilisant le nom du fichier comme nom de macro pour éviter les collisions de nom). On peut alors tester l'existence de cette macro comme condition d'inclusion du fichier.
    281289{{{#!c
    282 ————————————————————— début du fichier filename.h
     290// Debut du fichier filename.h
    283291#ifndef _FILENAME_H_
    284292#define _FILENAME_H_
     
    287295
    288296#endif
    289 ————————————————————— fichier de fichier filename.h
     297// Fin de fichier filename.h
    290298}}}
    291299'''''''''''''''
     
    467475
    468476
    469 Dans cette section, nous allons nous intéresser à ce que propose le processeur MIPS concernant les modes d'exécution. Ce sont des questions portant sur l'usage des modes en général et le comportement du MIPS vis-à-vis de ces modes en particulier. Dans la section **A3**, nous verrons le code de gestion des changements de mode dans le noyau.
     477Dans cette section, nous allons nous intéresser à ce que propose le processeur MIPS concernant les modes d'exécution. Ce sont des questions portant sur l'usage des modes en général et le comportement du MIPS vis-à-vis de ces modes en particulier. Dans la section **A7**, nous verrons le code de gestion des changements de mode dans le noyau.
    470478
    471479
     
    492500'''''''''''''''
    493501- Les registres système sont numérotés de $0 à $31, comme les registres GPR, ce qui peut induire une certaine confusion
    494 - Nous avons vu 6
     502- Nous avons vu 3, mais il y en a d'autres que nous verrons plus loin.
    495503   || `cr_sr`     || `$12` || contient essentiellement le mode d'exécution du MIPS et le bit d'autorisation des interruptions
    496504   || `cr_cause`  || `$13` || contient la cause d'appel du noyau
     
    506514{{{#!protected ------------------------------------------------------------------------------------
    507515'''''''''''''''
    508  || 0|| IE  ||Interrupt Enable||0 → interruptions masquées\\1 → interruptions autorisées
    509  || 1|| EXL ||EXception Level ||1 → MIPS en mode exception\\à l'entrée dans le kernel, le MIPS est en mode kernel, interruptions masquées
    510  || 2|| ERL ||ERror Level     ||0 → interruptions masquées\\1 → interruptions autorisées
    511  || 4|| UM  ||User Mode       ||0 → interruptions masquées\\1 → interruptions autorisées
     516 || 0|| IE  ||Interrupt Enable||0 → interruptions masquées\\1 → interruptions autorisées si ERL et EXL sont tous les deux à 0
     517 || 1|| EXL ||EXception Level ||1 → MIPS en mode exception à l'entrée dans le kernel\\le MIPS est en mode kernel, interruptions masquées
     518 || 2|| ERL ||ERror Level     ||1 → au démarrage du MIPS et certaines erreurs de la mémoire\\le MIPS est en mode kernel, interruptions masquées
     519 || 4|| UM  ||User Mode       ||0 → MIPS en mode kernel\\1 → MIPS en mode user si ERL et EXL sont tous les deux à 0
    512520'''''''''''''''
    513521}}}
     
    545553'''''''''''''''
    546554- C'est `0x80000180`. Il n'y a qu'une adresse pour toutes les causes `syscall`, exception et interruption.
    547 - En fait, on peut considérer que `0xBFC00000` permet aussi d'entrer dans le noyau après un reset.
     555- Il y a aussi l'adresse de la fonction `kinit()` qui est la fonction appelée par le code de boot (à l'adresse `0xBFC00000`) pour entrer dans le noyau.
    548556'''''''''''''''
    549557}}}