Le HOWTO _P_l_u_g_-_a_n_d_-_P_l_a_y pour Linux
David S.Lawyer
[email protected]
v0.08, 28 Novembre 1999
Aide � l'utilisation et � la compr�hension des p�riph�riques Plug-and-
Play. Comment rendre votre syst�me Linux apte � g�rer le Plug-and-
Play.
______________________________________________________________________
Table des mati�res
1. Introduction
1.1 Copyright, Marques d�pos�es, Limitation de garantie & Cr�dits
1.1.1 Copyright
1.1.2 Marques d�pos�es
1.1.3 Limitation de garantie
1.2 Pour le futur : Vous pouvez contribuer
1.3 Nouvelles versions de cet HOWTO
2. Que devrait faire le PnP : Allouer les "Ressources du bus"
2.1 En quoi consiste le
2.2 Comment un ordinateur trouve-t-il les p�riph�riques (et inversement)
2.3 Adresses d'E/S etc.
2.4 Les IRQ, vue d'ensemble
2.5 Les canaux DMA
2.6 Espace m�moire
2.7 Les "ressources" pour le p�riph�rique et son pilote
2.8 Le probl�me
2.9 Le
3. La solution
3.1 Introduction au
3.2 Comment cela fonctionne-t-il ? (explication simplifi�e)
3.3 D�marrage du PC
3.4 Les bus
3.5 Linux doit mieux prendre en compte le
4. Configuration d'un BIOS PnP
4.1 Avez-vous un syst�me d'exploitation PnP ?
4.1.1 Cohabitation avec Windows9x
4.2 Comment doivent �tre contr�l�es les ressources du bus ?
4.3 R�initialiser la configuration ?
5. Comment agir avec les cartes PnP
5.1 Introduction
5.2 D�sactiver le
5.3 Le BIOS configure le PnP
5.3.1 Introduction � l'utilisation du BIOS pour configurer le
5.3.2 La base de donn�es ESCD du BIOS
5.3.3 Utilisation de Windows pour param�trer l'ESCD
5.3.4 Ajout d'un nouveau p�riph�rique (sous Linux ou sous Windows)
5.4 Isapnp
5.5 Utilitaires PCI
5.6 Corriger le noyau pour rendre Linux compatible PnP
5.7 Configuration par Windows
5.8 Configuration par les pilotes de p�riph�riques
5.9 Logiciels et documents
6. Communication de la configuration au pilote
6.1 Introduction
6.2 Pilote du port s�rie : setserial
6.3 Pilotes de cartes son
6.3.1 OSS-Lite
6.3.2 OSS (Open Sound System) et ALSA
7. Quelle est ma configuration actuelle?
7.1 Comment mes pilotes de p�riph�riques sont-ils configur�s ?
7.2 Comment mes p�riph�riques sont-ils configur�s ?
8. Appendice
8.1 Adresses
8.1.1 Adresses de configuration sur le bus ISA (Port de lecture etc.)
8.1.2 Champs d'adresses
8.1.3 Espace d'adresses
8.1.4 V�rification des champs d'adresses (Test des conflits d'adresses E/S ISA)
8.1.5 Communication directe via la m�moire.
8.2 Les interruptions - Description d�taill�e.
8.3 Interruptions PCI
8.4 Isolation
______________________________________________________________________
Adaptation fran�aise : Albert-Paul Bouillot
[email protected]
DD��ffiinniittiioonn :: _P_l_u_g_-_a_n_d_-_P_l_a_y (Installez-et-Utilisez),PPnnPP. C'est du
jargon. C'est un mat�riel ou un logiciel, qui, apr�s avoir �t�
install� ("plugged in"), peut �tre utilis� imm�diatement ("played
with"), par opposition au mat�riel ou au logiciel qui n�cessite d'�tre
configur�.
11.. IInnttrroodduuccttiioonn
11..11.. CCooppyyrriigghhtt,, MMaarrqquueess dd��ppooss��eess,, LLiimmiittaattiioonn ddee ggaarraannttiiee && CCrr��ddiittss
11..11..11.. CCooppyyrriigghhtt
Copyright (c) 1998, 1999 de David S. Lawyer.
Vous pouvez librement copier ou distribuer (vendre ou donner) ce
document, dans n'importe quel format. Pour les corrections et les
modifications mineures, prenez contact avec le gestionnaire. Vous
pouvez en r�aliser des travaux d�riv�s et les distribuer � condition
de :
1. Envoyer le travail d�riv� (dans le format le plus appropri�, par
exemple sgml) au LDP (Projet de Documentation Linux) ou �quivalent
pour en assurer la diffusion sur Internet. Si ce n'est pas le LDP,
indiquez-lui l'endroit o� il est disponible. Sauf pour les
traductions, envoyez une copie de ce travail � la derni�re url
indiqu�e du gestionnaire ;
2. �tablir une licence dans l'esprit de celle-ci ou utiliser la
licence GPL. Inclure une notice de copyright et au moins un
pointeur sur la licence retenue ;
3. Reconna�tre les m�rites des auteurs et contributeurs importants.
Si vous envisagez de faire un travail, autre qu'une traduction, �
partir de ce document, discutez de votre projet avec le gestionnaire
actuel.
11..11..22.. MMaarrqquueess dd��ppooss��eess
Si certains mots sont des marques d�pos�es, le contexte doit en mettre
l'appartenance en �vidence. Par exemple "MS Windows" (ou simplement
"Windows") implique que "Windows" appartient � Microsoft.
11..11..33.. LLiimmiittaattiioonn ddee ggaarraannttiiee
Une grande partie des informations contenues dans cet HOWTO ont �t�
obtenues d'Internet, de livres qui peuvent �tre erron�s ou obsol�tes
etc. Bien que je n'aie pas essay� de vous induire en erreur
sciemment, il peut y avoir un certain nombre d'inexactitudes dans ce
document. Ayez l'obligeance de me le faire savoir. Dans la mesure o�
cette documentation est gratuite, il est bien �vident que ni moi, ni
les auteurs pr�c�dents (ni le traducteur ;-) ) ne pourront �tre tenus
pour l�galement responsables des erreurs �ventuelles.
11..22.. PPoouurr llee ffuuttuurr :: VVoouuss ppoouuvveezz ccoonnttrriibbuueerr
Merci de me faire part de toutes erreurs dans les faits, les opinions,
la logique, l'orthographe et la grammaire, la clart�, les liens etc.
que vous pourrez rencontrer. Mais d'abord, v�rifiez que le document ne
soit pas trop ancien et que vous poss�dez la derni�re version. Merci
de m'envoyer toutes les infos que vous pensez devoir concerner ce
document.
Je n'ai pas �tudi� en d�tail ni les outils "isapnptools" ni les
correctifs du noyau de David Howells (mais j'envisage de le faire). De
m�me, je ne comprends pas totalement comment le BIOS configure le PnP
(cela d�pend de la version du BIOS) ni comment Windows9x met � jour
l'ESCD. Donc, cet HOWTO est encore incomplet et peut se r�v�ler
inexact (faites-moi savoir o� sont les erreurs). Dans cet HOWTO j'ai
parfois utilis�;nbsp;?? pour indiquer que je ne connais pas vraiment
la r�ponse.
11..33.. NNoouuvveelllleess vveerrssiioonnss ddee cceett HHOOWWTTOO
Les nouvelles versions du Plug-and-Play-HOWTO devraient �tre
disponibles � peu pr�s tous les mois pour consultation et/ou
t�l�-chargement sur les sites miroirs du LDP. Pour obtenir une liste
de ces sites, consultez : <
http://metalab.unc.edu/LDP/mirrors.html>.
Diff�rents formats sont disponibles. Si vous voulez rapidement
v�rifier la date de la derni�re version, regardez � :
<
http://metalab.unc.edu/LDP/HOWTO/Plug-and-Play-HOWTO.html>.
22.. QQuuee ddeevvrraaiitt ffaaiirree llee PPnnPP :: AAlllloouueerr lleess ""RReessssoouurrcceess dduu bbuuss""
22..11.. EEnn qquuooii ccoonnssiissttee llee PPlluugg--aanndd--PPllaayy ((PPnnPP)) ??
En simplifiant beaucoup, le _P_l_u_g_-_a_n_d_-_P_l_a_y est une m�thode pour
indiquer automatiquement au logiciel (pilotes de p�riph�riques) o�
trouver diff�rents �l�ments mat�riels (p�riph�riques) tels que modems,
cartes r�seau, cartes son etc. La t�che du _P_l_u_g_-_a_n_d_-_P_l_a_y consiste �
mettre en correspondance les p�riph�riques physiques et les logiciels
(pilotes de p�riph�riques) qui les font fonctionner et � �tablir un
canal de communication entre chaque p�riph�rique et son pilote. Pour
ce faire, le PnP alloue les "ressources bus" suivantes � la fois aux
pilotes et au mat�riel : adresses d'E/S, IRQ, canaux DMA (uniquement
pour le bus ISA), r�gions m�moire. Si vous ne comprenez pas ce que
signifient ces quatre notions, lisez les paragraphes suivants. Apr�s
que ces ressources du bus ont �t� assign�es (et si les pilotes
ad�quats sont install�s), les noms des unit�s p�riph�riques dans le
r�pertoire /dev sont pr�ts � �tre utilis�s.
Cette m�thode d'affectation de certaines ressources du bus est
quelquefois d�sign�e par le terme "configuration", mais c'est
uniquement d'une configuration de bas niveau qu'il s'agit. M�me
lorsque le _P_n_P est utilis� au maximum, une bonne partie de la
configuration des p�riph�riques est r�alis�e par autre chose que le
_P_n_P. Par exemple, pour la configuration du modem, une "cha�ne de
caract�res d'initialisation" est envoy�e au modem � travers le "canal"
adresse d'E/S. Cette "cha�ne de caract�res d'initialisation" n'a rien
� voir avec le PnP bien que le "canal" utilis� pour l'envoyer ait �t�
allou� par le PnP. Le r�glage de la vitesse (et de beaucoup d'autres
param�tres) d'un port s�rie est r�alis� en envoyant, de programmes
ex�cut�s par l'utilisateur (souvent automatiquement, au d�marrage),
des messages au pilote de p�riph�rique. Et cette configuration n'a
rien � voir avec le _P_n_P. Donc, quand on parle de la configuration
effectu�e par le_P_n_P, cela ne concerne qu'un certain type de
configuration. Alors que d'autres documentations (telle celle de MS
Windows) parlent simplement de "ressources" quand il s'agit des
ressources du bus, j'ai volontairement utilis� le terme "ressources du
bus" pour les distinguer de la multitude d'autres ressources
disponibles.
22..22.. CCoommmmeenntt uunn oorrddiinnaatteeuurr ttrroouuvvee--tt--iill lleess pp��rriipphh��rriiqquueess ((eett iinnvveerrssee��
mmeenntt))
Un ordinateur est constitu� d'un CPU/processeur qui effectue les
traitements, et de m�moire pour stocker les programmes et les donn�es.
De plus, il y a un certain nombre de p�riph�riques tels que diff�rents
types d'unit� de disques, une carte vid�o, un clavier, des cartes
r�seau, des cartes modem, des cartes son, des ports s�rie et parall�le
etc. Il y a �galement une alimentation pour fournir l'�nergie
n�cessaire, diff�rents bus sur une carte m�re pour connecter les
p�riph�riques au CPU, ainsi qu'un bo�tier pour contenir le tout.
Dans les temps anciens, la plupart des p�riph�riques avaient leur
propre carte d'interface (circuits imprim�s). Aujourd'hui, en plus des
cartes d'interface, beaucoup de "p�riph�riques" sont de petits
circuits mont�s de fa�on permanente sur une carte unique appel�e
"carte m�re". Les cartes qui se connectent sur la carte m�re peuvent
contenir plus d'un p�riph�rique. Les circuits m�moire sont
quelquefois �galement consid�r�s comme des p�riph�riques mais ne sont
pas _p_l_u_g_-_a_n_d_-_p_l_a_y au sens de cet HOWTO.
Pour qu'un syst�me informatique fonctionne correctement, chaque unit�
p�riph�rique doit �tre sous le contr�le de son "pilote de
p�riph�rique" Ce logiciel fait partie du syst�me d'exploitation (ou
d'un module) et tourne sur le CPU. Les pilotes de p�riph�riques sont
associ�s � des "fichiers sp�ciaux" dans le r�pertoire /dev, bien que
ce ne soient pas vraiment des fichiers. Ils ont des noms tels que hda1
(premi�re partition sur le disque dur a), ttyS0 (premier port s�rie),
eth1 (deuxi�me carte Ethernet) etc. Pour rendre les choses plus
compliqu�es, le pilote de p�riph�rique s�lectionn�, disons pour eth1,
d�pendra du type de carte Ethernet que vous aurez. Donc, eth1 ne peut
pas �tre affect� � n'importe quel pilote Ethernet, mais � un certain
pilote qui fonctionnera avec le type de carte que vous avez install�.
Pour g�rer un p�riph�rique, le CPU (sous le contr�le du pilote de
p�riph�rique), envoie des commandes (et des donn�es) vers les
diff�rents p�riph�riques et en lit les infos. Pour cela, chaque pilote
de p�riph�rique doit conna�tre l'adresse utilis�e pour le p�riph�rique
qu'il g�re. Conna�tre une telle adresse correspond � mettre en oeuvre
un canal de communication, m�me si le "canal" physique est en r�alit�
un bus de donn�es dans le PC qui est partag� avec pratiquement tout le
reste.
Le canal de communication est en r�alit� un peu plus compliqu� que la
description qui en est faite ci-dessus. Une "adresse" est en r�alit�
un ensemble d'adresses et il y a un canal inverse (les interruptions)
qui permet aux p�riph�riques d'envoyer, en urgence, une requ�te de
"demande d'aide" au pilote de p�riph�rique.
22..33.. AAddrreesssseess dd''EE//SS eettcc..
Les PC utilisent trois espaces d'adresses : m�moire principale, E/S,
et configuration (uniquement dans le cas du bus PCI). Les trois types
d'adresses partagent le m�me bus � l'int�rieur du PC. Mais la tension
sur certains fils sp�cialis�s indique � tous les p�riph�riques � quel
"espace" une adresse appartient : E/S, m�moire centrale, ou
configuration. Consultez ``Adresses'' pour plus de d�tails. Les
p�riph�riques sont normalement situ�s dans l'espace d'adressage E/S
bien que, maintenant ils utilisent l'espace d'adressage m�moire
centrale. Une adresse E/S (Entr�e/Sortie) (ou I/0, pour Input/Output)
est quelquefois appel�e simplement "I/O", "IO", "i/o" ou "io". Le
terme "port d'E/S" (ou "I/O port") est �galement utilis�. Il y a deux
�tapes principales pour allouer les adresses d'E/S (ou d'autres
ressources telles que les interruptions) :
1. Affecter l'adresse d'E/S etc. sur la carte (dans l'un de ses
registres)
2. Communiquer cette adresse d'E/S etc. au pilote.
Le processus en deux �tapes ci-dessus ressemble un peu au probl�me de
la recherche du num�ro de la maison de quelqu'un dans une rue. Vous
devez obtenir (et noter) le num�ro de la maison et quelqu'un doit
avoir appos� le num�ro sur la maison afin qu'on puisse le trouver.
Dans les ordinateurs, le pilote de p�riph�rique doit obtenir
l'adresse, et le mat�riel du p�riph�rique doit installer la m�me
adresse dans l'un de ses registres. Ces deux op�rations doivent �tre
r�alis�es, mais certains font l'erreur de ne r�aliser que l'une de ces
deux �tapes et se demandent ensuite pourquoi l'ordinateur ne peut pas
trouver le p�riph�rique. Par exemple, ils utiliseront "setserial" pour
attribuer une adresse � un port s�rie, sans penser que cela indique
seulement au pilote quelle est cette adresse. Cela ne s�lectionne pas
l'adresse physique du port s�rie lui-m�me. Si le port s�rie a, en
r�alit�, une adresse diff�rente (ou pas d'adresse du tout)et que vous
indiquiez une adresse erron�e a setserial, vous avez des probl�mes.
Une autre obligation, �vidente, consiste a avoir param�tr� l'adresse
d'E/S sur la carte avant que le pilote de p�riph�rique n'essaie
d'utiliser cette adresse. Comme les pilotes de p�riph�riques d�marrent
souvent d�s la mise en route de l'ordinateur, ils essaient quelquefois
d'acc�der � une carte (pour tester sa pr�sence etc. ) avant que
l'adresse ait �t� param�tr�e dans la carte par le programme de
configuration _P_n_P. Ainsi, vous voyez des messages d'erreur indiquant
qu'une carte est introuvable bien qu'elle soit pr�sente (mais son
adresse n'a pas encore �t� attribu�e).
Ce qui vient d'�tre dit dans les deux derniers paragraphes concernant
les adresses d'E/S s'applique avec la m�me force aux autres
ressources : ``Les IRQ --Vue d'ensemble'', ``Canaux DMA'',et ``Espace
m�moire''. C'est ce que nous allons expliquer dans les trois
paragraphes suivants.
22..44.. LLeess IIRRQQ,, vvuuee dd''eennsseemmbbllee
Apr�s avoir lu ce paragraphe, il faut lire ``Interruptions --D�tails''
pour avoir quelques d�tails compl�mentaires. Ce qui suit est
volontairement tr�s simplifi� : en plus de l'adresse, il faut
�galement prendre en compte un num�ro d'interruption (tel que IRQ5),
que l'on appelle �galement num�ro d'IRQ (IRQ = Interrupt ReQuest,
demande d'interruption). Nous avons d�j� mentionn� plus haut que le
pilote de p�riph�rique doit conna�tre l'adresse de la carte de fa�on �
pouvoir communiquer avec elle. Mais comment se fait la communication
dans l'autre sens ? Supposons que le p�riph�rique ait besoin de dire
quelque chose � son pilote imm�diatement. Par exemple, le
p�riph�rique peut venir de recevoir une rafale d'octets destin�s �
aller en m�moire centrale et que le p�riph�rique ait besoin de
demander � son pilote de venir les r�cup�rer imm�diatement de sa
m�moire tampon pratiquement pleine pour les transf�rer en m�moire
centrale.
Comment le p�riph�rique peut-il appeler son pilote � l'aide ? Il ne
peut pas utiliser le bus de donn�es principal puisque celui-ci est
d�j� en cours d'utilisation. Au lieu de cela, il lance un appel en
mettant une certaine tension sur une ligne d'interruption (qui fait
partie du bus). Il y a l'�quivalent de 16 lignes, et chacune d'elle
correspond (indirectement) � un certain pilote de p�riph�rique.
Chaque ligne poss�de un num�ro d'interruption (IRQ) unique (IRQ =
Interrupt ReQuest). Le p�riph�rique doit envoyer son interruption sur
la bonne ligne et le pilote de p�riph�rique doit attendre
l'interruption sur cette ligne. Le num�ro d'IRQ stock� dans le
p�riph�rique d�termine quelle est la ligne concern�e. Ce m�me num�ro
d'IRQ doit �tre connu du pilote de p�riph�rique de mani�re que celui-
ci sache quelle ligne d'IRQ le concerne.
Lorsqu'un pilote de p�riph�rique re�oit une interruption (un appel �
l'aide) il doit se renseigner sur la cause de l'�mission de cette
interruption et effectuer les actions appropri�es pour y r�pondre. Sur
un bus ISA chaque p�riph�rique a besoin d'un num�ro d'interruption
unique (sauf que deux ports s�rie ou plus peuvent partager la m�me
interruption depuis le noyau 2.2). Sur un bus PCI, le partage des
interruptions est permis.
22..55.. LLeess ccaannaauuxx DDMMAA
Les canaux DMA ne concernent que le bus ISA. DMA signifie "Acc�s
Direct M�moire" (Direct Memory Access). Dans ce cas, le p�riph�rique
est autoris� � prendre le pas sur le CPU pour le contr�le du bus et �
transf�rer les octets directement en m�moire centrale. Normalement le
CPU effectuerait un tel transfert en deux �tapes :
1. Lecture de l'espace m�moire E/S du p�riph�rique et stockage de ces
octets dans le CPU lui-m�me
2. �criture de ces octets du CPU dans la m�moire centrale.
Avec le DMA le processus de transfert des octets du p�riph�rique
vers la m�moire centrale se d�roule normalement en une seule �tape.
Les p�riph�riques doivent avoir cette capacit� int�gr�e dans le
mat�riel, et donc tous les p�riph�riques ne fonctionnent pas en
DMA. Pendant que le transfert DMA est en cours d'ex�cution, le CPU
ne peut pas faire grand-chose puisque le bus principal est utilis�
par ce transfert DMA.
Le bus PCI n'a pas vraiment de DMA, mais plut�t quelque chose de
mieux : le "contr�le du bus" (bus mastering). Cela fonctionne un peu
comme le DMA et on l'appelle quelquefois DMA (par exemple, les unit�s
de disques durs se nomment "UltraDMA"). Cette technique permet aux
p�riph�riques de prendre temporairement le contr�le du bus et de
transf�rer des octets exactement comme le fait le CPU lorsqu'il a le
contr�le du bus. On n'utilise pas de num�ros de canaux car le bus PCI
est constitu� de telle mani�re que le mat�riel sait quel est le
contr�leur du bus actuel et quel est le p�riph�rique qui demande � le
devenir. Il n'y a donc pas d'allocation de canaux DMA dans le cas d'un
bus PCI.
Quand un p�riph�rique, sur un bus ISA, d�sire effectuer un transfert
DMA, il g�n�re une requ�te de DMA en utilisant une ligne sp�cialis�e
comme pour une demande d'interruption. Le DMA aurait pu �tre r�alis�
en utilisant les interruptions mais cela aurait introduit des retards,
donc il est plus rapide d'utiliser un type d'interruption sp�cial
connu sous le nom de requ�te DMA. Comme les interruptions, les
requ�tes DMA sont num�rot�es de fa�on � identifier le p�riph�rique qui
a envoy� cette requ�te. Ce num�ro est appel� canal DMA. Puisque tous
les transferts DMA utilisent le bus principal (et qu'un seul
utilisateur ne peut utiliser ce bus � un instant donn�) ils utilisent
tous le m�me canal, mais le num�ro de "canal DMA" sert � identifier
qui est en train d'utiliser le "canal". Des registres existent sur la
carte m�re pour stocker l'�tat courant de chaque "canal". Donc, pour
�mettre une requ�te DMA, le p�riph�rique doit conna�tre son num�ro de
canal DMA qui doit �tre stock� dans un registre sur le p�riph�rique
physique.
22..66.. EEssppaaccee mm��mmooiirree
Certains p�riph�riques se voient assigner des adresses dans l'espace
de la m�moire principale. On parle souvent de "m�moire partag�e" ou
"d'E/S en zone m�moire". Quelquefois, il s'agit de m�moire morte (ROM)
sur le p�riph�rique. A propos de ressources _P_n_P, on parle simplement
de "m�moire". Un tel p�riph�rique peut �galement utiliser l'espace
d'adressage E/S.
Lorsque vous branchez une telle carte, en r�alit� vous connectez un
module m�moire pour la m�moire principale. Cette m�moire peut �tre
soit de la m�moire morte (ROM = Read Only Memory) soit de la m�moire
partag�e. La m�moire partag�e est partag�e entre le p�riph�rique et
l'Unit� Centrale (CPU qui ex�cute le pilote de p�riph�rique). Cette
m�moire peut servir de moyen de "transfert" direct des donn�es entre
le p�riph�rique et la m�moire principale. En r�alit�, ce n'est pas un
transfert � proprement parler puisque le p�riph�rique met ses donn�es
dans sa propre m�moire qui se trouve �tre �galement la m�moire
centrale. � la fois la carte et le pilote de p�riph�rique doivent
savoir o� cela se passe. Il faut utiliser des adresses m�moires
hautes de fa�on � �viter tout conflit avec les circuits m�moires des
adresses basses (de la m�moire centrale) de votre ordinateur.
Pour la ROM, c'est diff�rent. C'est comme un programme (peut-�tre le
pilote de p�riph�rique) qui serait utilis� avec le p�riph�rique.
Heureusement, il peut tourner avec Linux et pas seulement avec Windows
?? Il peut �tre n�cessaire de le dupliquer en m�moire centrale pour le
faire tourner plus vite. Une fois dupliqu�, il n'est plus "en lecture
seule".
22..77.. LLeess ""rreessssoouurrcceess"" ppoouurr llee pp��rriipphh��rriiqquuee eett ssoonn ppiilloottee
Donc, les pilotes de p�riph�riques doivent �tre "attach�s" d'une fa�on
quelconque au mat�riel qu'ils contr�lent. Cela est r�alis� en
fournissant des "ressources" (E/S, M�moire, IRQ, DMA) � la fois au
p�riph�rique physique et au logiciel de pilotage. Par exemple, un port
s�rie n'utilise seulement que 2 ressources (parmi les 4 possibles) :
une IRQ et une adresse d'E/S. Ces deux valeurs doivent �tre fournies
au pilote de p�riph�rique et au p�riph�rique physique. On donne alors
un nom (tel que ttyS1) au pilote (et � l'unit� p�riph�rique
correspondante) dans le r�pertoire /dev. L'adresse et le num�ro d'IRQ
sont stock�s dans un registre sur la carte du p�riph�rique physique
(ou dans un circuit sur la carte m�re). Si l'on utilise de cavaliers,
cette information est toujours stock�e dans la partie "mat�riel" du
p�riph�rique (sur la carte etc.). Mais dans le cas du _P_n_P, la donn�e
enregistr�e est g�n�ralement perdue lors de l'arr�t du PC (mise hors
tension) de sorte que cette donn�e doit �tre fournie � chaque fois que
le PC est remis en fonction.
22..88.. LLee pprroobbll��mmee
L'architecture du PC fournit seulement un nombre limit� d'IRQ, de
canaux DMA, d'adresses d'E/S et de r�gions m�moire. S'il n'y avait
que quelques p�riph�riques et qu'ils aient des ressources
standardis�es (comme des adresses d'E/S et des num�ros d'IRQ uniques)
il n'y aurait aucun probl�me pour attacher des pilotes de
p�riph�riques aux unit�s p�riph�riques. Chaque unit� aurait des
ressources fixes qui n'entreraient en conflit avec aucune autre unit�
p�riph�rique de l'ordinateur. Deux p�riph�riques n'auraient pas la
m�me adresse d'E/S, la m�me IRQ etc. Chaque pilote pourrait �tre
programm� avec l'adresse d'E/S, l'IRQ etc. cod�es en dur dans le
programme. La vie serait simple.
Mais ce n'est pas le cas. Non seulement il existe tellement de
p�riph�riques diff�rents aujourd'hui que les conflits sont fr�quents,
mais, de plus, on a souvent besoin d'avoir plus d'un p�riph�rique d'un
type donn�. Par exemple, on peut vouloir disposer de plusieurs unit�s
de disques diff�rentes, de plusieurs ports s�rie etc. Pour ces
raisons, les p�riph�riques doivent �tre param�trables afin que l'on
puisse leur attribuer les adresses, IRQ etc. que l'on d�sire pour
�viter les conflits. Mais quelques IRQ et adresses sont tout � fait
standard comme celles de l'horloge et du clavier. Elles ne n�cessitent
pas une telle adaptabilit�.
En dehors du probl�me de conflit d'allocation des ressources, il y a
le probl�me de l'erreur en communiquant la nature des ressources au
pilote de p�riph�rique. Par exemple, supposons que vous ayez entr� IRQ
4 dans un fichier de configuration alors que le p�riph�rique utilise,
en r�alit�, l'IRQ 5. C'est un autre type d'erreur dans l'allocation
des ressources du bus.
L'allocation des ressources du bus, si elle est correctement r�alis�e,
�tablit des canaux de communication entre les p�riph�riques physiques
et leurs pilotes. Par exemple, si une certaine gamme d'adresses d'E/S
(ressource) est allou�e � la fois � un pilote de p�riph�rique et � un
mat�riel, alors on a �tabli un canal de communication � sens unique
entre eux. Le pilote peut envoyer des commandes et des informations au
p�riph�rique. C'est, en r�alit�, un peu plus qu'un canal � sens unique
puisque le pilote peut obtenir des informations du p�riph�rique en
consultant ses registres. Mais le p�riph�rique ne peut pas prendre
l'initiative d'une communication de cette fa�on. L'allocation d'une
IRQ est n�cessaire pour cr�er un canal de communication bi-
directionnel, o� � la fois le pilote et le p�riph�rique peuvent
prendre l'initiative d'une communication.
22..99.. LLee PPnnPP dd��tteeccttee lleess pp��rriipphh��rriiqquueess ccoonnnneecctt��ss aauuxx ppoorrttss ss��rriiee
Les p�riph�riques externes qui se connectent au port s�rie par un
c�ble (comme les modems externes) peuvent �galement �tre appel�s _P_l_u_g_-
_a_n_d_-_P_l_a_y Puisque seul le port s�rie lui-m�me n�cessite des ressources
(une IRQ et une adresse d'E/S), il n'y a pas de ressources � allouer �
un p�riph�rique qui se connecte � un tel port. Donc, le _P_n_P n'a pas
vraiment de raison d'�tre pour ces p�riph�riques. Cela, m�me s'il y a
des sp�cifications _P_n_P pour de tels p�riph�riques s�rie.
Un syst�me d'exploitation _P_n_P les d�tectera et saura lire leur num�ro
de mod�le etc. Il sera donc alors capable de trouver un pilote de
p�riph�rique adapt� et vous n'aurez pas � dire � un programme
d'application que vous utilisez disons, /dev/ttyS1. Mais puisque vous
devriez �tre capable d'indiquer manuellement � votre ordinateur (par
l'interm�diaire d'un fichier de configuration etc.) sur quel port
s�rie votre p�riph�rique est connect� (et �ventuellement le mod�le
dont il s'agit) vous n'avez pas r�ellement besoin de cette
fonctionnalit� "port s�rie" du _P_n_P.
33.. LLaa ssoolluuttiioonn PPlluugg--aanndd--PPllaayy ((PPnnPP))
33..11.. IInnttrroodduuccttiioonn aauu PPnnPP
Le terme _P_l_u_g_-_a_n_d_-_P_l_a_y (PnP) (Installez et Utilisez) a plusieurs sens.
Au sens large c'est uniquement une auto-configuration o� l'on installe
simplement un p�riph�rique et que celui-ci se configure par lui-m�me.
Au sens o� je l'entends dans cet HOWTO, la configuration ne concerne
que la configuration de la ressource PnP et la communication de
l'information au pilote de p�riph�rique. Dans un sens plus �troit
c'est simplement le param�trage des ressources des p�riph�riques.
Cela peut aussi concerner les sp�cifications qui, (entre autres
choses) indiquent comment les donn�es PnP de la ressource doivent �tre
lues ou �crites dans les p�riph�riques (souvent des cartes) sur le bus
ISA. Les sp�cifications du standard PCI (et non PnP) sont de m�me
nature pour le bus PCI.
Le _P_l_u_g_-_a_n_d___P_l_a_y _(_P_n_P_) met en relation les p�riph�riques et leurs
pilotes et sp�cifie leurs "canaux" de communication. Sur le bus ISA,
avant le _P_l_u_g_-_a_n_d_-_P_l_a_y, les ressources �taient configur�es sur le
mat�riel par des cavaliers et les pilotes de p�riph�riques �taient
assign�s aux ressources par des fichiers de configuration (ou quelque
chose du m�me style) ou par des tests des p�riph�riques � des adresses
o� ils �taient suppos�s se trouver. Le bus PCI a �t� compatible PnP
d�s le d�but et il a �t� trivial d'impl�menter le PnP pour ce bus.
Mais comme les sp�cifications du bus PCI n'utilisent pas le terme PnP
on ne sait pas si l'on doit dire que le bus PCI est PnP (mais il
supporte le mat�riel que l'on appelle aujourd'hui PnP).
33..22.. CCoommmmeenntt cceellaa ffoonnccttiioonnnnee--tt--iill ?? ((eexxpplliiccaattiioonn ssiimmpplliiffii��ee))
Voici une explication tr�s simple de la fa�on dont fonctionne le _P_n_P.
Le programme de configuration _P_n_P (�ventuellement un programme du
BIOS) recherche tous les p�riph�riques _P_n_P et demande � chacun les
ressources du bus dont il a besoin. Ensuite, il regarde les ressources
du bus (IRQs, etc.) qu'il doit attribuer. Bien s�r, s'il y a des
ressources du bus r�serv�es par des p�riph�riques (anciens) non _P_n_P
(dont il a connaissance), il ne les attribue pas. Puis il utilise un
certain crit�re (non pr�cis� dans les sp�cifications _P_n_P) pour
attribuer les ressources de fa�on � ce qu'elles n'entrent pas en
conflit et que tous les p�riph�riques obtiennent ce dont ils ont
besoin. Il indique alors � chaque p�riph�rique physique quelles
ressources du bus lui ont �t� affect�es et chacun se configure alors
pour n'utiliser que les seules ressources du bus qui lui ont �t�
affect�es.
Par exemple, supposons qu'une carte carte ait besoin d'une
interruption (d'un num�ro d'interruption) et de 1 MB de m�moire
partag�e. Le programme _P_n_P lit cette requ�te dans la carte. Il
attribue alors le num�ro d'interruption 5 (IRQ 5) et un m�ga-octet
d'espace m�moire � partir de l'adresse 0xe9000000. Ce n'est pas
toujours aussi simple car la carte peut utiliser uniquement certains
num�ros d'interruption (seulement pour ISA) ou n'accepter qu'un
certain domaine d'adressage. Les d�tails sont diff�rents pour les bus
ISA et PCI, les choses �tant plus complexes pour le bus ISA
Le logiciels _P_n_P peut utiliser quelques raccourcis. L'un d'entre eux
consiste � garder une trace de la mani�re dont il a assign� les
ressources du bus lors de la derni�re configuration (lors de la
derni�re utilisation de l'ordinateur) et la r�utiliser. Windows9x et
les BIOS PNP le font mais ce n'est pas le cas du Linux standard.
Windows9x enregistre ces informations dans ses "Registres" sur le
disque dur et un BIOS PnP le fait dans la m�moire non volatile de
votre PC (connu sou le nom d' ESCD; voir ``La Base de donn�es ESCD du
BIOS'').
Sous Linux, c'est le r�gne du "chaque p�riph�rique pour lui-m�me" et
il n'existe aucun registre centralis� des affectations de ressources.
Certains pilotes de p�riph�riques enregistrent la derni�re
configuration qu'ils ont utilis� et la r�utilisent � la prochaine
remise en route de l'ordinateur. Implicitement, ils consid�rent que le
reste du mat�riel n'aura pas besoin d'utiliser ses ressources du bus.
Si les p�riph�riques se souvenaient de leur configuration pr�c�dente,
il n'y aurait aucun mat�riel pour les reconfigurer au prochain
d�marrage, mais ils semblent oublier leur configuration lorsque l'on
stoppe l'alimentation. Certains p�riph�riques ont une configuration
par d�faut (mais pas n�cessairement la derni�re utilis�e). Le
programme de configuration _P_n_P doit �tre ex�cut� � chaque mise sous
tension du PC. De m�me, si l'on ajoute un nouveau p�riph�rique, celui-
ci a besoin d'�tre configur�. L'allocation de ressources du bus � ce
nouveau p�riph�rique peut n�cessiter d'en enlever � un p�riph�rique
existant et de donner � celui-ci des ressources du bus diff�rentes
qu'il pourra utiliser � la place.
33..33.. DD��mmaarrrraaggee dduu PPCC
Lors de la mise sous tension initiale du PC le circuit BIOS ex�cute
son programme pour d�marrer l'ordinateur (la premi�re �tape consistant
� tester le mat�riel). Si le syst�me d'exploitation est stock� sur le
disque dur (ce qui constitue le cas normal), le BIOS doit trouver le
disque dur. Si le disque dur est _P_n_P, alors le BIOS doit utiliser une
m�thode PnP pour le trouver. Donc, pour permettre � l'utilisateur de
configurer manuellement la m�moire CMOS du BIOS et de r�agir aux
messages d'erreur apparaissant au d�marrage de l'ordinateur, un �cran
(une carte vid�o) et un clavier sont �galement n�cessaires. Donc, le
BIOS doit configurer, selon la proc�dure PnP, ces p�riph�riques lui-
m�me.
Une fois que le BIOS a identifi� le disque dur, la carte vid�o et le
clavier il est pr�t � entamer le processus de d�marrage (chargement du
syst�me d'exploitation du disque dur vers la m�moire centrale). Si
vous avez indiqu� � votre BIOS que vous aviez un syst�me
d'exploitation _P_n_P (SE PnP ou PnP OS), il devrait commencer � d�marrer
le PC de la mani�re indiqu�e ci-dessus et laisser le soin de terminer
la configuration _P_n_P au syst�me d'exploitation. Autrement, un BIOS-PnP
essaiera de r�aliser le reste de la configuration _P_n_P des
p�riph�riques avant le chargement du syst�me d'exploitation (mais ne
chargera pas leurs pilotes).
33..44.. LLeess bbuuss
Le bus ISA est le vieux bus du vieil IBM PC alors que le bus PCI est
un bus plus r�cent et plus rapide de Intel. Le bus PCI a �t� con�u
pour ce que l'on appelle aujourd'hui le _P_n_P. Il est facile (si l'on
compare au bus ISA) de voir comment les ressources du bus ont �t�
assign�es aux p�riph�riques. Pour voir comment cela s'est pass�
consulter le "fichier" /proc/pci (/proc/bus/pnp/devices pour les
noyaux 2.2+), les messages de d�marrage sur votre �cran (utilisez
shift-PageUp pour revenir en arri�re), ou utilisez les utilitaires PCI
(pour les noyaux 2.2+).
Pour ce qui concerne le bus ISA, il y a un vrai probl�me pour
impl�menter le _P_n_P car personne n'y pensait lors de la conception de
ce bus et il n'y a pratiquement pas d'adresse d'E/S disponible pour
communiquer les informations de configuration aux p�riph�riques
physiques. Il en r�sulte que la mani�re dont le _P_n_P a �t� implant� sur
le bus ISA est tr�s compliqu�e. Un livre entier a �t� r�dig� � ce
sujet. Voir ``Le livre du PnP''. Entre autres choses, le programme _P_n_P
doit attribuer � chaque p�riph�rique _P_n_P un "identificateur"
provisoire de fa�on � pouvoir l'adresser pour la configuration _P_n_P.
L'assignation de ces "identificateurs" provisoires est appel�e
"isolation". Voir ``Isolation'' pour de plus amples d�tails.
Finalement, le bus ISA finira par dispara�tre. Ce jour l�, le _P_n_P
deviendra plus simple puisqu'il sera facile de voir comment le BIOS a
configur� le mat�riel. Il restera cependant n�cessaire de mettre en
correspondance les p�riph�riques et leurs pilotes ainsi que de
configurer les p�riph�riques ajout�s alors que le PC est en
fonctionnement. Ces besoins seraient satisfaits si Linux �tait un
syst�me d'exploitation _P_n_P.
33..55.. LLiinnuuxx ddooiitt mmiieeuuxx pprreennddrree eenn ccoommppttee llee PPnnPP
Le _P_n_P (pour le bus ISA) a �t� invent� par Compaq, Intel et Phoenix.
Microsoft a �t� un des leaders de sa promotion. Linux aurait �t�
meilleur si le _P_n_P n'avait jamais �t� "invent�". Finalement, le bus
ISA aura disparu et le bus PCI � la mode _P_n_P pr�vaudra de sorte que
nous aurons alors un _P_n_P facile � implanter. Mais, que l'on veuille ou
pas, la plupart des nouveaux mat�riels ISA aujourd'hui sont _P_n_P et
Linux ne peut pas faire autrement que de g�rer efficacement le _P_n_P.
Cependant le Linux standard (celui du d�but 1999) rend la gestion du
_P_n_P compliqu�e (sp�cialement pour le bus ISA) alors que le but du _P_n_P
�tait de rendre les choses faciles.
D'une certaine fa�on, Linux est un peu _P_n_P pour le bus PCI. Quand le
PC d�marre vous pouvez noter, en lisant les messages sur la console,
que certains pilotes de p�riph�riques Linux trouvent leurs
p�riph�riques (et les ressources du bus que le BIOS leur a attribu�).
Mais il y a des situations o� un syst�me d'exploitation _P_n_P pourrait
prendre les choses en compte de mani�re plus satisfaisante :
1. En cas de p�nurie de ressources du bus;
2. S'il y a plus d'un pilote pour un p�riph�rique physique;
3. Si un pilote de p�riph�rique activ� ne peut pas trouver le
p�riph�rique physique;
4. Installation � chaud d'un p�riph�rique.
Les utilisateurs de Linux ne devraient pas avoir � plonger dans les
d�tails du _P_n_P pour configurer leurs p�riph�riques _P_n_P ISA comme
ils doivent le faire. Une solution pourrait consister � avoir une
version standardis�e du noyau qui supporterait le _P_l_u_g_-_a_n_d_-_P_l_a_y sur
les bus ISA, PCI et autres. Un correctif pour le noyau a �t� �crit,
bien que la plupart des pilotes ne le g�rent pas. Il ne fait pas
partie du Linux standard. Voir ``Correctif noyau''.
44.. CCoonnffiigguurraattiioonn dd''uunn BBIIOOSS PPnnPP
� la mise sous tension de l'ordinateur, le BIOS s'ex�cute avant que le
syst�me d'exploitation ne soit charg�. Les nouveaux BIOS sont PnP et
configurent quelques-uns ou la totalit� des p�riph�riques PnP. Il
n'est pas possible de d�sactiver la plupart des BIOS PnP, donc il faut
faire avec. Voici quelques-uns des choix possibles dans le menu BIOS
(quelquefois appel� CMOS) :
� ``Avez-vous un syst�me d'exploitation PnP ?''
� ``Comment doivent �tre contr�l�es les ressources du bus ?''
� ``R�initialiser la configuration ?''
44..11.. AAvveezz--vvoouuss uunn ssyysstt��mmee dd''eexxppllooiittaattiioonn PPnnPP ??
Si vous r�pondez oui, alors le BIOS PnP commencera � configurer le
disque dur, la carte vid�o et le clavier pour permettre le d�marrage
du syst�me. Mais il laissera le soin de terminer la configuration au
syst�me d'exploitation. Il peut faire une ``isolation'' sur le bus ISA
en laissant les p�riph�riques d�sactiv�s, mais pr�ts � �tre configur�s
par le syst�me d'exploitation. Pour Linux, vous devrez probablement
indiquer que votre syst�me d'exploitation n'est pas _P_n_P. Si vous ne le
faites pas, le BIOS risque de laisser vos p�riph�riques ISA, qu'il n'a
pas configur�s,en �tat d�sactiv� ?? Et les p�riph�riques PCI peuvent
�galement ne pas �tre configur�s ?
Si vous r�pondez non, alors le BIOS fera la configuration lui-m�me. Il
utilisera la configuration pr�c�dente, sauvegard�e dans la m�moire non
volatile (ESCD), � moins que vous n'ayez ajout� de nouveaux
p�riph�riques PnP. Voir ``La base de donn�es ESCD du BIOS'' Si votre
derni�re session d'utilisation de l'ordinateur a �t� faite sous Linux,
il n'y aura pas de modification de configuration. Voir ``Le BIOS
configure le PnP''. Mais si cette derni�re session a �t� faite sous
Windows 9x (qui est PnP), alors Windows peut avoir modifi� l'ESCD.
Normalement, il ne le fera que si vous "forcez" une configuration ou
si vous installez un p�riph�rique ancien. Voir ``Utilisation de
Windows pour param�trer l'ESCD''. Si vous utilisez le(s) programme(s)
utilitaire(s) isapnp ou PCI pour r�aliser la configuration, ils
s'ex�cuteront apr�s le BIOS et modifieront les choses de la fa�on que
vous leur aurez indiqu�.
44..11..11.. CCoohhaabbiittaattiioonn aavveecc WWiinnddoowwss99xx
Si vous faites tourner Windows sur le m�me PC, comment r�pondre � la
question du BIOS : Avez-vous un Syst�me d'Exploitation (SE) _P_n_P ?
Normalement (et avec confiance) vous devriez dire non pour Linux
standard et oui pour Windows9x. Mais il est particuli�rement p�nible
d'avoir � param�trer le menu CMOS manuellement � chaque fois que vous
changez de SE. Une solution consiste � param�trer la CMOS pour un SE
non _P_n_P, m�me si vous d�marrez sous Windows. On peut esp�rer que
Windows sera capable de prendre en compte cette situation o� tout le
mat�riel a �t� enti�rement configur� par le BIOS. De plus, on peut
penser que m�me si Windows ne s'aper�oit pas que le mat�riel a d�j�
�t� configur�, il fera la configuration lui-m�me et que tout ira bien.
Mais il semble que cela ne se passe pas ainsi. Windows ne semble
seulement capable d'indiquer aux pilotes de p�riph�riques que ce qui
est enregistr� dans les registres Windows. Mais, la configuration
mat�rielle r�elle (effectu�e par le BIOS) est celle qui est
enregistr�e dans l'ESCD et elle peut �tre diff�rente de celle des
registres => donc ennuis.
Une solution pour essayer d'avoir les m�mes infos dans les registres
et dans l'ESCD consiste � installer (ou r�installer) Windows apr�s que
le BIOS ait �t� configur� pour un "SE non _P_n_P". Cela devrait
permettre de pr�senter � Windows un syst�me configur� par le BIOS. Si
cette configuration se fait sans conflits, avec un peu de chance,
Windows s'en contentera et la sauvegardera dans ses registres. Si cela
fonctionne pour vous (et c'est la derni�re version de cet HOWTO),
faites-le moi savoir car je n'ai eu qu'une seule indication me disant
que cela marchait.
Une autre m�thode consiste � "enlever" les p�riph�riques qui causent
des probl�mes � Windows en cliquant sur "enlever" dans le gestionnaire
de p�riph�riques. Ensuite, red�marrez le PC avec "SE non _P_n_P"
(param�tr� dans la CMOS au moment du red�marrage�. Windows
r�installera alors les p�riph�riques, en utilisant, on l'esp�re, le
param�trage des ressources du bus tel que configur� par le BIOS.
Pensez que Windows peut vous demander d'ins�rer le CD d'installation
de Windows dans le lecteur car, quelquefois, il ne trouve pas les
fichiers de pilotes (et autres) m�me s'ils sont d�j� pr�sents. Pour le
v�rifier, j'ai "enlev�" la carte NIC (carte interface r�seau) qui
avait un pilote compatible Novell. Au red�marrage, Windows l'a
r�install�e pour un r�seau Microsoft au lieu de Novell. Ce qui
signifie que le client Novell a d� �tre r�install�. Indiquez moi vos
probl�mes lors de l'utilisation de cette m�thode (uniquement pour la
derni�re version de cet HOWTO).
44..22.. CCoommmmeenntt ddooiivveenntt ��ttrree ccoonnttrr��ll��eess lleess rreessssoouurrcceess dduu bbuuss ??
cela peut simplement signifier de d�cider comment allouer les
ressources du bus pour les IRQ et le DMA. Sur "auto", le bios se
chargera de l'allocation. Sur manuel, vous r�serverez manuellement
certaines IRQ � utiliser pour des cartes anciennes (cartes non-pnp).
Maintenant le BIOS peut, ou non, reconna�tre vos vieilles cartes. Le
BIOS ne reconna�tra vos cartes anciennes que si vous faites tourner
ICU (ou quelque chose comme cela) sous Windows pour les faire
reconna�tre par le BIOS. S'il les reconna�t, alors essayez l'option
"auto". S'il ne les reconna�t pas, alors r�servez manuellement les IRQ
n�cessaires pour les cartes ISA anciennes et laissez BIOS PnP allouer
le reste.
44..33.. RR��iinniittiiaalliisseerr llaa ccoonnffiigguurraattiioonn ??
Cette op�ration effacera de la base de donn�es ESCD du BIOS la mani�re
dont les p�riph�riques PnP doivent �tre configur�s ainsi que la liste
de configuration des p�riph�riques anciens (non-PnP). Ne jamais faire
cela � moins d'�tre convaincu que cette base de donn�es est erron�e et
doit �tre refaite. Il a �t� dit quelque part que vous ne devriez faire
cela que dans le cas o� votre ordinateur refuserait de d�marrer. Si le
BIOS perd les donn�es sur les p�riph�riques anciens, alors vous devrez
faire tourner � nouveau ICA sous Windows pour retrouver ces donn�es.
55.. CCoommmmeenntt aaggiirr aavveecc lleess ccaarrtteess PPnnPP
55..11.. IInnttrroodduuccttiioonn
Aujourd'hui, la plupart des nouvelles cartes internes sont _P_l_u_g_-_a_n_d_-
_P_l_a_y _(_P_n_P_). Bien qu'il existe quelques logiciels sous Linux pour g�rer
le _P_n_P ils ne sont pas toujours d'utilisation facile. Il y a 6
m�thodes diff�rentes, dont la liste suit, pour s'occuper du _P_n_P (mais
certaines peuvent ne pas �tre utilisables dans notre situation).
Celle(s) � utiliser d�pend(ent) de nos objectifs. Ce qui semble �tre
le plus efficace dans l'imm�diat peut se r�v�ler ne pas �tre le plus
facile et le meilleur dans le long terme. Une m�thode qui para�t
simple consiste � ne rien faire et � laisser le BIOS-PnP effectuer la
configuration, mais vous devrez faire quelques investigations pour
d�couvrir ce qu'a fait le BIOS. Il faudrait que quelqu'un qui a tester
toutes les m�thodes en fasse une comparaison et l'�crive. Vous pouvez
avoir � utiliser plus d'une m�thode pour arriver � vos fins.
� ``D�sactiver le PnP'' par cavaliers (mais ce n'est pas possible
pour de nombreuses cartes) ou par un logiciel sp�cial
� ``Le BIOS configure le PnP'' (Pour le bus PCI, vous avez seulement
besoin d'un BIOS PCI, autrement, il vous faut BIOS PnP)
� ``Isapnp'' c'est un programme que vous pouvez toujours utiliser
pour configurer les p�riph�riques PnP sur le bus ISA uniquement
� ``Utilitaires PCI'' pour effectuer la configuration du bus PCI
� ``Configuration par Windows'' puis vous lancez Linux � partir de
Windows/DOS. � utiliser en dernier recours
� ``Patch Kernel'' pour transformer Linux en un syst�me
d'exploitation PnP.
� ``Configuration par le pilote de p�riph�rique'', mais peu le font.
Chacune des solutions ci-dessus configurera les ressources du bus dans
le mat�riel. Seule les deux derni�res solutions devraient informer le
pilote du p�riph�rique de ce qui a �t� fait. Mais seule la derni�re le
fait s�rement (puisque c'est le pilote lui-m�me qui le fait). La fa�on
dont le pilote se trouve inform� d�pend de lui et vous pouvez avoir �
faire quelque chose pour le renseigner. Voir ``Indiquer la
configuration au pilote''
55..22.. DD��ssaaccttiivveerr llee PPnnPP ??
De nombreux p�riph�riques sont uniquement PnP, sans option pour le
d�sactiver. Mais, pour certains, vous pouvez d�sactiver le _P_n_P avec
des cavaliers ou en utilisant un programme sous Windows qui est fourni
avec le p�riph�rique (configuration sans cavaliers). Cela �vite la
t�che souvent compliqu�e de configuration _P_n_P. N'oubliez d'indiquer au
BIOS que ces ressources du bus sont r�serv�es. Il y a aussi plusieurs
raisons pour lesquelles vous pouvez ne pas vouloir d�sactiver le _P_n_P :
1. Si vous avez MS Windows sur la m�me machine, vous voulez permettre
au PnP sous MS Windows de configurer les p�riph�riques de fa�on
diff�rente que sous Linux.
2. Le champ des possibilit�s de choix des num�ros d'IRQ (ou des
adresses de ports) etc. peut �tre particuli�rement restreint si
l'on n'utilise pas le PnP.
3. Vous avez un pilote de p�riph�rique sous Linux qui utilise les
m�thodes _P_n_P pour chercher le p�riph�rique qu'il contr�le.
4. Si vous avez � changer la configuration dans le futur, cela peut
�tre plus facile en utilisant le _P_n_P (pas de cavaliers � d�placer
ou de programme Dos/Windows � faire tourner).
5. Vous pouvez avoir (ou aurez) d'autres p�riph�riques _P_n_P qui auront
besoin d'�tre configur�s et vous voulez donc le pr�voir (ou
l'�tudier) de toute fa�on.
Une fois qu'ils sont configur�s comme des p�riph�riques non-PnP,
ils ne peuvent plus �tre configur�s par un logiciel PnP ou par le
BIOS (� moins que vous ne d�placiez les cavaliers et/ou n'utilisiez
� nouveau le logiciel de configuration Dos/Windows).
55..33.. LLee BBIIOOSS ccoonnffiigguurree llee PPnnPP
55..33..11.. IInnttrroodduuccttiioonn �� ll''uuttiilliissaattiioonn dduu BBIIOOSS ppoouurr ccoonnffiigguurreerr llee PPnnPP
Si vous avez un BIOS PnP, il peut configurer le mat�riel. Cela
signifie que votre BIOS lit les besoins en ressources de tous les
p�riph�riques et les configure (leur alloue les ressources du bus).
C'est un substitut de SE _P_n_P � l'exception pr�s que le BIOS ne fait
pas le lien entre les p�riph�riques et leurs pilotes et qu'il
n'indique pas aux pilotes comment il a fait la configuration. Il
devrait normalement utiliser la configuration qu'il a stock� en
m�moire non volatile (ESCD). S'il trouve un nouveau p�riph�rique ou en
pr�sence d'un conflit, le BIOS devrait effectuer les modifications
n�cessaires dans la configuration et ne pas utiliser exactement ce
qu'il y avait dans l'ESCD.
Votre BIOS doit supporter une telle configuration mais il y a eu des
cas o� il ne l'a pas fait correctement ou l'a fait de mani�re
incompl�te. Un avantage de l'utilisation du BIOS r�side dans sa
simplicit� puisque, dans la plupart des cas, il n'y a rien �
param�trer (sauf � indiquer dans le menu CMOS du BIOS que le SE n'est
pas PnP). Alors que quelques pilotes de p�riph�riques peuvent �tre
capables de d�tecter automatiquement ce que le BIOS a fait, dans
certains cas, vous devrez le faire (ce qui n'est pas toujours facile).
Voir ``Quelle est ma configuration actuelle ?'' Un autre avantage
possible vient de ce que le BIOS fait son boulot avant que Linux ne
d�marre et donc que toutes les ressources du bus sont pr�tes � �tre
utilis�es (et trouv�es) par les pilotes de p�riph�riques qui d�marrent
plus tard.
Selon MS le fait qu'un BIOS PNP soit capable de configurer au sens PnP
les p�riph�riques (sans l'aide de MS Windows) est optionnel (pas
obligatoire). Mais il semble que la plupart de ceux cr��s apr�s 1996
?? ou aux environs en sont capables. Nous devrions leur envoyer des
lettres de remerciements s'ils le font correctement. Ils configurent �
la fois les bus ISA et PCI, mais on a dit que quelques vieux BIOS ne
le faisaient que pour le PCI. Pour essayer d'avoir plus d'informations
concernant votre BIOS, regardez sur le Web. Merci de ne pas me poser
de questions sur ce sujet car je n'ai aucunes donn�es. Les d�tails
que vous aimeriez conna�tre concernant votre BIOS peuvent �tre
difficiles � trouver (ou pas disponibles). Quelques BIOS ont des
fonctionnalit�s _P_n_P minimales et essaient de se d�charger de la partie
difficile de la t�che de configuration sur des utilitaires Windows. Si
cela arrive, soit vous devrez trouver une autre m�thode (comme les
outils isapnp) soit vous devrez essayer de param�trer la base de
donn�es ESCD si le BIOS en poss�de une. Consulter le paragraphe
suivant.
55..33..22.. LLaa bbaassee ddee ddoonnnn��eess EESSCCDD dduu BBIIOOSS
Le BIOS entretient une base de donn�es non volatile contenant la
configuration _P_n_P qu'il essaiera d'utiliser. On l'appelle ESCD
(Extended System Configuration Data). Encore une fois, l'existence de
l'ESCD est optionnelle mais la plupart des BIOS-PnP la poss�de. L'ESCD
non seulement stocke la configuration des ressources des p�riph�riques
_P_n_P mais aussi stocke les informations de configuration des
p�riph�riques non-PnP (et les rep�re comme �tant non-PnP) pour �viter
les conflits. Les donn�es ESCD sont habituellement sauvegard�es dans
un circuit qui conserve ces donn�es quand on arr�te l'alimentation,
mais quelquefois elles sont stock�es sur un disque dur ??
L'objectif de l'ESCD est de garder la derni�re configuration utilis�e,
mais si vous utilisez un programme tel que isapnp sous Linux ou des
utilitaires PCI (qui ne mettent pas � jour l'ESCD) alors, l'ESCD n'en
n'aura aucune connaissance et ne sauvegardera pas cette configuration
dans l'ESCD. Un bon SE _P_n_P doit mettre � jour l'ESCD de fa�on � ce que
vous puissiez l'utiliser plus tard avec un SE non-PnP (comme Linux
standard). Windows peut le faire dans certaines circonstances. Voir
``Utilisation des Windows pour param�trer l'ESCD''.
Pour utiliser ce qui a �t� param�tr� dans l'ESCD assurez-vous de
choisir "SE non-PnP" �quivalent dans la CMOS du BIOS. Ensuite, chaque
fois que le BIOS d�marre (avant le chargement du SE Linux) il doit
configurer les choses de cette fa�on. Si le BIOS d�tecte une nouvelle
carte _P_n_P qui n'est pas dans l'ESCD, il doit alors allouer des
ressources du bus � cette carte et mettre l'ESCD � jour. Il peut m�me
avoir � modifier les ressources du bus d�j� assign�es � des cartes _P_n_P
existantes et modifier l'ESCD en cons�quence.
Si chaque p�riph�rique a enregistr� sa derni�re configuration, il ne
devrait pas �tre n�cessaire de les reconfigurer � chaque red�marrage
de votre PC. Mais cela ne fonctionne pas comme cela. Donc toutes les
donn�es ESCD doivent �tre correctes si vous utilisez le BIOS pour le
_P_n_P. Il y a quelques BIOS qui n'ont pas d'ESCD mais poss�dent une
sorte de m�moire non volatile pour stocker les informations concernant
les ressources du bus qui ont �t� r�serv�es par les cartes non-PnP. De
nombreux BIOS poss�dent les deux.
55..33..33.. UUttiilliissaattiioonn ddee WWiinnddoowwss ppoouurr ppaarraamm��ttrreerr ll''EESSCCDD
Si le BIOS ne param�tre pas l'ESCD de la fa�on que vous le voulez (ou
de la fa�on dont il faudrait), il serait int�ressant d'avoir un
utilitaire Linux qui le fasse. Au d�but 1999, il n'y en avait pas. Il
faut donc essayer d'utiliser Windows pour le faire (si vous l'avez sur
le m�me PC).
Il y a trois mani�res d'utiliser Windows pour essayer de
param�trer/modifier l'ESCD. L'une consiste � utiliser l'utilitaire ICU
con�u pour DOS ou Windows 3.x. Cela devrait aussi fonctionner
correctement pour Windows 9x/2k ?? Une autre m�thode consiste �
initialiser les p�riph�riques manuellement ("forc�e") sous Windows
9x/2k de sorte que Windows mette cette information dans l'ESCD
lorsqu'on stoppe Windows normalement. La troisi�me m�thode est
destin�e aux p�riph�riques anciens qui ne sont pas _p_l_u_g_-_a_n_d_-_p_l_a_y. Si
Windows les reconna�t et sait quelles ressources du bus ils utilisent,
alors Windows devrait mettre cette info dans l'ESCD.
Si les p�riph�riques _P_n_P sont configur�s automatiquement par Windows
sans que l'utilisateur ne le "force" � changer les param�tres, alors
ceux-ci ne seront probablement inscrit dans l'ESCD. Naturellement
Windows peut d�cider de lui-m�me de les configurer en utilisant des
param�tres identiques � ceux qui sont dans l'ESCD mais ce n'est qu'une
co�ncidence.
Les syst�mes d'exploitation Windows 9x sont _P_n_P et configurent, au
sens _P_n_P les p�riph�riques. Ils entretiennent leur propre base de
donn�es _P_n_P au plus profond des Registres (stock�s dans des fichiers
binaires Windows). Il y a �galement tout un tas de renseignements
concernant la configuration dans les registres, en plus des ressources
du bus pour le _P_n_P. Il y a � la fois la configuration courante des
ressources _P_n_P en m�moire et une autre (peut-�tre � peu pr�s la m�me)
stock�e sur le disque dur. Pour la consulter (celle qui est en m�moire
?)indirectement dans Windows98 ou pour y forcer des modifications
vous utilisez le gestionnaire de p�riph�riques.
Dans Windows98, il y a 2 mani�res d'invoquer le gestionnaire de
p�riph�riques :
1. Poste de travail --> Panneau de configuration --> Syst�me -->
Gestionnaire de p�riph�riques.
2. (cliquer sur le bouton droit de la souris) Poste de travail -->
Propri�t�s --> Gestionnaire de p�riph�riques.
Puis dans le gestionnaire de p�riph�riques vous s�lectionnez un
p�riph�rique (quelquefois en plusieurs �tapes s'il y plusieurs
p�riph�riques de la m�me classe). Puis cliquez sur Propri�t�s puis
sur Ressources. Pour essayer de modifier la configuration de la
ressource manuellement, d�s�lectionnez "utiliser les param�tres
automatiques" puis cliquez sur "Modification des param�tres".
Maintenant essayer de modifier les param�tres, mais il se peut que
cela ne soit pas possible. Si vous le pouvez, vous avez "forc�" une
modification. Un message doit vous informer de ce qui a �t� forc�.
Si vous voulez conserver le param�trage existant de Windows mais
que vous vouliez le "forcer", alors, vous devrez forcer une
modification quelconque puis forcer � nouveau les param�tres
originaux.
Pour voir ce qui a �t� "forc�" sous Windows98 regardez dans la liste
du "mat�riel forc�" : D�marrer --> Programmes --> Accessoires -->
Outils syst�me -- Information syst�me --> Ressources mat�rielles -->
Mat�riel forc�. Quand vous "forcez une modification des ressources du
bus sous Windows, il doit mettre votre modification dans l'ESCD (�
condition que vous quittiez Windows normalement).
> De la fen�tre "Information syst�me" vous pouvez �galement contr�ler
comment les IRQ et les ports d'E/S ont �t� allou�s sous Windows.
M�me si Windows ne signale pas de conflit de ressources du bus, il
peut en exister sous Linux. Cela vient du fait que Windows peut
assigner les ressources du bus de mani�re diff�rente de l'ESCD. Dans
les rares cas o� tous les p�riph�riques sous Windows sont soit des
p�riph�riques anciens soit des p�riph�riques "forc�s", il faut que les
configurations Windows et ESCD soient identiques.
55..33..44.. AAjjoouutt dd''uunn nnoouuvveeaauu pp��rriipphh��rriiqquuee ((ssoouuss LLiinnuuxx oouu ssoouuss WWiinnddoowwss))
Si vous ajoutez un nouveau p�riph�rique _P_n_P et que vous ayez param�tr�
votre BIOS pour un "SE non PnP", alors le BIOS devrait le configurer
automatiquement et en enregistrer la configuration dans l'ESCD. S'il
s'agit d'un p�riph�rique _n_o_n _P_n_P ancien (ou d'un p�riph�rique
configurable par cavaliers, etc...), vous n'avez alors que peu
d'options pour le prendre en compte.
Vous devez �tre capable d'indiquer directement au BIOS (par
l'interm�diaire des menus de configuration de la CMOS) que certaines
ressources du bus qu'il utilise sont r�serv�es et ne doivent pas �tre
allou�es par le _P_n_P. Cette information n'est pas sauvegard�e dans
l'ESCD. Mais, en cas de conflit, il peut y avoir une option du menu
BIOS permettant de rendre pr�pond�rant ou non, sur le contenu de
l'ESCD, les choix faits au niveau de la CMOS. Une autre m�thode
consiste � faire tourner ICU sous DOS/Windows. Encore une autre
consiste � installer manuellement le p�riph�rique sous Windows 9x/2k
et de s'assurer que cette configuration a �t� "forc�e" (voir le
paragraphe pr�c�dent). Si elle a �t� "forc�e" Windows devrait avoir
mis � jour l'ESCD lors de l'arr�t du PC.
55..44.. IIssaappnnpp
Une bonne partie de la documentation concernant isapnp est difficile �
comprendre si l'on ne conna�t pas les bases du _P_n_P. Cet HOWTO devrait
aider � la comprendre ainsi que les FAQ (Questions fr�quemment pos�es)
qui l'accompagne. isapnp ne concerne que les p�riph�riques PnP sur le
bus ISA (non PCI). En lan�ant le programme Linux "isapnp" au
d�marrage, on configure ces p�riph�riques avec les valeurs indiqu�es
dans /etc/isapnp.conf. Il est possible de cr�er ce fichier de
configuration automatiquement mais vous devrez l'�diter manuellement
pour faire des choix entre diff�rentes options. Avec isapnp, un
pilote de p�riph�rique, faisant partie du noyau, peut �tre lanc�
pr�matur�ment, avant que isapnp ait param�tr� l'adresse, etc. dans le
mat�riel. Ce qui entra�ne que le pilote de p�riph�rique ne sera pas
capable de trouver le p�riph�rique correspondant. Le pilote utilise la
bonne adresse alors que celle-ci n'a pas encore �t� param�tr�e dans le
mat�riel.
Si votre distribution Linux installe automatiquement isapnptools,
isapnp peut d�j� �tre lanc� au d�marrage. Dans ce cas, tout ce que
vous avez besoin de faire est d'�diter /etc/isapnp.conf selon "man
isapnp.conf". Notez que cela revient � configurer manuellement PnP
puisque vous avez � prendre les d�cisions sur la mani�re de configurer
� mesure que vous �ditez le fichier de configuration. Vous pouvez
utiliser le programme "pnpdump" pour vous aider � cr�er le fichier de
configuration. Si vous utilisez "isapnp" tel quel et que vous ayez un
BIOS _P_n_P, vous devrez probablement indiquer au BIOS (quand vous le
param�trerez) que vous n'avez pas de SE _P_n_P puisque vous voudrez
toujours que que le BIOS configure les p�riph�riques PCI. Alors que le
BIOS peut �galement configurer les p�riph�riques ISA, isapnp le
refera.
55..55.. UUttiilliittaaiirreess PPCCII
Le nouveau paquetage Utilitaires PCI (= pciutils, improprement appel�
"pcitools"), devrait vous permettre de configurer manuellement, _� _l_a
_P_n_P, le bus PCI. "lspci" donne la liste des ressources bus, alors que
"setpci" param�tre les allocations de ressources dans le mat�riel.
55..66.. CCoorrrriiggeerr llee nnooyyaauu ppoouurr rreennddrree LLiinnuuxx ccoommppaattiibbllee PPnnPP
David Howells a cr�� une telle mise � jour pour le faire. C'est le
"Gestionnaire de configuration/ressource du noyau Linux" ("Linux
Kernel Configuration/Resource Manager") quelquefois appel�
"Gestionnaire de configuration mat�rielle". Cette adaptation peut ne
pas correspondre au noyau le plus r�cent. Le noyau r�sultant est
r�put� stable mais cependant des bogues ont �t� signal�s. Une
documentation est incluse comme serial.txt, pour montrer comment faire
pour un port s�rie. Elle fournit des "fichiers" dans l'arborescence
/proc pour que vous puissiez voir ce qui se passe et peut enregistrer
des commandes dans l'un de ces fichiers pour une configuration
personnalis�e. Un probl�me vient de ce que de nombreux pilotes de
p�riph�riques ne le prennent pas en compte et qu'il vous faut encore
utiliser les fichiers de configuration traditionnels etc. pour
effectuer la configuration. Consultez <
http://www.astarte.free-
online.co.uk>
55..77.. CCoonnffiigguurraattiioonn ppaarr WWiinnddoowwss
Si vous avez Windows9x (ou 2k) sur le m�me PC, d�marrer alors
simplement Windows et laissez-le configurer le _P_n_P. Puis lancez alors
Linux � partir de Windows (ou du DOS). On a signal� que Windows
effa�ait les IRQ des registres des p�riph�riques PCI. Dans ce cas,
Linux signale qu'il a trouv� une IRQ � z�ro. Dans ce cas, vous ne
pouvez pas utiliser cette m�thode.
55..88.. CCoonnffiigguurraattiioonn ppaarr lleess ppiillootteess ddee pp��rriipphh��rriiqquueess
Quelques pilotes de p�riph�riques utilisent les m�thodes _P_n_P pour
param�trer les ressources du bus au point de vue mat�riel et seulement
pour les p�riph�riques qu'ils contr�lent. Dans ce cas, puisque le
pilote a effectu� la configuration, il conna�t �videmment la
configuration et il n'y a aucun besoin de lui fournir ces
informations.
Le probl�me ici porte sur deux points. Il est difficile de mettre dans
le pilote tout ce qui est n�cessaire et le pilote peut accaparer des
ressources du bus qui seraient n�cessaires pour d'autres
p�riph�riques. Cela serait plus facile pour l'utilisateur, mais un
noyau Linux _P_n_P serait une meilleure solution. Voir ``Linux doit
mieux prendre en compte le <em>PnP</em>''
55..99.. LLooggiicciieellss eett ddooccuummeennttss PPnnPP
� Page d'acceuil Isapnptools
<
http://www.roestock.demon.co.uk/isapnptools/>
� Mise � jour pour rendre le noyau Linux <em>PnP</em>
<
http://www.astarte.free-online.co.uk>
� Projet de pilote <em>PnP</em>
<
http://www.io.com/~cdb/mirrors/lpsg/pnp-linux.html>
� Sp�cifications <em>PnP</em> de Microsoft
<
http://www.microsoft.com/hwdev/respec/pnpspecs.htm>
� Le livre : PCI System Architecture, 3rd ed. by Tom Shanley +,
MindShare 1995. Traite des fonctionnalit�s style PnP pour le bus
PCI bus.
� Le livre : Architecture syst�me _P_l_u_g _a_n_d _P_l_a_y, de Tom Shanley, Mind
Share 1995. D�taille le _P_n_P sur le bus ISA. Uniquement un survol
concis du _P_n_P sur le bus PCI.
66.. CCoommmmuunniiccaattiioonn ddee llaa ccoonnffiigguurraattiioonn aauu ppiilloottee
66..11.. IInnttrroodduuccttiioonn
La mani�re exacte dont cela s'effectue d�pend du pilote. Certains
pilotes disposent de plus d'une m�thode pour d�tecter la configuration
du p�riph�rique physique. � l'extr�me, on trouve le cas o� il faut
param�trer "en dur" les ressources du bus dans le noyau et recompiler
celui-ci. � l'autre extr�me, le pilote fait tout automatiquement et
vous n'avez rien � faire. Il peut m�me param�trer les ressources du
bus dans le mat�riel en utilisant les m�thodes _P_n_P.
Entre les deux, on trouve les cas o� il faut faire tourner un
programme pour faire passer les infos au pilote ou mettre ces infos
dans un fichier. Dans certains cas, le pilote peut tester le
p�riph�riques � des adresses ou il pense trouver le p�riph�rique. Il
peut alors essayer de tester diff�rentes IRQ pour voir laquelle
fonctionne (IRQ = Interrupt ReQuest / ReQu�te d'Interruption). Ce
qu'il peut faire automatiquement ou non. Dans d'autres cas, le pilote
utilise des m�thodes _P_n_P pour trouver le p�riph�rique et la fa�on dont
les ressources du bus ont �t� affect�es, mais ne pas les param�trer
lui-m�me. Il peut aussi regarder certains fichiers du r�pertoire
/proc.
On peut avoir besoin d'indiquer les ressources du bus comme param�tre
au noyau pour un module chargeable. Voir
/usr/lib/modules_help/descr.gz pour avoir une liste des param�tres
possibles. Le modules � charger est indiqu� dans /etc/modules avec ses
param�tres. Dans certains autres cas les ressources du bus peuvent
�tre indiqu�es au noyau par des param�tres. Ceux-ci sont mis dans le
fichier lilo.conf sous la forme append="...". Dans ce cas le
programme lilo doit �tre ex�cut� pour enregistrer ces donn�es dans le
code de d�marrage du noyau.
Alors qu'il y a une grande diversit� dans la mani�re dont les pilotes
peuvent trouver les ressources du bus, le but final est le m�me. Il y
a tellement de p�riph�riques diff�rents et de pilotes de p�riph�riques
pour les g�rer que vous pouvez avoir besoin de consulter la
documentation de votre pilote particulier pour trouver comment celui-
ci g�re les ressources du bus et ce que vous avez besoin de faire pour
vous assurer qu'il trouve les infos dont il a besoin. Quelques br�ves
indications sur un petit nombre de pilotes de p�riph�riques sont
donn�es dans les paragraphes suivants.
66..22.. PPiilloottee dduu ppoorrtt ss��rriiee :: sseettsseerriiaall
Pour le pilote de port s�rie standard (et non pas pour les cartes
multi-ports) vous utilisez setserial pour en configurer le pilote. Ce
programme est souvent lanc� � partir d'un fichier de d�marrage. Dans
les versions les plus r�centes, on trouve un fichier /etc/serial.conf
que vous pouvez "�diter" en utilisant simplement la commande setserial
de la mani�re habituelle et ce que vous param�trez en utilisant
setserial est sauvegard� dans le fichier serial.conf. Le fichier
serial.conf devrait �tre consult� lors de l'ex�cution de la commande
setserial lanc�e par un fichier de d�marrage. Votre distribution peut
le faire ou ne pas le faire pour vous.
Il y a deux mani�res diff�rentes d'utiliser setserial selon les
options que vous choisissez. Une m�thode consiste � indiquer la
configuration manuellement au pilote. L'autre m�thode consiste �
tester une adresse donn�e et � voir s'il y a un port s�rie � cette
adresse. On peut aussi tester cette adresses et essayer de d�tecter si
une interruption est utilis�e pour ce port. Le pilote ex�cute quelque
chose comme setserial au d�marrage, mais ne teste pas les
interruptions, il affecte simplement l'interruption "standard" ce qui
peut ne pas correspondre � la r�alit�. Il teste uniquement l'existence
d'un port. Consulter le Serial-HOWTO pour avoir des d�tails
compl�mentaires.
66..33.. PPiillootteess ddee ccaarrtteess ssoonn
66..33..11.. OOSSSS--LLiittee
Vous devez passer IO, IRQ, et DMA en tant que param�tres � un module
ou les compiler dans le noyau. Mais quelques cartes PCI seront
d�tect�es automatiquement (par exemple en prenant les infos dans
/proc/pci ou quelque chose d'�quivalent). RedHat fournit un programme
"sndconfig" qui d�tecte les cartes ISA PnP et param�tre
automatiquement les modules pour les charger avec les ressources de
bus trouv�es.
66..33..22.. OOSSSS ((OOppeenn SSoouunndd SSyysstteemm)) eett AALLSSAA
Ils d�tecteront les cartes par les m�thodes _P_n_P puis choisiront le
pilote appropri� et le chargeront. Ils param�treront �galement les
ressources du bus sur une carte ISA-PnP. Vous pouvez avoir �
intervenir manuellement pour r�soudre les probl�mes de conflits. Pour
le pilote ALSA, la prise en charge de l'ISA-PnP est optionnelle et
vous pouvez utiliser isapnp si vous le voulez.
77.. QQuueellllee eesstt mmaa ccoonnffiigguurraattiioonn aaccttuueellllee??
Ici "configuration" concerne l'attribution des ressources _P_n_P du bus
(adresses, IRQ, et DMA). C'est une question � deux volets pour chaque
p�riph�rique, et chacun d'eux doit avoir le m�me r�ponse.
1. Quelle est la configuration du logiciel du pilote de p�riph�rique ?
Autrement dit : comment le pilote pense-t-il que le mat�riel est
configur� ?
2. Quelle est la configuration (s'il y a lieu) du mat�riel
p�riph�rique ?
Naturellement la configuration mat�rielle du p�riph�rique et celle de
son pilote doivent �tre les m�mes (et normalement, c'est le cas).
Mais, si les choses ne se passent pas bien, c'est qu'il y a peut-�tre
une diff�rence. Cela signifie que le pilote a des donn�es incorrectes
concernant la configuration r�elle du mat�riel, et dysfonctionnement.
Si le logiciel que vous utilisez ne vous indique pas correctement ce
qui ne va pas (ou n'effectue pas la configuration correcte
automatiquement), il vous faudra chercher la configuration mat�rielle
des p�riph�riques et celle des pilotes correspondants. Alors que les
pilotes de p�riph�riques de Linux devraient "tout nous dire", il y a
des cas o� il n'est pas facile de d�terminer comment le mat�riel a �t�
configur�.
Un autre probl�me vient de ce que les messages � l'�cran indiquant la
configuration ne sont pas toujours clairs quant � la nature de la
configuration qu'ils concernent : le pilote de p�riph�rique, le
p�riph�rique lui-m�me ou les deux. Si le pilote de p�riph�rique s'est
vu attribu� une configuration et qu'ils teste le mat�riel pour
v�rifier qu'il est configur� de la m�me mani�re, alors la
configuration indiqu�e par le pilote devrait �tre � la fois celle du
pilote et du mat�riel.
Mais certains pilotes ne se comportent pas comme cela et peuvent
accepter une configuration qui ne puisse pas se v�rifier. Par exemple,
"setserial" acceptera une configuration qui ne se v�rifie pas (m�me si
vous demandez un test des ressources du bus). Dans ce cas "setserial"
peut uniquement vous indiquer la configuration du pilote et pas celle
du mat�riel.
Quelques infos concernant la configuration peuvent �tre obtenues en
lisant les messages du BIOS et de Linux qui apparaissent � l'�cran au
d�marrage initial de l'ordinateur. Souvent, ces messages d�filent trop
rapidement pour pouvoir �tre lus, mais lorsque leur d�filement
s'arr�te, tapez plusieurs fois sur la touche "Majuscule + d�filement
arri�re" (Shift-PageUp) pour les visualiser. Pour visualiser la suite,
taper sur la touche "Majuscule + d�filement avant" (Shift-PageDow). La
commande "dmesg" n'importe quand n'affichera que les messages du noyau
Linux et les messages les plus importants peuvent manquer (y compris
ceux du BIOS). Les messages de Linux peuvent quelquefois n'indiquer
que la vue de la configuration par les pilotes de p�riph�rique, et ces
informations peuvent parfois provenir d'un fichier de configuration
incorrect.
Les messages du BIOS affichent la configuration r�elle du mat�riel �
cet instant donn�, mais un SE _P_n_P, isapnp ou les utilitaires PCI
peuvent la modifier ult�rieurement. Les messages du BIOS sont affich�s
avant ceux de Linux. Comme alternative au rappel des messages par les
touches "majuscule + d�filement arri�re", essayez de geler l'affichage
en tapant sur la touche "Pause". Taper sur n'importe quelle touche
pour continuer. Mais, une fois que les messages de Linux commencent �
appara�tre, c'est trop tard pour utiliser la touche "Pause"
puisqu'alors, les messages de Linux ne sont pas gel�s.
77..11.. CCoommmmeenntt mmeess ppiillootteess ddee pp��rriipphh��rriiqquueess ssoonntt--iillss ccoonnffiigguurr��ss ??
Il y a des programmes que l'on peut lancer de la ligne de commande
(tel que "setserial" pour les ports s�rie) pour le d�terminer.
L'arborescence du r�pertoire /proc est utile. /proc/ioports indique
les adresses d'E/S utilis�es par les pilotes (ou essaye si c'est
faux). Ils peuvent ne pas �tre configur�s de cette fa�on dans le
mat�riel.
/proc/interrupts n'indique que les interruptions utilis�es
actuellement et beaucoup de celles qui ont �t� allou�es aux pilotes ne
sont pas affich�es car elles ne sont pas actuellement utilis�es. Par
exemple, m�me s'il y a une disquette dans l'unit� et qu'elle est pr�te
� �tre utilis�e, l'interruption la concernant ne sera pas affich�e, �
moins qu'elle ne soit effectivement en cours d'utilisation. De plus,
une interruption indiqu�e ici ne signifie pas qu'elle existe dans le
mat�riel. Un indice du fait qu'elle n'existe pas dans le mat�riel
consiste � v�rifier que le nombre d'interruptions g�n�r�es est 0. Et
encore, m�me si l'on voit que quelques interruptions ont �t� g�n�r�es,
cela peut signifier que cette interruption n'existe pas pour ce
p�riph�rique mais par un autre p�riph�rique qui n'est pas en cours
d'utilisation mais qui a pu g�n�rer une interruption ou deux. Dans le
noyau 2.2 l'arborescence /proc a �t� modifi�e.
77..22.. CCoommmmeenntt mmeess pp��rriipphh��rriiqquueess ssoonntt--iillss ccoonnffiigguurr��ss ??
C'est facile de trouver quelles ressources du bus ont �t� attribu�es �
des p�riph�riques sur un bus PCI : on utilise soit la commande "lspci"
ou, pour les noyaux <: 2.2: voir /proc/pci; pour les noyaux 2.2+:
/proc/bus/pci/devices. Pour le bus ISA, on peut essayer de faire
tourner pnpdump --dumpregs, mais ce n'est pas une m�thode s�re. Les
r�sultats peuvent �tre difficile � d�coder. Ne pas confondre les
adresses de port de lecture que pnpdump "essaye" (et o� il trouve
quelque chose) avec les adresses d'E/S du p�riph�rique trouv�. Ce ne
sont pas les m�mes.
Les messages en provenance du BIOS, lors du d�marrage, indique la
configuration mat�rielle au moment du d�marrage. Si vous vous basez
sur le BIOS pour faire votre configuration, ils faut qu'elle soit
encore valable. Les messages de Linux peuvent provenir des pilotes qui
ont fait des essais pour v�rifier la pr�sence du mat�riel (et
�ventuellement des essais sur les IRQ et le DMA). Naturellement, si
le p�riph�rique fonctionne correctement, alors il doit �tre configur�
comme son pilote.
88.. AAppppeennddiiccee
88..11.. AAddrreesssseess
Il y a trois types d'adresses : les adresses m�moire centrale, les
adresses d'E/S et les adresses de configuration. Pour le bus PCI, les
adresses de configuration constituent un espace d'adressage s�par�,
exactement comme le sont les adresses d'E/S. Sauf dans le cas des
adresses de configuration ISA, qu'une adresse sur le bus d'adresses
(ou sur le bus partag� adresses-donn�es dans le cas du PCI) soit ou
non une adresse m�moire, une adresse d'E/S ou une adresse de
configuration d�pend uniquement des tensions sur d'autres fils
(pistes) du bus.
88..11..11.. AAddrreesssseess ddee ccoonnffiigguurraattiioonn ssuurr llee bbuuss IISSAA ((PPoorrtt ddee lleeccttuurree
eettcc..))
En ce qui concerne le bus ISA, il n'y a pas, techniquement, d'espace
d'adressage de configuration, mais il existe, pour le CPU, une m�thode
sp�ciale d'acc�s aux registres de configuration sur les cartes PnP.
Trois adresses d'E/S sont r�serv�es � cet usage. Ces 3 adresses ne
sont pas diff�rentes pour chaque carte, mais sont partag�es par toutes
les cartes.
Les trois adresses sont appel�es port de lecture, port d'�criture et
port d'adresse. Ces ports ont la taille d'un octet. Chaque carte PnP
poss�de un certain nombre de registres car ces trois adresses seules
ne sont pas suffisantes pour une simple carte. Pour communiquer avec
une carte, le num�ro de la carte (handle) est envoy� � toutes les
cartes sur le port d'�criture. Une seule carte reconna�t son num�ro et
se met � l'�coute. Alors l'adresse du registre concern� est envoy�e
sur le port adresse (de toutes les cartes, mais une seule est �
l'�coute). Ensuite, on fait une �criture sur le port d'�criture ou une
lecture sur le port de lecture.
Le port d'�criture est toujours � l'adresse A79 et le port d'adresse
est toujours 279. Le port de lecture n'est pas d�termin� et est
initialis� par le logiciel de configuration � une adresse qui est
suppos�e ne pas �tre en conflit avec une autre carte ISA. S'il y a
conflit, il modifiera l'adresse. Pour toutes les cartes PnP, cette
adresses est "programm�e". Donc, si vous utilisez disons, isapnp, pour
initialiser ou tester des donn�es de configuration, vous aurez besoin
de conna�tre l'adresse du port de lecture.
88..11..22.. CChhaammppss dd''aaddrreesssseess
Le terme "adresse" est quelquefois utilis� dans ce document pour
parler d'une s�rie d'adresses contigu�s. Comme les adresses sont
donn�es en octets, une simple adresses contient uniquement un octet
mais les adresses E/S (et m�moire centrale) ont besoin de plus que
cela. Donc un espace de, disons, 8 octets est souvent utilis� pour les
adresses d'E/S alors que le nombre d'adresses en m�moire centrale
allou�es � un p�riph�rique est beaucoup plus grand. Pour un port s�rie
(p�riph�rique d'E/S), il suffit de donner l'adresse de d�part du
p�riph�rique (par exemple 3F8) puisqu'il est bien connu que le champ
d'adresses de ce type de p�riph�rique est seulement de 8 octets.
Cette adresse de d�part est connue sous le nom "d'adresse de base".
88..11..33.. EEssppaaccee dd''aaddrreesssseess
En ce qui concerne l'ISA, pour acc�der � la fois aux "espaces"
d'adresses E/S et m�moire (centrale) on utilise le m�me bus d'adresses
(les fils utilis�s pour les adresses sont partag�s). Comment le
p�riph�rique reconna�t-il si une adresse qui appara�t sur le bus
d'adresses est une adresse m�moire ou une adresse E/S ? Eh bien, il y
a quatre lignes sp�cialis�es du bus qui v�hiculent cette information
et un peu plus. Si l'un de ces quatre fils est aliment�, cela indique
que le CPU veut lire une adresse E/S, et la m�moire centrale ne tient
pas compte de l'adresse pr�sente sur les fils d'adresses du bus. Les
trois autres fils sont utilis�s � des fins identiques. En r�sum� : il
existe des lignes de lecture et d'�criture pour les adresses m�moire
centrale et pour celles d'E/S (4 fils en tout).
Pour le bus PCI, l'id�e de base est identique et on utilise �galement
4 fils, mais c'est r�alis� de fa�on l�g�rement diff�rente. Au lieu
d'avoir uniquement l'un des quatre fils aliment�, on code un nombre
binaire sur ces fils (16 possibilit�s diff�rentes). On peut donc
v�hiculer plus d'informations. Quatre de ces 16 valeurs sont utilis�es
pour les espaces m�moire et E/S comme dans le paragraphe ci-dessus. En
plus, on trouve l'espace des adresses de configuration qui utilise
deux valeurs suppl�mentaires. Les dix possibilit�s restantes sont
r�serv�es pour d'autres utilisations.
88..11..44.. VV��rriiffiiccaattiioonn ddeess cchhaammppss dd''aaddrreesssseess ((TTeesstt ddeess ccoonnfflliittss
dd''aaddrreesssseess EE//SS IISSAA))
Pour le bus ISA, il existe un syst�me implant� sur chaque carte PnP
pour v�rifier que d'autres cartes n'utilisent pas la m�me adresse. Si
deux cartes ou plus utilisent les m�mes adresses d'E/S, aucune des
cartes ne fonctionnera correctement. Un bon logiciel _P_n_P devrait
affecter les ressources du bus pour �viter de tels conflits, mais,
m�me dans ce cas, une carte ancienne pourrait se cacher quelque part
avec la m�me adresse.
Le test consiste, pour la carte, � donner, sur le bus, comme num�ros
de test ses propres registres d'E/S. Le logiciel _P_n_P les lit et
v�rifie qu'il lit les m�mes num�ros. Si tel n'est pas le cas, quelque
chose ne va pas (comme, par exemple, une autre carte � la m�me
adresse). Il r�p�te alors le test avec un autre num�ro de test.
Puisqu'en r�alit� il teste le champ des adresses d'E/S assign� � cette
carte, on l'appelle " test des champs d'adresses". On devrait plut�t
l'appeler "test des conflits d'adresses". S'il y a un conflit
d'adresses, on obtient un message d'erreur qu'il faut r�soudre par ses
propres moyens.
88..11..55.. CCoommmmuunniiccaattiioonn ddiirreeccttee vviiaa llaa mm��mmooiirree..
Traditionnellement, la plupart des p�riph�riques d'E/S utilisaient les
E/S m�moire pour communiquer avec le CPU. Par exemple, le port s�rie
fonctionne de cette fa�on. Le pilote de p�riph�rique, qui tourne sur
le CPU lit et �crit les donn�es de/vers l'espace des adresses d'E/S et
la m�moire centrale. Une m�thode plus rapide consisterait � faire
mettre les donn�es directement en m�moire centrale par le
p�riph�rique. Une mani�re de le r�aliser est d'utiliser l'acc�s direct
m�moire (``Canaux DMA''). Une autre m�thode consiste � affecter un
espace de la m�moire centrale au p�riph�rique. Comme cela, le
p�riph�rique lit et �crit directement en m�moire centrale sans avoir �
se pr�occuper de l'acc�s direct m�moire (DMA). De tels p�riph�riques
poss�dent normalement des adresses d'E/S et des adresses m�moire.
88..22.. LLeess iinntteerrrruuppttiioonnss -- DDeessccrriippttiioonn dd��ttaaiillll��ee..
Le syst�me d'interruption v�hicule un paquet d'informations, mais
seulement de fa�on indirecte. Le signal d'interruption (une tension
sur un fil) indique simplement � un circuit appel� contr�leur
d'interruptions qu'un certain p�riph�rique a besoin que l'on s'occupe
de lui. Le contr�leur d'interruption le signale alors au CPU. Le CPU
va chercher le pilote de ce p�riph�rique et en ex�cute une partie que
l'on d�signe sous le nom de "routine de service de l'interruption" (ou
"routine de gestion de l'interruption"). Cette "routine" essaie de
voir ce qui s'est pass� et se charge de traiter la question comme, par
exemple, de transf�rer des octets du (ou vers le) p�riph�rique. Ce
programme (cette routine) peut facilement analyser ce qui s'est pass�
puisqu'il conna�t les adresses des registres (� condition que les
num�ros d'interruption (IRQ) et que les adresses d'E/S aient �t�
correctement renseign�es). Ces registres contiennent les informations
concernant l'�tat du p�riph�rique. Le logiciel lit le contenu de ces
registres et, en examinant ce contenu, voit ce qui s'est pass� et
entreprend l'action appropri�e.
Donc, chaque pilote de p�riph�rique a besoin de savoir quel est le
num�ro d'interruption (IRQ) qui le concerne. Sur le bus PCI (et pour
les ports s�rie sur un bus ISA depuis la version du noyau 2.2) il est
possible que deux p�riph�riques ou plus se partagent le m�me IRQ
(num�ro d'interruption). Cela est rendu possible en faisant ex�cuter
par le CPU toutes les routines de service d'interruption de tous les
p�riph�riques qui utilisent cette interruption. La premi�re chose que
r�alise une telle routine de service consiste � tester si
l'interruption concerne son p�riph�rique. Si tel n'est pas le cas
(fausse alarme), elle se termine et le traitement continue avec la
routine de service suivante etc.
88..33.. IInntteerrrruuppttiioonnss PPCCII
Les interruptions PCI sont diff�rentes, mais comme elles correspondent
normalement aux IRQ, elles se comportent � peu pr�s de la m�me fa�on.
Le fait que les interruptions PCI puissent �tre partag�es constitue
une diff�rence majeure. Par exemple l'IRQ5 peut �tre partag�e entre
deux p�riph�riques PCI. Cette possibilit� de partage est automatique :
il n'est pas n�cessaire de disposer d'un mat�riel ou d'un logiciel
sp�cial. On a entendu parler de situations o� un tel partage ne
fonctionne pas, mais la cause r�side certainement dans le logiciel du
pilote de p�riph�rique. Tous les pilotes de p�riph�rique PCI sont
suppos�s fonctionner avec partage des interruptions. Il faut cependant
noter que le partage d'une m�me interruption entre un bus ISA et PCI
n'est pas possible. Mais un partage ill�gal d'interruption
fonctionnera � condition que les p�riph�riques en conflit ne soient
pas utilis�s en m�me temps. "En m�me temps" signifie ici qu'un
programme en cours d'ex�cution "ouvre" le p�riph�rique dans le
programme C.
Vous pouvez avoir besoin de conna�tre quelques-uns des d�tails du
syst�me d'interruption PCI de fa�on � pouvoir param�trer la m�moire
CMOS du BIOS ou pour positionner les cavaliers sur de vieilles cartes
PCI. Le bus PCI poss�de quatre lignes d'interruptions de INTA# � INTD#
(A, B, C et D). Pour un syst�me � 7 connecteurs, d'apr�s les
sp�cifications, on aurait la possibilit� de disposer de 7 x 4 = 28
lignes d'interruptions diff�rentes. Mais ces sp�cifications ne
permettent qu'un nombre inf�rieur de lignes d'interruption. Ce n'est
pas trop contraignant puisque l'on peut partager les interruptions.
Beaucoup de bus PCI ne paraissent disposer que de 4 lignes
d'interruption. Appelons ces lignes (fils ou pistes) W, X, Y et Z.
Supposons que l'on d�signe l'interruption B de l'emplacement num�ro 3
comme �tant l'interruption 3B. Alors, on peut utiliser le fil W pour
partager les interruptions 1A, 2B, 3C, 4D, 5A, 6B, 7C. On le r�alise
physiquement en connectant le fil W aux fils 1A, 2B etc... De m�me, le
fil X pourrait �tre connect� aux fils 1B, 2C, 3D, 4A, 5B, 6C, 7D. Au
d�marrage, le BIOS fait correspondre X, W, Y, Z aux interruptions.
Ensuite il �crit dans un registre physique de chaque p�riph�rique
quelle interruption lui a �t� affect�e de sorte que le p�riph�rique
(et tout ce qui interroge le p�riph�rique) sache quelle IRQ il
utilise.
Les fils X, W, Y et Z mentionn�s ci-dessus sont d�sign�s dans les
sp�cifications PCI par les noms INTA#, INTB#, INTC# et INTD#. Cette
d�nomination officielle PCI porte � confusion puisque, maintenant,
INTA# a deux significations selon que l'on parle du connecteur ou du
bus PCI. Par exemple, si 3C correspond � X alors on dira que l'INTC#
du connecteur 3 est reli�e � l'INTA# (X) du bus PCI. C'est une
notation confuse.
Il y a �galement une autre obligation. Un connecteur PCI doit utiliser
les premi�res lettres d'interruption en premier. Donc, s'il n'y a
qu'un connecteur � utiliser une interruption, ce doit �tre L'INTA#.
S'il utilise 2 interruptions ce doivent �tre INTA# et INTB# etc.
Jusqu'� 8 p�riph�riques peuvent �tre connect�s � une carte � un
emplacement donn�, mais ils ne peuvent disposer que de 4 interruptions
PCI. Cela ne pose pas de probl�me puisque les interruptions peuvent
�tre partag�es et donc, chacun des 8 p�riph�riques (s'ils sont
pr�sents) pourra disposer d'une interruption. La lettre d'interruption
PCI d'un p�riph�rique est souvent fixe et c�bl�e dans le p�riph�rique.
Le BIOS affecte les IRQ(demandes d'interruptions) de fa�on � �viter
les conflits avec les IRQ qu'il conna�t sur le bus ISA. Quelquefois,
dans le menu CMOS, on peut affecter des IRQ aux cartes PCI (mais ce
n'est pas aussi facile � faire que ce qui a �t� expliqu� ci-dessus).
Il existe une situation dans laquelle Windows met � z�ro tous les
num�ros d'interruption dans les cartes PCI apr�s que l'affectation des
num�ros d'interruption a �t� effectu�. Alors, quelqu'un qui utilise
Windows et qui lance Linux � partir de Windows verra Linux ne trouver
que des IRQ incorrectement param�tr�es � z�ro.
Vous pourriez penser que l'utilisation par le PCI des IRQ (bus ISA)
peut �tre lent etc. Pas vraiment. Le(s) circuit(s) contr�leur(s)
d'interruptions ISA poss�de(nt) un fil d'interruption directement
reli� au CPU afin que celui-ci puisse r�agir imm�diatement. Alors que
les signaux sur les bus d'adresse et de donn�es ISA doivent cheminer �
travers le bus PCI pour atteindre le CPU, les signaux d'interruption
IRQ lui parviennent pratiquement directement.
88..44.. IIssoollaattiioonn
C'est uniquement valable pour le bus ISA. L'isolation est une m�thode
complexe d'assignation d'un identificateur temporaire (id number =
num�ro d'identification ou Card Select Number (CSN) = num�ro de
s�lection de carte) � chaque p�riph�rique _P_n_P sur le bus. Puisqu'il
existe des moyens plus efficaces (mais plus complexes) pour le faire,
certains pourront affirmer que c'est une m�thode simpliste. On
n'utilise qu'une seule adresse d'�criture pour toutes les �critures
sur tous les p�riph�riques _P_n_P connect�s. Cette adresse est utilis�e
pour envoyer (assigner) un identificateur unique � chaque p�riph�rique
_P_n_P. L'attribution de cet identificateur impose qu'un seul
p�riph�rique soit � l'�coute lorsque cet identificateur est envoy�
(�crit) � cette adresse commune. Tous les p�riph�riques _P_n_P ont un
num�ro de s�rie unique qu'ils utilisent dans le processus d'isolation.
La r�alisation de l'isolation ressemble � un jeu. Elle est r�alis�e en
utilisant l'�quivalent d'un bus � un seul fil reliant tous les
p�riph�riques _P_n_P et du programme d'isolation.
Lors de la premi�re manche de ce "jeu", tous les p�riph�riques _P_n_P
sont � l'�coute sur ce fil et envoient simultan�ment une s�quence de
bits sur le fil. Les valeurs permises sont soit des 1 (tension
positive) soit des "0 ouverts" sans tension (circuit ouvert ou
troisi�me �tat). Chaque p�riph�rique _P_n_P commence � envoyer
s�quentiellement son num�ro de s�rie, bit par bit, en commen�ant par
le bit de poids fort, sur le fil. Si l'un des p�riph�riques envoie un
1 sur le fil, un 1 sera re�u par tous les autres. Si tous les
p�riph�riques envoient un "0 ouvert", on n'entendra rien sur le fil.
L'objectif est d'�liminer (� la fin de cette premi�re manche) tout le
monde sauf le p�riph�rique ayant le num�ro de s�rie le plus �lev�. Par
"�liminer", on entend cesser d'�couter plus avant l'adresse d'�criture
que tous les p�riph�riques encore dans la course continuent d'�couter.
On appelle �galement cela "se retirer". (Il faut noter que tous les
num�ros de s�rie sont de m�me longueur).
En premier lieu, ne prenons en consid�ration que le bit de poids le
plus �lev� du num�ro de s�rie mis sur le fil par tous les
p�riph�riques n'ayant pas encore d'identificateur. Si l'un des
p�riph�riques _P_n_P envoie un 0 (0 ouvert) mais re�oit un 1, cela
signifie qu'un autre p�riph�rique _P_n_P poss�de un num�ro de s�rie
sup�rieur au sien. Donc, il se retire provisoirement du jeu et
n'�coute plus ce qui se passe sur la ligne jusqu'� la fin de cette
manche (quand un identificateur est attribu� au gagnant : celui qui a
le num�ro de s�rie le plus �lev�). Alors, les p�riph�riques encore de
la partie poss�dent tous le bit de poids fort (un 1), donc, nous
pouvons supprimer ce bit et prendre en compte uniquement le "num�ro de
s�rie tronqu�" r�sultant pour continuer � participer � cette manche.
Retournez au d�but de ce paragraphe et r�p�tez le processus jusqu'� ce
que le num�ro de s�rie complet ait �t� trait� pour chacun des
p�riph�riques (voir ci-dessous comment est trait� le cas o� il n'y a
que des 0).
Il est donc clair que le num�ro de s�rie le plus �lev� ne sera pas
�limin� de la partie. Mais qu'en est-il si les chiffres de t�te (du
num�ro de s�rie �ventuellement tronqu�) sont tous des 0 ?. Dans ce cas
un "0 ouvert" est envoy� sur la ligne et tous les participants restent
en lice. S'ils ont tous des z�ros en t�te, alors les 0 sont �limin�s
exactement comme les 1 au paragraphe ci-dessus. La partie continue et
les chiffres suivants (du num�ro de s�rie) sont envoy�s.
� la fin de la manche (lorsque le bit de poids faible du num�ro de
s�rie du concurrent restant a �t� �mis), seul le p�riph�rique _P_n_P
ayant le num�ro de s�rie le plus �lev� est pr�sent. On lui donne alors
un identificateur et il quitte la partie d�finitivement. Ensuite, tous
les �limin�s de la derni�re manche (ceux qui n'ont pas encore obtenu
d'identificateur) reviennent dans le jeu et une nouvelle manche
commence avec un concurrent de moins. Finalement, tous les
p�riph�riques _P_n_P se verront attribuer un identificateur. Il est
facile de prouver que cet algorithme fonctionne.
Une fois que tous les identificateurs ont �t� attribu�s,ils sont
utilis�s pour s'adresser � chacun des p�riph�riques _P_n_P pour les
configurer et lire leur configuration. On notera que ces
identificateurs ne sont utilis�s que pour la configuration _P_n_P et ne
sont pas utilis�s pour les communications normales avec le
p�riph�rique _P_n_P. Au d�marrage de l'ordinateur, tous les
identificateurs sont perdus et, donc, un BIOS PnP refait normalement
ce processus d'isolation � chaque fois que vous remettez votre PC en
service.
FIN DU Plug-and-Play-HOWTO