Changes between Version 6 and Version 7 of SujetTD0


Ignore:
Timestamp:
Jan 25, 2017, 12:48:22 PM (8 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTD0

    v6 v7  
    33Ce document a pour objectif de vous vérifier votre niveau sur les éléments de base de la programmation bas niveau en C.
    44
    5 En effet, vous allez être amenés à manipuler des information très proche du matériel avec un faible niveau d'abstraction. De ce fait il est indispensable que vous soyez opérationnel sur ces aspects. Une grande partie des questions ont été abordées en cours, vous pouvez ainsi vous rendre compte si vous avez intégré les informations.
     5En effet, vous allez être amenés à manipuler des informations très proches du matériel avec un faible niveau d'abstraction. De ce fait il est indispensable que vous soyez opérationnel sur ces aspects. Une grande partie des questions ont été abordées en cours, vous pouvez ainsi vous rendre compte si vous avez intégré les informations.
    66
    77== 1. Mémoire virtuelle et mapping mémoire ==
     
    99La 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).
    1010
    11 La 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.
     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 translations d'adresse "classique" tandis que la seconde MMU permet de remanier le placement mémoire des périphériques du SoC.
    1212
    13 * Qu'est-ce que la mémoire virtuelle ? Pourquoi l'utilisée et dans quel contexte ?
     13* Qu'est-ce que la mémoire physique ?
     14{{{#!protected
     15- La mémoire physique est, en principe, la vraie mémoire qui est accédée par un espace d'adressage. Derrière chaque adresses physique, il y a de la vraie mémoire ou un registre de configuration de périphérique.
     16}}}
     17
     18* Qu'est-ce que la mémoire virtuelle ?
     19{{{#!protected
     20- La mémoire virtuelle est un espace d'adressage (un ensemble d'adresses) dans lequel s'exécute un processus.
     21- La question corollaire est qu'est-ce qu'un processus ?[[BR]]
     22  -> Un processus est un programme en train de s'exécuter dont les ressources sont
     23     - un espace d'adressage
     24     - un programme
     25     - un ensemble de fichiers ouverts
     26     - ...
     27     - un ou plusieurs fils d'exécution (threads) ayant chacun
     28       - un contexte de processeur
     29       - une pile d'exécution
     30}}}
     31
     32* Pourquoi utiliser la mémoire virtuelle et dans quel contexte ?
     33{{{#!protected
     34- La mémoire virtuelle permet d'isoler les processus entre eux.
     35- La mémoire virtuelle permet de produire du code binaire sans connaitre les adresses effectivement disponibles au moment de l'exécution.
     36- La mémoire virtuelle d'étendre la mémoire utilisable au delà de la mémoire physique réellement disponible (grâce au swap disque)
     37 }}}
    1438
    1539* Qu'est-ce qu'une MMU ?
     40{{{#!protected
     41- Chaque espace virtuel va être mappé sur un espace physique, c'est à dire que lorsqu'un processeur exécute une instruction d'accès à la mémoire. Il commence par émettre l'adresse de l'instruction puis l'adresse de la donnée. Ces adresses sont virtuelles
     42}}}
    1643
    1744* 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 ?
     45{{{#!protected
     46réponse
     47}}}
    1848
    19 * Pourquoi utiliser plusieurs niveau de table de pages ?
     49* Pourquoi utiliser plusieurs niveaux de table de pages ?
     50{{{#!protected
     51réponse
     52}}}
    2053
    21 * Pourquoi utiliser une seconde MMU ? Quel est sont fonctionnement ?
     54* Pourquoi utiliser une seconde MMU ? Quel est son fonctionnement ?
     55{{{#!protected
     56réponse
     57}}}
    2258
    2359== 2. Accès aux registres mappés en mémoire ==
     
    3571}}}
    3672
    37 L'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.
     73L'appel système mmap permet de récupérer un pointeur vers une zone mémoire donnée en paramètres. À 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.
    3874
    3975* Quel est l'intérêt ou le besoin de protéger les zones mémoires liées aux contrôleurs d'entrées/sorties ?
     76{{{#!protected
     77réponse
     78}}}
    4079
    4180Pour accéder aux contrôleurs d'entrées/sorties mappés en mémoire, on utilise le mapping configuré dans le noyau Linux. Ce mapping est accessible depuis le fichier /dev/mem.
    4281
    4382* Qu'est-ce que le fichier /dev/mem ? Est-ce un vrai fichier ?
     83{{{#!protected
     84réponse
     85}}}
    4486
    4587* Comment utilise-t-on le fichier /dev/mem ?
     88{{{#!protected
     89réponse
     90}}}
    4691
    4792* Comment faire fonctionner ensemble les informations contenues dans le fichier /dev/mem avec l'appel système mmap ?
     93{{{#!protected
     94réponse
     95}}}
    4896
    4997* Sachant que l'adresse de base du contrôleur de GPIO est 0x20200000, quel serait le code C qui permettrait d'accéder au registre GPFSEL0 du contrôleur de GPIO ?
     98{{{#!protected
     99réponse
     100}}}
    50101
    51102== 4. Réalisation d'un programme pour faire clignoter une LED ==
    52103
    53104* Avec tout ce que vous avez appris jusqu'à présent, quelles seraient les grandes étapes pour réaliser un programme qui fasse clignoter une LED à une fréquence donnée ?
     105{{{#!protected
     106réponse
     107}}}
    54108
    55109* Quelles sont les fonctions C associées ?
     110{{{#!protected
     111}}}