Next Previous Contents

3. Introduction aux IRQs, aux DMAs et aux adresses de base

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)


Next Previous Contents