Changes between Version 1 and Version 2 of SujetTP2-2016


Ignore:
Timestamp:
Jan 29, 2016, 6:19:32 AM (9 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP2-2016

    v1 v2  
    1 = TP3 : Premier pilote =
     1= TP2 : Premier pilote =
    22
    33== Objectif ==
     
    1111Par exemple vous pourrez écrire cela dans un fichier `test.c` ci-dessous. Ce que fait ce programme importe peu. Ce qui est important c'est que ce programme s'exécute entièrement en mode utilisateur.
    1212Le comportement proposé ici du pilote est le suivant.
    13 * Pour les LEDS, on envoie un tableau de caractère de 4 cases. La case 0 définit l'état de la LED 0 (`'0'` LED éteinte sinon LED allumée).
    14 * Pour les boutons, on propose un tableau de caractères de 2 cases. Le pilote lit l'état du bouton 0 et le met dans la case 0, et l'état du bouton 1 et le met dans la case 1. Quand le bouton est relâché, le pilote met le caractère `'0'`, quand le bouton est enfoncé, le pilote met la valeur `'1'`.
    15 
    16 C'est une proposition, vous pouvez faire comme bon vous semble.
     13* 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 LED allumée).
     14* 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 du bouton `'i'`. Quand le bouton est relâché, le pilote met le caractère `'0'`, quand le bouton est enfoncé, le pilote met une valeur différente de `'0'`.
     15
     16C'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.
    1717{{{
    1818#include <stdio.h>
    1919
    20 char led[2];
    21 char btn[1];
     20#define NBLED 2
     21#define NBBTN 1
     22char led[NBLED];
     23char btn[NBBTN];
    2224 
    2325int main()
    2426{
     27   int i;
    2528   int fd = open("/dev/ledbtn", O_RDWR);
    2629   if (fd < 0) {
     
    2831      exit(1);
    2932   }
     33   for( i = 0; i < NBLED; i ++)
     34      led[i] = '0';
    3035   do {
    31       for ( i=0; i<4; i++) {
    32          memcpy( LED, "00", 2);
    33          LED[i] = '1';
    34          write( fd, LED, 4);
    35          sleep( 1);
    36       }
    37       read( fd, btn, 2);
    38    } while (btn[0] == '0');
     36      led[O] = (led[O] == '0') ? '1' : '0';
     37      write( fd, led, NBLED);
     38      sleep( 1);
     39      read( fd, btn, NBBTN);
     40   } while (btn[0] == '1');
    3941   return 0;
    4042}
     
    132134Le paramètre est défini au moment de l'insertion.
    133135{{{
    134 $ insmod ./module.o led=4
     136$ insmod ./module.o led=2
    135137}}}
    136138
     
    216218#include <mach/platform.h>
    217219
    218 static const int LED0 = 4;
     220static const int LED0 = 2;
    219221
    220222//------------------------------------------------------------------------------