Page suivante Page pr�c�denteTable des mati�res

8. Appendice

8.1 Adresses

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.

Adresses de configuration sur le bus ISA (Port de lecture etc.)

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.

Champs d'adresses

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

Espace d'adresses

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.

V�rification des champs d'adresses (Test des conflits d'adresses E/S ISA)

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

Communication directe via la m�moire.

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.

8.2 Les interruptions - Description d�taill�e.

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.

8.3 Interruptions PCI

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.

8.4 Isolation

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 PnP 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 PnP connect�s. Cette adresse est utilis�e pour envoyer (assigner) un identificateur unique � chaque p�riph�rique PnP. 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 PnP 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 PnP et du programme d'isolation.

Lors de la premi�re manche de ce "jeu", tous les p�riph�riques PnP 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 PnP 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 PnP envoie un 0 (0 ouvert) mais re�oit un 1, cela signifie qu'un autre p�riph�rique PnP 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 PnP 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 PnP 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 PnP pour les configurer et lire leur configuration. On notera que ces identificateurs ne sont utilis�s que pour la configuration PnP et ne sont pas utilis�s pour les communications normales avec le p�riph�rique PnP. 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


Page suivante Page pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43