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.
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.
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.