Changes between Version 1 and Version 2 of SujetTD0


Ignore:
Timestamp:
Jan 20, 2014, 10:44:32 PM (11 years ago)
Author:
jpeeters
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTD0

    v1 v2  
    77== 1. Mémoire virtuelle et mapping mémoire ==
    88
     9La carte Raspberry Pi est composée d'un système sur puce (System-on-Chip, SoC) BCM2835 de chez Broadcom. Ce SoC est composé de deux Memory Management Units (MMUs).
     10
     11La première MMU est intégrée au processeur ARM 11 du SoC. La seconde est une MMU "gros grain" au niveau du SoC lui même. La première MMU est une unité de gestion des translation d'adresse "classique" tandis que la seconde MMU permet de remanier le placement mémoire des périphériques du SoC.
     12
     13* Qu'est-ce que la mémoire virtuelle ? Pourquoi l'utilisée et dans quel contexte ?
     14
     15* Qu'est-ce qu'une MMU ?
     16
     17* Comment fonctionne la traduction d'adresse avec un seul niveau de MMU ? Qu'est-ce qu'une table des pages ? Qu'est-ce qu'un défaut de page ?
     18
     19* Pourquoi utiliser plusieurs niveau de table de pages ?
     20
     21* Pourquoi utiliser une seconde MMU ? Quel est sont fonctionnement ?
     22
    923== 2. Accès aux registres mappés en mémoire ==
    1024
     25Nous fonctionnons sur un système à mémoire virtuelle et dès lors l'accès aux registres mappés en mémoire nécessite des opérations particulières. En particulier, il est nécessaire de passer par l'appel utilisateur mmap, dont le prototype est le suivant:
     26
     27{{{
     28void * mmap ( void * addr, size_t length, int prot, int flags, int fd, off_t offset );
     29}}}
     30
     31et sa réciproque:
     32
     33{{{
     34int munmap ( void * addr, size_t length );
     35}}}
     36
     37L'appel système mmap permet de récupérer un pointeur vers une zone mémoire donnée en paramètres. A l'inverse, munmap permet de libérer l'association entre le pointeur fourni par mmap et la zone mémoire associée lors de l'appel à mmap.
     38
     39* Pourquoi faut-il passer par un appel système pour accèder aux registres mappés en mémoire ?
     40
     41Pour accéder aux entrées/sorties mappées en mémoire, on utilise le mapping configuré dans le noyau Linux. Ce mapping est accessible depuis le fichier /dev/mem.
     42
     43* Comment utiliser /dev/mem avec l'appel système mmap pour récupérer un pointeur vers une zone mémoire correspondante à un contrôleur d'entées/sorties (dans notre cas, le contrôleur GPIO) ?
     44
     45* Sachant que l'adresse de base du contrôleur de GPIO est 0x20200000, quels serait le
     46
    1147== 3. Création de structures mirroir d'un composant mappé en mémoire. ==