Anterior Siguiente Indice

8. ¿Puedo usar más de dos dispositivos serie?

No necesita leer esta sección, a menos que quiera usar tres o más dispositivos serie... (suponiendo que tiene una placa multipuerto).

Suponiendo que tiene otro puerto serie sin usar, sí, puede. El número de puertos serie que puede usar está limitado por el número de interrupciones (IRQs) y direcciones de puertos de E/S que tengamos disponibles. Esto no es una limitación de Linux, es una limitación del bus del PC. Cada dispositivo serie debe tener asignado una interrupción propia y una dirección. Un dispositivo serie puede ser un puerto serie, un módem interno, o una placa serie multipuerto.

Las placas serie multipuerto están especialmente diseñadas para tener múltiples puertos serie que comparten la misma IRQ. Linux obtiene los datos de ellos usando una dirección de E/S para cada puerto de la placa.

8.1 Eligiendo las interrupciones de los dispositivos serie

El PC normalmente viene con ttyS0 y ttyS2 en la IRQ 4, y ttyS1 y ttyS4 en la IRQ 3. Puede saber que IRQs están usándose viendo /proc/interrupts. Para usar más de dos dispositivos serie, debe reasignar las interrupciones. Una buena elección es reasignar una interrupción del puerto paralelo. El PC normalmente viene con IRQ 5 e IRQ 7 configuradas como interrupciones para los puertos paralelos, pero poca gente usa dos puertos paralelos. Puede reasignar una de las interrupciones a un dispositivo serie, y aún usar felizmente un puerto paralelo. Necesitará el programa setserial para hacer esto. Además, tendrá que jugar con los puentes de su placa, vea los documentos de su placa. Ponga los puentes para la IRQ que quiera para cada puerto.

Necesitará configurar algunas cosas, ya que hay una, y solamente una interrupción para cada dispositivo serie. Así es como tengo mi configuración en /etc/rc.d/rc.local - debe hacerlo donde quiera que tenga su fichero de inicialización:

/sbin/setserial /dev/cua0 irq 3      # mi raton serie
/sbin/setserial /dev/cua1 irq 4      # mi terminal Wyse no-inteligente
/sbin/setserial /dev/cua2 irq 5      # mi modem Zoom
/sbin/setserial /dev/cua3 irq 9      # mi modem USR

Asignación estándar de IRQ:

              IRQ  0    Reloj en el canal 0
              IRQ  1    Teclado
              IRQ  2    Cascada para el controlador 2 
              IRQ  3    Puerto serie 2
              IRQ  4    Puerto serie 1
              IRQ  5    Puerto paralelo 2
              IRQ  6    Disquetera
              IRQ  7    Puerto paralelo 1
              IRQ  8    Reloj de tiempo real (24 horas)
              IRQ  9    Redireccionada a IRQ 2
              IRQ 10    no asignada
              IRQ 11    no asignada
              IRQ 12    no asignada
              IRQ 13    Coprocesador matematico
              IRQ 14    Controlador de disco duro 1
              IRQ 15    Controlador de disco duro 2

No existen realmente un Modo Correcto de hacer las cosas cuando se eligen las interrupciones. Sólo asegúrese de que no las está usando la placa madre, o cualquier otra placa. 2, 3, 4, 5, ó 7 son buenas elecciones. ``no asignada'' significa que actualmente nada estándar usa estas IRQs. Nótese también que la IRQ 2 es la misma que la IRQ 9. Puede llamarlo 2 ó 9, el controlador serie lo entenderá. Si tiene una placa serie con un conector de 16 bits, también puede usar las IRQ 10, 11, 12 ó 15.

¡Sólo asegúrese de no usar las IRQs 0, 1, 6, 8, 13 ó 14!. Estas son usadas por la placa madre. La hará muy desgraciada si coge sus IRQs. Cuando lo haga, compruebe otra vez /proc/interrupts y asegúrese de que no haya conflictos.

8.2 Configurando las direcciones de los dispositivos serie

El siguiente paso es configurar la dirección del puerto. Vea el manual de su placa para configurar los puentes. Como las interrupciones, puede haber sólo un dispositivo serie en cada dirección. Los puertos suelen venir configurados de la siguiente manera:

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

Elija la dirección que desee para cada dispositivo serie que tenga y configure los puentes en concordancia. Tengo mi módem en ttyS3, el ratón en ttyS0, y el terminal en ttyS2.

Cuando arranque de nuevo, Linux debería ver los puertos serie en las direcciones en las que lo ha definido. La IRQ que Linux ve puede que no corresponda a la IRQ que ha configurado con los puentes. No se preocupe por esto. Linux no hace ninguna detección de IRQ mientras arranca, porque la detección de IRQ no es fiable y puede ser falsa. Use setserial para decirle a Linux que IRQ está usando el puerto. Puede ver /proc/ioports para saber que direcciones del puerto de E/S está usando Linux después de arrancar.


Anterior Siguiente Indice