Changes between Version 3 and Version 4 of SujetTP2-2016


Ignore:
Timestamp:
Feb 3, 2016, 5:43:24 AM (9 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP2-2016

    v3 v4  
    66Lors de la dernière séance pour commander les LEDS et accéder au BP, vous avez dû mapper dans l'espace virtuel du processus utilisateur la zone de mémoire permettant l'accès aux GPIO. Pour cela, il vous fallait avoir les droits du root. Désormais, les LED et BP seront accessibles en mode utilisateur normal.
    77
     8{{{#!div
    89{{{#!td
    9   Nous allons donc créer un pilote pour le périphérique LED+BP.\\
     10**Nous allons donc créer un pilote pour le périphérique LED+BP.**\\
    1011  Ce pilote sera accessible dans par le pseudo-fichier `/dev/ledbpXY`\\
    1112  '''XY''' correspond aux initiales de votre binôme pour éviter les conflits avec vos camarades\\
    12   Par exemple pour '''A'''lmada et '''F'''omentin, il faudrait créer /dev/ledbp'''AF'''
     13  Par exemple, pour '''A'''lmada et '''F'''omentin, il faudrait créer /dev/ledbp'''AF'''
     14}}}
    1315}}}
    1416
    1517Par exemple, vous pourrez écrire un programme test (cf fichier `test.c` ci-dessous) qui accède aux LED et BP en s'exécutant entièrement en mode utilisateur.
    1618
     19{{{#!div
    1720{{{#!td
    18 Le comportement proposé ici du pilote est le suivant.
    19   * Pour les LEDS, on envoie un tableau de caractères. La case `'i'` définit l'état de la LED `'i'` (`'0'` LED éteinte sinon
     21**Le comportement proposé ici du pilote est le suivant :**
     22
     23  Pour les LEDS::
     24    on envoie un tableau de caractères. La case `'i'` définit l'état de la LED `'i'` (`'0'` LED éteinte sinon
    2025    LED allumée).
    21   * Pour les boutons, on propose un tableau de caractères. Le pilote lit l'état des boutons et met dans la case `'i'` l'état
    22     du bouton `'i'`. Quand le bouton est relâché, le pilote met le caractère `'0'`, quand le bouton est enfoncé, le pilote
    23     met une valeur différente de `'0'`.
     26  Pour les boutons::
     27    on propose un tableau de caractères. Le pilote lit l'état des boutons et met dans la case `'i'` l'état
     28    du bouton `'i'`. \\
     29    **-** Quand le bouton est relâché, le pilote met le caractère `'0'`. \\
     30    **-** Quand le bouton est enfoncé, le pilote met une valeur différente de `'0'`.
     31}}}
    2432}}}
    2533
    2634C'est une proposition, vous pouvez faire comme bon vous semble. Ce programme (non testé) est censé faire clignoter la led `'0'` jusqu'à ce qu'on appuie sur le bouton.
    27 {{{
     35{{{#!c
    2836#include <stdio.h>
    2937
    3038#define NBLED 2
    31 #define NBBTN 1
     39#define NBBP 1
    3240char led[NBLED];
    33 char btn[NBBTN];
     41char btn[NBBP];
    3442 
    3543int main()
    3644{
    3745   int i;
    38    int fd = open("/dev/ledbtn", O_RDWR);
     46   int fd = open("/dev/ledbpXY", O_RDWR);
    3947   if (fd < 0) {
    4048      fprintf(stderr, "Erreur d'ouverture du pilote LED et Boutons\n");
    4149      exit(1);
    4250   }
    43    for( i = 0; i < NBLED; i ++)
     51   for( i = 0; i < NBLED; i ++) {
    4452      led[i] = '0';
     53   }
    4554   do {
    4655      led[O] = (led[O] == '0') ? '1' : '0';