Page suivantePage pr�c�denteTable des mati�res

2. Que devrait faire le PnP : Allouer les "Ressources du bus"

2.1 En quoi consiste le Plug-and-Play (PnP) ?

En simplifiant beaucoup, le Plug-and-Play 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 Plug-and-Play 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 PnP est utilis� au maximum, une bonne partie de la configuration des p�riph�riques est r�alis�e par autre chose que le PnP. 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 PnP. Donc, quand on parle de la configuration effectu�e par lePnP, 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.

2.2 Comment un ordinateur trouve-t-il les p�riph�riques (et inversement)

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 plug-and-play 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.

2.3 Adresses d'E/S etc.

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

2.4 Les IRQ, vue d'ensemble

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.

2.5 Les canaux DMA

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.

2.6 Espace m�moire

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

2.7 Les "ressources" pour le p�riph�rique et son pilote

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

2.8 Le probl�me

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.

2.9 Le PnP d�tecte les p�riph�riques connect�s aux ports s�rie

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 Plug-and-Play 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 PnP n'a pas vraiment de raison d'�tre pour ces p�riph�riques. Cela, m�me s'il y a des sp�cifications PnP pour de tels p�riph�riques s�rie.

Un syst�me d'exploitation PnP 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 PnP.


Page suivantePage pr�c�denteTable des mati�res

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