Programmation modules sous Linux  (partie 1)

Suivant
Le bus PCI
IV . Gestion des périphériques
1 . Présentation
2 . Concepts
3 . Fichiers spéciaux
4 . Périphériques classiques
5 . Périphériques particuliers
6 . Création d'un fichier périphérique
7 . Ajout d'un périphérique

1 . Présentation


2 . Concepts

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.


3 . Fichiers spéciaux

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


4 . Périphériques classiques

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


7 . Ajout d'un périphérique

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