Cours
23 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
23 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

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 ...

Sujets

Informations

Publié par
Nombre de lectures 96
Langue Français

Extrait

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
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents