Changes between Version 2 and Version 3 of SujetTD0
- Timestamp:
- Jan 20, 2014, 11:01:22 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SujetTD0
v2 v3 23 23 == 2. Accès aux registres mappés en mémoire == 24 24 25 Nous 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 utilisateurmmap, dont le prototype est le suivant:25 Nous fonctionnons sur un système qui utilise un mécanisme de mémoire virtuelle et dès lors l'accès à certaines zones mémoires est protégé par le système d'exploitation, ici Linux. C'est le cas notamment pour les zones mémoires correspondant aux contrôleurs d'entrées/sorties. Néanmoins, un peut quand même accéder à ces zones mémoires grâce à l'appel système mmap, dont le prototype est le suivant: 26 26 27 27 {{{ … … 37 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. 38 38 39 * Pourquoi faut-il passer par un appel système pour accèder aux registres mappés en mémoire?39 * 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 ? 40 40 41 Pour 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.41 Pour 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. 42 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)?43 * Qu'est-ce que le fichier /dev/mem ? Est-ce un vrai fichier ? 44 44 45 * Sachant que l'adresse de base du contrôleur de GPIO est 0x20200000, quels serait le45 * Comment utilise-t-on le fichier /dev/mem ? 46 46 47 == 3. Création de structures mirroir d'un composant mappé en mémoire. == 47 * Comment faire fonctionner ensemble les informations contenues dans le fichier /dev/mem avec l'appel système mmap ? 48 49 * Sachant que l'adresse de base du contrôleur de GPIO est 0x20200000, quels serait le code C qui permettrait d'accéder aux registre GPFSEL0 ? 50 51 == 4. Réalisation d'un programme pour faire clignoter une LED == 52 53 * 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 ? 54 55 * Quelles sont les fonctions C associées ?