La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
Télécharger Lire

Cours

De
23 pages
Pilotes de périphériques(pour Linux)Laurent RéveillèreEnseirbDépartement TélécommunicationsLaurent.Reveillere@enseirb.frhttp://www.enseirb.fr/~reveillePilotes de périphériques [Année universitaire 2003-2004]Objectifs du cours u Comprendre le rôle et le fonctionnement d'un pilote de périphérique sous Linuxu Introduction au développement de pilotes sous Linux Pilotes de périphériques [2003-2004] 2 Laurent Réveillère1Plan du coursu Introductionu Noyau Linuxu Modulesu Périphériquesu caractèreu Ports d’entrée/sortieu Gestion des interruptionsu Pilotes bloc et réseauPilotes de périphériques [2003-2004] 3 Laurent RéveillèreLivresu Linux Pilotes de Périphériques– Alessandro Rubini & Jonathan Corbert– Seconde édition, O’REILLY 2002u Le noyau Linux– Daniel P. Bovet & Marco Cesati– O’REILLY 2001Pilotes de périphériques [2003-2004] 4 Laurent Réveillère2Introductionu Définitionu Rôles des pilotesu Place du piloteu ImportancePilotes de périphériques [2003-2004] 5 Laurent RéveillèreDéfinition (tentative)Les pilotes de périphériques (device drivers) sont des programmes qui ont en charge la gestion des échanges entre un système d'exploitation et un périphérique.Pilotes de périphériques [2003-2004] 6 Laurent Réveillère3Rôles des pilotesu Boîtes noires qui transforment un composant matériel en interface de programmation interne bien définie u Masquent totalement les détails du fonctionnement du périphériqueu Les activités utilisateur ...
Voir plus Voir moins
Pilotes de périphériques (pour Linux)
Laurent Réveillère
Enseirb Département Télécommunications
Laurent.Reveillere@enseirb .fr http://www. enseirb.fr/~reveille
Pilotes de périphériques [Année universitaire 2003-2004]
Objectifs du cours
u Comprendre le rôle et le fonctionnement d'un pilote de périphérique sous Linux u Introduction au développement de pilotes sous Linux
Pilotes de périphériques [2003-2004]
2
Laurent Réveillère
Plan du cours
u Introduction u Noyau Linux u Modules u Périphériques u Périphériques caractère u Ports d’entrée/sortie u Gestion des interruptions u Pilotes bloc et réseau
Pilotes de périphériques [2003-2004]
Livres
3
u Linux Pilotes de Périphériques – Alessandro Rubini & Jonathan Corbert – Seconde édition, O’REILLY 2002 u Le noyau Linux – Daniel P. Bovet & Marco Cesati – O’REILLY 2001
Pilotes de périphériques [2003-2004]
4
Laurent Réveillère
Laurent Réveillère
Introduction
u Définition u Rôles des pilotes u Place du pilote u Importance
Pilotes de périphériques [2003-2004]
5
Définition (tentative)
Laurent Réveillère
Les pilotes de périphériques ( device drivers ) sont des programmes qui ont en charge la gestion des échanges entre un système d'exploitation et un périphérique.
Pilotes de périphériques [2003-2004]
6
Laurent Réveillère
Rôles des pilotes
u Boîtes noires qui transforment un composant matériel en interface de programmation interne bien définie u Masquent totalement les détails du fonctionnement du périphérique u Les activités utilisateur sont exécutées au moyen d'un ensemble d'appels normalisés indépendant du pilote spécifique u Il existe plusieurs centaines de pilotes différents sous Linux
Pilotes de périphériques [2003-2004]
Place du pilote
Pilotes de périphériques [2003-2004]
7
Application
Système d'exploitation
Pilote
Périphérique 
8
Laurent Réveillère
Laurent Réveillère
Importance
u Chaque nouveau périphérique requiert un pilote pour pouvoir être utilisé u Il faut un pilote pour chaque version de système dexploitation u Le pilote s’exécute en mode noyau et peut compromettre la robustesse du système!
Pilotes de périphériques [2003-2004]
Noyau Linux
9
u Espace utilisateur vs. espace noyau u Classes de périphériques – Caractères – Blocs – Réseau
Pilotes de périphériques [2003-2004]
10
Laurent Réveillère
Laurent Réveillère
Espace utilisateur vs. espace noyau
u Mode d’exécution – mode utilisateur » Les applications s’exécutent en mode utilisateur avec des privilèges limités – mode noyau » Le noyau a un accès direct et privilégié au matériel et à la mém oire u Transfert de l’exécution du mode utilisateur (espace) au mode noyau (espace) à travers : – des appels systèmes – des interruptions matériel u Les pilotes gèrent les deux de façon synchrone et asynchrone
Pilotes de périphériques [2003-2004]
11
Classes de périphériques
Laurent Réveillère
u Périphériques caractère – Permet un accès comme s’il s’agissait d’un flot de d’octets (comme un fichier) – Accessibles au moyen de noeuds du système de fichiers (i.e., /dev/tty1 et /dev/lp0 ) u Périphériques bloc – Idem périphérique caractère mais permet le transfert d’un nombre quelconque d’octets en une fois. u Interfaces réseau – Permet la transmission de paquets de données – Pas mappée en noeud dans le système de fichiers
Pilotes de périphériques [2003-2004]
12
Laurent Réveillère
Modules
u Qu’est ce qu’un module? u Utilitaires u Compiler un module (Makefile) u Exemple jouet
Pilotes de périphériques [2003-2004]
13
Qu’est ce qu’un module?
Laurent Réveillère
u Code objet relogeable u Chargé/déchargé dynamiquement dans le noyau quand nécessaire u La plupart des modules sont des pilotes de périphériques, mais ce ne n’est pas obligatoire! u Les modules peuvent dépendre les uns des autres et former un arbre dynamique
Pilotes de périphériques [2003-2004]
14
Laurent Réveillère
Utilitaires (1/3)
u lsmod – Donne la liste des modules chargés dans le noyau en cours d’exécution – Identique à la commande cat /proc/modules – Exemple : compteur d’utilisation maestro 27232 0 ( autoclean) soundcore 4176 2 (autoclean) [maestro] nom lp 6256 0 (autoclean) pcmcia core 41056 0 [ ds yenta socket] _ _ autofs 10720 0 ( autoclean) (unused) eepro100 17440 1 ext3 64624 2 jbd taille 40992 2 [ext3] modules référencés Pilotes de périphériques [2003-2004] 15 Laurent Réveillère
Utilitaires (2/3)
u insmod – Lie un module dans le noyau en cours d’exécution – Accepte des paramètres – Exemple de définition valeur par défaut int irq param = 12; _ " – Exe MO m D p U l L e E d _ P u A ti R li M(i ti r o q n _param, i"); paramètre de sa type entier insmod my driver irq=10 _
charge le module Pilotes de périphériques [2003-2004]
valeur particulière 16 Laurent Réveillère
Utilitaires (3/3)
u rmmod – Décharge un module dans le noyau en cours d’exécution – L’option -a ( rmmod -a ) permet de décharger tous les modules actuellement chargés, mais non utillisés u D’autres utilitaires tels que depmod et modprobe permettent de gérer les dépendences et d’automatiser les opérations
Pilotes de périphériques [2003-2004]
17
Laurent Réveillère
Compiler un module (Makefile)
# variable à changer suivant votre configuration KERNELDIR = /usr/src/linux include $(KERNELDIR)/.config __ __ CFLAGS= -D KERNEL -DMODULE -I$(KERNELDIR)/include \ -O -Wall _ ifdef CONFIG SMP nom du endiCfFLAGS += -D__SMP__ -DSMP Omettre pour les modules module composés d’un seul fichier _ all: my module.o _ _ _ _ my module.o: my file1.o my file2.o my filen.o $(LD) –r $^ -o $@ clean: \rm -f *.o Pilotes de périphériques [2003-2004] 18
Laurent Réveillère
Exemple jouet
my module.c _ #include <linux/module.h> #include <linux/kernel.h> int _ void) { my init ( printk (“Bonjour\n”); return 0; } void _ { my cleanup (void) printk (“Au revoir!\n”); } module init (my init ); _ _ module exit (my cleanup); _ _ Pilotes de périphériques [2003-2004] 19
Périphériques
_ $> insmod my module.o Bonjour _ $> rmmod my module Au revoir! $> tail –2 /var/log/messages Bonjour Au revoir!
u Généralités u Extrait de /dev u Nombres majeurs et mineurs u Système de fichiers des périphériques u Principales fonctions de devfs u Accès aux noeuds de périphérique
Pilotes de périphériques [2003-2004]
20
Laurent Réveillère
Laurent Réveillère
Généralités
u Les périphériques possèdent des entrées dans le système de fichier u Ces entrées ou noeuds peuvent être utilisés par des applications de l’espace utilisateur pour communiquer avec le périphérique u Un pilote de périphérique peut prendre en charge plus d’un noeud u La liste des noeuds de périphérique se trouve dans /dev
Pilotes de périphériques [2003-2004]
Extrait de /dev
21
Laurent Réveillère
pilot aractère nombre majeur e c crw-rw-rw- 1 root root 1 , 3 aoû 30 2001 null c rw------- 1 root root 10, 1 nov 11 11:08 psaux crw------- 1 reveille tty 4, 1 nov 11 11:09 tty1 crw-rw---- 1 root uucp 4, 65 aoû 30 2001 ttyS1 crw-rw---- 1 root uucp 4, 66 aoû 30 2001 ttyS2 crw-rw-rw- 1 root root 1, 5 aoû 30 2001 zero brw-rw---- 1 reveille floppy 2, 0 aoû 30 2001 fd0 brw-rw---- 1 root disk 3, 1 aoû 30 2001 hda1 b rw-rw---- 1 root disk 3, 2 aoû 30 2001 hda2 pilote bloc nombre mineur La commande mknod /dev/name <type> <major> <minor> permet de créer un nouveau noeud Pilotes de périphériques [2003-2004] 22 Laurent Réveillère
Un pour Un
Permettre à tous d'accéder à la lecture
Pour chaque accès à la bibliothèque, YouScribe donne un accès à une personne dans le besoin