Page suivantePage précédenteTable des matières

8. Puis-je utiliser plus de deux ports série ?

Il n'est pas nécessaire que vous lisiez cette section, à moins que vous utilisiez au moins trois ports série... (mais pas sur une carte multiports).

N'importe quel port série libre est utilisable. La seule limitation réside dans le nombre d'interruptions (IRQ) et d'adresses de port d'entrée/sortie à utiliser. Cette limitation n'est pas spécifique à Linux, mais est due au bus du PC. Chaque périphérique série (port série, modem interne, carte série) doit posséder ses propres interruption et adresse.

Les cartes série multiports sont spécialement conçues pour partager la même interruption sur tous les ports qu'elles possèdent. Linux communique avec elles en sélectionnant une adresse d'entrée/sortie différente pour chaque port de ces cartes.

8.1 Choisir les interruptions des périphériques série

Par défaut sur un PC, l'IRQ 4 est partagée entre ttyS0 et ttyS2, et l'IRQ 3 entre ttyS1 et ttyS3. Les interruptions en cours d'utilisation sont regroupées dans /proc/interrupts. Pour se servir de plus de deux ports série, leur interruption doit être réassignée, par exemple en choisissant celle d'un port parallèle. En effet, les IRQ 5 et 7 sont sur un PC normalement attribuées aux ports parallèles, mais peu de personnes en possèdent deux. Vous pouvez donc réassigner une de ces interruptions à un port série, et continuer à utiliser joyeusement votre port parallèle ! Cette manipulation requiert le programme setserial. De plus, il vous faudra ajuster certains cavaliers sur vos cartes (à vérifier sur les manuels des cartes) pour fixer les IRQ.

Vous devez vous arranger pour avoir une IRQ unique pour chacun des ports série. Voici comment je configure les miens dans /etc/rc.d/rc.local (cette initialisation doit avoir lieu lors du démarrage) :

 /sbin/setserial /dev/ttyS0 irq 3        # ma souris
 /sbin/setserial /dev/ttyS1 irq 4        # mon terminal Wyse
 /sbin/setserial /dev/ttyS2 irq 5        # mon modem Zoom
 /sbin/setserial /dev/ttyS3 irq 9        # mon modem USR

Assignations standards des IRQ :

 IRQ  0    Base de temps 0
 IRQ  1    Clavier
 IRQ  2    Cascade pour le deuxieme controleur d'IRQ
 IRQ  3    Port serie 2
 IRQ  4    Port serie 1
 IRQ  5    Port parallele 2
 IRQ  6    Disquette
 IRQ  7    Port parallele 1
 IRQ  8    Horloge temps-reel (RTC)
 IRQ  9    Redirige vers l'IRQ2
 IRQ 10    Non assignee
 IRQ 11    Non assignee
 IRQ 12    Non assignee
 IRQ 13    Coprocesseur mathematique
 IRQ 14    Controleur de disques durs 1
 IRQ 15    Controleur de disques durs 2

Il n'existe pas vraiment de Bonne Technique pour choisir les interruptions. Il faut juste s'assurer qu'elles ne sont pas déjà utilisées par la carte mère, ou une autre carte. 2, 3, 4, 5, ou 7 est généralement un bon choix. ``Non assignée'' signifie que rien de standard n'utilise cette IRQ. Notez également que l'IRQ2 et l'IRQ9 sont identiques : vous pouvez donc spécifier aussi bien 2 que 9, le gestionnaire de périphériques est très compréhensif. Si vous possédez une carte série avec un connecteur de bus 16 bits, vous pouvez également utiliser l'IRQ 10, 11, 12 ou 15.

N'utilisez pas les IRQ 0, 1, 6, 8, 13 et 14 ! Elles sont réservées par la carte mère. Une fois le paramétrage effectué, vérifiez l'absence de conflit avec /proc/interrupts.

8.2 Choisir les adresses des périphériques série

Vous devez ensuite fixer les adresses des ports. Vérifiez le manuel pour la position des cavaliers. Comme pour les interruptions, chaque périphérique série doit posséder sa propre adresse. Par défaut, les ports sont paramétrés de la manière suivante :

 ttyS0 adresse 0x3f8
 ttyS1 adresse 0x2f8
 ttyS2 adresse 0x3e8
 ttyS3 adresse 0x2e8

Choisissez les adresses à affecter à chaque port série, et positionnez les cavaliers sur la carte en conséquence. Ainsi, j'ai mon modem sur ttyS3, ma souris sur ttyS0, et mon terminal sur ttyS2.

Au prochain démarrage, Linux devrait voir vos ports séries aux adresses que vous avez sélectionnées. Par contre, les IRQ vues par Linux peuvent ne pas correspondre avec celles que vous avez configurées. Ne vous inquiétez pas : Linux ne sait pas détecter les IRQ au démarrage, car c'est assez aléatoire et le résultat peut être faux. Utilisez setserial pour spécifier à Linux quelles interruptions sont associées aux ports, puis vérifiez après redémarrage de Linux les adresses des ports d'entrée/sortie avec /proc/ioports.


Page suivantePage précédenteTable des matières