Programmation
modules sous Linux (partie
1) |
Suivant Le bus PCI |
IV . Gestion des périphériques |
Sous Unix/Linux, les périphériques sont vus comme des fichiers.
Les processus agissent sur les périphériques par l'intermédiaire
de primitives (open, read, write, ...).
Les opérations de commande du périphérique (lecture/écriture
physique de données par exemple) sont rassemblées dans le pilote
(driver) du périphérique.
C'est le noyau qui fait le
lien avec les primitives systèmes.
Les pilotes de périphériques sont :
soit intégrés
au noyau
soit chargés dynamiquement sous forme de modules.
Sous Unix/Linux, les périphériques sont représentés par des fichiers, appelés fichiers spéciaux et situés dans le répertoire /dev.
En voici quelques exemples :
crw--w--w- 1 tv users 4, 0 Aug 29 18:29
/dev/console
brw-rw---- 1 root disk 3, 65 Jun 11 22:06 /dev/hdb1
brw-rw---- 1 root disk 3, 66 Jun 11 22:06 /dev/hdb2
crw-rw---- 1 root daemon 6, 0 Apr 28 1995 /dev/lp0
crw-rw---- 1 root daemon 6, 1 Apr 28 1995 /dev/lp1
brw-rw-rw- 1 root disk 23, 0 Jul 18 1994 /dev/mcd
crw-rw-rw- 1 root root 4, 64 Aug 29 18:46 /dev/ttyS0
crw-rw-rw- 1 root root 4, 65 Jul 18 1994 /dev/ttyS1
Trois caractéristiques essentielles sont associées à un fichier spécial :
un mode
(caractère ou bloc) qui est signalé
par un c ou un b. Lorsqu'un périphérique
est utilisé en mode caractère, une demande de lecture ou d'écriture
est immédiatement prise en charge et physiquement effectuée. C'est
le cas par exemple pour les terminaux, les imprimantes ou les ports séries.
Le mode bloc signifie que les accès aux périphériques se
font de manière différée au travers de buffers caches.
Le mode bloc est utilisé pour les disques durs ou les lecteurs de CDROM.
un numéro majeur : il sert à connaître
le type de périphérique. Par exemple, le numéro majeur
4 est utilisé pour les terminaux, 3 pour les disques durs, etc
un numéro mineur : il sert à préciser
le périphérique parmi plusieurs du même type. Par exemple,
pour les imprimantes (majeur 6), le mineur 0 est associé à lp0
et le mineur 1 à lp1.
Il permet aussi d'identifier une partition (/dev/hdb1).
Quelques fichiers de périphérique d'un système Linux :
/dev/hd[a-h] : disque IDE
/dev/sd[a-h] : disque SCSI
/dev/ttyS[0-3] : liaison série
/dev/cua[0-3] : même liaison
si un modem lui est connecté
5 . Périphériques particuliers
Il existe certains périphériques particuliers dont les noms sont prédéfinis dans les systèmes Unix/Linux :
/dev/mem : la mémoire
physique
/dev/kmem : la mémoire
virtuelle du noyau
/dev/console : la console
/dev/tty : le terminal de contrôle
d'un processus (entrée et sortie standard)
/dev/mouse : la souris
/dev/modem : le nom générique
du modem
/dev/cdrom : le nom générique
du CD-ROM
/dev/null : la « poubelle »
sans fond d'Unix (on peut y écrire)
6 . Création d'un fichier périphérique
La création d'un fichier périphérique peut être
réalisée par la commande mknod
:
mknod /dev/nom_peripherique mode majeur
mineur
Pour créer les noms de fichiers spéciaux usuels (disques, imprimantes,
...), la démarche la plus simple est d'exécuter le script
/dev/MAKEDEV (faire d'abord un man
MAKEDEV).
Le mode opératoire est le suivant :
Trouver le pilote du périphérique
(+ installation)
Intégrer le pilote (recompiler le noyau ou charger le module)
Configurer la carte d'interface (cas des cartes ISA)
Paramètrer le pilote (cas des cartes ISA)
Tester le pilote
Précédent Les modules |
Sommaire |
Suivant Le bus PCI |
© 2002 for www.tvtsii.net by tv |