Changes between Version 1 and Version 2 of SujetTP2-2016
- Timestamp:
- Jan 29, 2016, 6:19:32 AM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SujetTP2-2016
v1 v2 1 = TP 3: Premier pilote =1 = TP2 : Premier pilote = 2 2 3 3 == Objectif == … … 11 11 Par 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. 12 12 Le 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 16 C'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. 17 17 {{{ 18 18 #include <stdio.h> 19 19 20 char led[2]; 21 char btn[1]; 20 #define NBLED 2 21 #define NBBTN 1 22 char led[NBLED]; 23 char btn[NBBTN]; 22 24 23 25 int main() 24 26 { 27 int i; 25 28 int fd = open("/dev/ledbtn", O_RDWR); 26 29 if (fd < 0) { … … 28 31 exit(1); 29 32 } 33 for( i = 0; i < NBLED; i ++) 34 led[i] = '0'; 30 35 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'); 39 41 return 0; 40 42 } … … 132 134 Le paramètre est défini au moment de l'insertion. 133 135 {{{ 134 $ insmod ./module.o led= 4136 $ insmod ./module.o led=2 135 137 }}} 136 138 … … 216 218 #include <mach/platform.h> 217 219 218 static const int LED0 = 4;220 static const int LED0 = 2; 219 221 220 222 //------------------------------------------------------------------------------