Par Eugene Blanchard
Cet article parlera des fonctions et du paramétrage des IRQs, DMAs et des adresses de base (Ports d'E/S) utilisés par les ordinateurs compatibles IBM. J'ai trouvé que la documentation, fournie avec les compatibles PCs et les périphériques, donnait la liste des ressources que le périphérique peut utiliser mais ne donnait aucun conseil comme c'est le cas pour les ressources standards. Heureusement cet article va jeter quelques lumières sur cet aspect difficile et fournir quelques conseils pour la sélection des IRQs, DMAs et l'adresse de base.
IRQ - Requêtes d'interruptions IRQ veut dire Interrupt ReQuest (ReQuête d'Interruption). C'est une "tape sur l'épaule" du processeur (CPU) par une carte périphérique insérée dans un slot ISA pour indiquer au CPU que le périphérique a quelque chose à dire (aussi utilisé par les slots EISA et MCA). Les périphériques classiques sont les modems, les NICs (Network Interface Cards = cartes d'interface réseau), les cartes sons, les adaptateurs SCSI, les cartes contrôleurs de disque dur, les contrôleurs de lecteur de disquette, les ports COMs et les ports imprimantes.
Une IRQ est une interruption matérielle, cela signifie qu'il y a une ligne physique reliant chaque slots ISA à la carte mère. Il y a deux types de slots ISA : 8 bits et 16 bits. Le 16 bits est constitué d'un slot 8 bits plus un slot d'extension 16 bits.
Il y a 8 lignes IRQ (IRQ0-7) reliant le slot 8 bits ISA. Il y en a 8 de plus (IRQ8-15)qui relient le slot d'extension 16 bits ISA. Pour un total de 16 IRQs dans un bus PC ISA typique. IRQ0 a la plus haute priorité et l'IRQ7 la plus basse. Les IRQ8-15 ont une priorité "spéciale" comme cela va être expliqué.
Lorsqu'IBM a introduit l'ordinateur AT, ils ont ajouté les IRQ8-15. Maintenant, afin d'avoir la compatibilité ascendante des PCs AT (286) pour les PCs XT 8 bits (8088) et d'"augmenter" la priorité des nouvelles lignes IRQs, ils ont mis en série deux contrôleurs d'interruption. Le résultat est que les IRQ8-15 ont la même priorité que l'IRQ2. Priorité veut dire que si deux IRQs sont actives au même instant, celle avec la plus haute est servie en premier.
IMPORTANT: une IRQ ne peut être assignée qu'à un seul périphérique actif à la fois. Si deux périphériques partagent la même IRQ, cela est appelé un CONFLIT. Cela signifie que lorsque la ligne IRQ devient active, le CPU ne sais pas quel périphérique a besoin de "parler". Par exemple, si un modem et un NIC utilisent l'IRQ5. Si le modem a besoin de passer quelques informations au CPU, il positionnera l'IRQ5 comme active. Le CPU ne saura pas à qui parler, du modem ou du NIC. L'ordinateur peut se bloquer, ou alors rien ne se passe.
*** Les conflits IRQ sont la source NUMÉRO 1 des problèmes sur PC! ***
Voici une table utilisée comme guide pratique (base de travail) pour la sélection des IRQs sur les PCs. Les IRQs sont listées par ordre de priorité. (A noter que j'ai menti plus haut lorsque j'ai dit que toutes les lignes IRQs allaient aux slots des cartes).
IRQ Fonction Ligne physique Bus ISA
IRQ0 Horloge Système Non -
IRQ1 Contrôleur Clavier Non -
IRQ2 Renvoi vers IRQ8-15 Non -
IRQ8 Horloge Temps Réel Non -
IRQ9 *-Disponible(IRQ2) Oui 8/16 bit
IRQ10 NIC Oui 16 bit
IRQ11 Adaptateur SCSI Oui 16 bit
IRQ12 Souris carte mère/disponible Oui 16 bit
IRQ13 Coprocesseur mathématique Non -
IRQ14 Contrôleur IDE primaire Oui 16 bit
IRQ15 Contrôleur IDE secondaire Oui 16 bit
IRQ3 Com2/Com4 Oui 8 bit
IRQ4 Com1/Com3 Oui 8 bit
IRQ5 Carte son/LPT2 Oui 8 bit
IRQ6 Contrôleur lecteur disquette Oui 8 bit
IRQ7 Port parallèle LPT1 Oui 8 bit
*-IRQ9 apparaît comme étant l'IRQ2. N'est normalement pas utilisée car cela peut faire apparaître des problèmes intéressants. Est-ce réellement l'IRQ9 ou est-ce l'IRQ2 chaînée vers l'IRQ9 ? Laquelle est assignée à l'autre ? Que se passe-t-il si vous utilisez un modem ISA 8 bits et un slot ISA 16 bits ? Vous voyez ce que je veux dire ...
La table ci-dessus est utilisée comme guide pratique ou comme base de travail pour sélectionner les IRQs de vos périphériques. Par exemple si le PC n'utilise pas d'adaptateur SCSI alors l'IRQ11 est disponible pour l'utiliser avec une autre carte NIC ou un autre périphérique.
La plupart des logiciels d'auto-détection ou des systèmes d'exploitation comme Linux s'attendent à voir les IRQs assignées comme ci-dessus.
Les conflits de port COM A noter que COM1 (la prise DB9 à l'arrière de votre PC) et COM3 partagent l'IRQ4. C'est autorisé tant qu'un seul périphérique est actif à un instant. Cela signifie que si vous utilisez une souris sur le port COM1 alors vous ne pouvez pas utiliser COM3 pour un modem interne. Vous allez vers un conflit. Quelques logiciels de communications vous autoriserons à le faire, mais la plupart se bloqueront ou auront un comportement loufoque. Un symptôme courant est que si vous bougez votre souris, vous verrez des caractères parasites sur l'écran de votre programme de terminal.
COM2 (la prise DB25 sur l'arrière de votre PC) et COM4 ont un problème similaire à part que le la plupart des gens n'utilisent pas COM2. Habituellement il est sûr d'utiliser COM4 pour un modem interne. Si COM2 est utilisé, il est typiquement pris par un modem externe ou une table traçante. D'ordinaire, les deux ne sont pas actifs au même moment.
Désignation Standard des ports COM
Port IRQ Fonction
COM1 4 Souris
COM2 3 Table traçante / modem externe / non utilisé
COM3 4 Non utilisé (conflits avec la souris)
COM4 3 Modem Interne / non utilisé
DMA - Accès Direct à la Mémoire
DMA veut dire Direct Memory Access = Accès Direct à la Mémoire. C'est une méthode qui permet à un périphérique d'ouvrir des canaux pour lire/écrire directement dans la mémoire sans passer par le CPU. Cela décharge un peu le travail du CPU et lui permet de faire des tâches plus importantes.
Il y a 8 canaux DMA disponibles sur un PC: DMA0-7. Ils sont divisés en canaux 8 bits et en canaux 16 bits basés sur les slots ISA 8 bits et les slots ISA 16 bits.
Voici une table qui est utilisée comme guide pratique pour sélectionner les canaux DMA:
DMA Fonction Ligne physique Bus ISA Largeur cannal
DMA0 Disponible Oui 16 bits 8 bits
DMA1 Son Oui 8 bits 8 bits
DMA2 Contrôleur disquette Oui 8 bits 8 bits
DMA3 Port Parallèle ECP Oui 8 bits 8 bits
DMA4 * - Non utilisé Non - 16 bits
DMA5 Son Oui 16 bits 16 bits
DMA6 SCSI Oui 16 bits 16 bits
DMA7 Disponible Oui 16 bits 16 bits
NOTES:
DMA0 est sur le bus 16 bits ISA mais avec une largeur de 8 bits.
DMA4 est renvoyée sur le premier contrôleur DMA 8 bits et n'est pas disponible.
*** Les conflits DMA sont la source NUMERO 2 des problèmes sur PC! ***
Comme les IRQs, vous n'êtes autorisés à assigner qu'un seul canal DMA à un périphérique actif à un instant. Sinon vous aurez des conflits qui apparaîtront et cela ne fonctionnera pas correctement. Notez bien le mot actif - cela signifie allumé et un programme accédant au périphérique. Vous pouvez avoir un canal DMA assigné à deux périphériques SEULEMENT si un périphérique est actif à la fois - risqué mais autorisé.
Adresses de base
Les adresses de base aussi appelées ports d'E/S, adresses d'E/S, adresses de ports d'E/S et ports de base. Ce sont des emplacements mémoire qui fournissent une interface entre le système d'exploitation et le matériel d'E/S (périphérique). Le périphérique communique avec le système d'exploitation à travers l'adresse de base. Chaque périphérique doit avoir une adresse de base UNIQUE.
Les assignements standards des Adresse de Base (h - hexadécimal)
060h + 064h Contrôleur clavier
170h + 376h Contrôleur IDE disque dur secondaire
1F0h + 3F6h Contrôleur IDE disque dur primaire
220h Carte son
300h carte NIC (carte réseau)
330h Adaptateur SCSI
3F2h Contrôleur lecteur de disquette
3F8h COM1
2F8h COM2
3E8h COM3
2E8h COM4
378h LPT1
278h LPT2
*** Les conflits d'Adresse de Base sont la source NUMERO 3 des problèmes sur PC! ***
Malheureusement, la table ci-dessus est seulement une petite partie des Adresses de Base utilisées. Les adresses de base utilisées dépendent de ce qui est installé sur le PC.
Ressources d'Information sur Linux
Pour voir votre configuration Linux, regardez dans le répertoire /proc et cherchez les fichiers textes suivants:
cat /proc/interrupts liste les interruptions en cours d'utilisation
cat /proc/ioports liste les ports d'E/S (adresses de base) utilisés
cat /proc/dma liste les DMAs en cours d'utilisation
Copyright 1999, Eugene Blanchard
Publié dans le numéro 38 de la Linux Gazette, mars 1999
Adaptation française : Frédéric Gacquer (Neuronnexion)