3 votes

3ème et 4ème port série non configurés au démarrage

Ubuntu 12.04.2 LTS 3.2.0-39-generic-pae

Bonjour, le PC sur lequel je travaille a 4 ports série.

ttyS0 et ttyS1 fonctionnent correctement dès le démarrage,

ttyS2 et ttyS3 ne fonctionnent pas.

voici les messages dmesg pertinents:

Serial: pilote 8250/16550, 32 ports, partage IRQ activé
[    1.050346] serial8250: ttyS0 à l'I/O 0x3f8 (irq = 4) est un 16550A
[    1.100595] serial8250: ttyS1 à l'I/O 0x2f8 (irq = 3) est un 16550A
[    1.144567] serial8250: ttyS2 à l'I/O 0x3e8 (irq = 4) est un 16550A
[    1.188577] serial8250: ttyS3 à l'I/O 0x2e8 (irq = 3) est un 16550A
[    1.383941] isapnp: Aucun périphérique Plug & Play trouvé
[    1.449179] 00:06: ttyS0 à l'I/O 0x3f8 (irq = 4) est un 16550A
[    1.477192] 00:07: ttyS1 à l'I/O 0x2f8 (irq = 3) est un 16550A
[    1.498296] 00:08: ttyS2 à l'I/O 0x3e8 (irq = 7) est un 16550A
[    1.524994] 00:09: ttyS3 à l'I/O 0x2e8 (irq = 7) est un 16550A

pour les faire fonctionner, je dois les reconfigurer en invoquant:

setserial /dev/ttyS3 baud_base 115200 auto_irq skip_test autoconfig

que j'ai trouvé ici

Avant de reconfigurer le port série, setserial signale ce qui suit pour les ports série:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 7
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 7

Après reconfiguration, voici ce qui est signalé:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 0
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 0

Les ports série sont fournis par une puce fintek f81866 qui prend en charge le partage d'IRQ, donc avoir les IRQ initiaux définis à 7 ne devrait pas poser de problème. alors que le fait d'avoir les IRQ définis à 0 est un problème d'après ce que je comprends, car selon la page man de setserial man page l'IRQ 0 est réservé pour Timer channel 0.

La puce fintek f81866 prend en charge jusqu'à 6 ports série.

Alors j'ai essayé d'ajouter 8250.nr_uarts=8 à la ligne de démarrage mais cela n'a rien fait (autant que je sache, je ne sais pas comment confirmer les paramètres de démarrage qui ont été passés).

Qu'est-ce qui ne va pas? Pourquoi ttyS2 et ttyS3 ne sont-ils pas configurés correctement au démarrage?

Comment puis-je résoudre ce problème? Que dois-je faire pour qu'ils soient configurés correctement au démarrage (sans créer mon propre script d'initialisation)?

Merci d'avance!

3voto

Sanjay Points 1

Si vous souhaitez démarrer avec cette configuration appliquée sur le port série, vous pouvez modifier le

/var/lib/setserial/autoserial.conf

pour modifier la configuration du ttyS3, en incluant la phrase que vous avez utilisée pour le reconfigurer correctement.

Le fichier autoserial.conf est utilisé lors du processus de démarrage par le script /etc/rc0.d/K19setserial.

Voici mon propre fichier

/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test
/dev/ttyS2 uart 16550A port 0x03e8 irq 4 baud_base 115200 spd_normal skip_test
#/dev/ttyS3 uart 16550A port 0x02e8 irq 3 baud_base 115200 spd_normal
/dev/ttyS3 baud_base 115200 auto_irq skip_test autoconfig spd_normal

0voto

Ben Parsons Points 265

Voici un autre exemple de /var/lib/setserial/autoserial.conf pour un PC industriel Advantech UNO-3072A

/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test
/dev/ttyS2 uart 16950 port 0xcc00 irq 18 baud_base 921600 low_latency
/dev/ttyS3 uart 16950 port 0xc880 irq 18 baud_base 921600 low_latency

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X