Changes between Version 6 and Version 7 of SujetTP3-2015


Ignore:
Timestamp:
Feb 28, 2015, 11:55:53 AM (10 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP3-2015

    v6 v7  
    134134== Étape 3 : création d'un driver qui ne fait rien mais dans le noyau ==
    135135
     136Votre driver va être intégré dans un module. Vous allez donc créer un module nommé `ledbtn` paramètré avec les numéros de ports pour les leds et les boutons. Vous utiliserez un nouveau répertoire. Vous modifierez le Makefile en conséquence.
    136137
     138* Vous ajoutez dans le fichier `.c` du module:
     139 
     140{{{
     141struct file_operations fops_ledbtn =
     142{
     143    .open       = open_ledbtn,
     144    .read       = read_ledbtn,
     145    .write      = write_ledbtn,
     146    .release    = release_ledbtn
     147};
     148static int
     149open_ledbtn(struct inode *inode, struct file *file) {
     150    printk(KERN_DEBUG "open()\n");
     151    return 0;
     152}
    137153
     154static ssize_t
     155read_ledbtn(struct file *file, char *buf, size_t count, loff_t *ppos) {
     156    printk(KERN_DEBUG "read()\n");
     157    return 0;
     158}
     159
     160static ssize_t
     161write_ledbtn(struct file *file, const char *buf, size_t count, loff_t *ppos) {
     162    printk(KERN_DEBUG "write()\n");
     163    return 0;
     164}
     165
     166static int
     167release_ledbtn(struct inode *inode, struct file *file) {
     168    printk(KERN_DEBUG "close()\n");
     169    return 0;
     170}
     171}}}
     172* Vous allez enregistrer ce driver dans ce module en ajoutant dans la fonction init du module:
     173
     174{{{
     175register_chrdev(0, "ledbtn" &fops_ledbtn); // 0 est le numéro majeur qu'on laisse choisir par linux
     176}}}
     177* Vous allez décharger le driver dans ce module en ajoutant dans la fonction init du module:
     178
     179{{{
     180unregister_chrdev(0, "ledbtn");
     181
     182}}}
    138183
    139184== Étape 4 : accès aux GPIO depuis les fonctions du pilote ==