(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

231. Posso Usar Mais de Dois Dispositivos Seriais?

Não será necessário ler esta seção, a menos que se deseje usar três ou mais dispositivos seriais (assumindo que não se esteja utilizando uma placa multiserial).

O número de portas seriais que se pode utilizar é limitada pelo número de interrupções (IRQs) e endereços da porta de E/S utilizados. Esta não é uma limitação do Linux, mas sim do barramento do PC. Cada dispositivo serial deve ter definido seu endereço e interrupção próprias. Caso dois dispositivos compartilhem a mesma interrupção o seu funcionamento somente se dará de forma adequada caso ambos não estejam funcionando simultaneamente (em muitos casos, os dois programas não podem sequer serem executados ao mesmo tempo). Um dispositivo serial pode ser uma porta, um modem interno ou uma placa multiserial.

Placas multiseriais são especialmente desenhadas para terem múltiplas portas que compartilham a mesma IRQ para todas as portas seriais da placa. Linux obtém dados a partir delas usando um endereço de E/S diferente para cada porta da placa.

231.1 Definindo as Interrupções do Dispositivo Serial

Um PC normalmente vem configurado com ttyS0 e ttyS2 na IRQ 4 e ttyS1 e ttyS3 na IRQ 3. Pode-se verificar quais as IRQs estão em uso através do comando: setserial /dev/ttyS2, etc.. A observação do arquivo /proc/interrupts mostrará algumas delas. Para utilizar mais de dois dispositivos seriais será necessário redefinir um interrupção. Uma boa opção é redefinir um interrupção da porta paralela. Um PC normalmente vem com IRQ 5 e IRQ 7 configuradas como interrupções das portas paralelas, mas pouca gente utiliza as duas. Pode-se então utilizar uma das interrupções em dispositivos seriais e ainda assim utilizar uma das portas paralelas com uma impressora, por exemplo. O programa setserial será utilizado nesta tarefa. Adicionalmente, pode ser necessário lidar com chaves de configuração na placa. Para tanto verifique a sua documentação. Configure as chaves para a IRQ desejada para cada porta.

Deve-se configurar as portas, de forma haja uma e somente uma interrupção relacionada com um e somente um dispositivo serial. A seguir apresentamos um exemplo do arquivo /etc/rc.d/rc.local, o qual deve ser feito em um arquivo que seja executado na inicialização:

/sbin/setserial /dev/ttyS0 irq 3        # mouse serial
/sbin/setserial /dev/ttyS1 irq 4        # terminal burro Wyse 
/sbin/setserial /dev/ttyS2 irq 5        # modem Zoom 
/sbin/setserial /dev/ttyS3 irq 9        # modem USR

IRQs padrões:

              IRQ  0    Timer canal 0
              IRQ  1    Teclado
              IRQ  2    Controladora 2
              IRQ  3    Porta Serial 2
              IRQ  4    Porta Serial 1
              IRQ  5    Porta Paralela 2
              IRQ  6    Unidade de disquete
              IRQ  7    Porta paralela 1
              IRQ  8    Relógio 
              IRQ  9    Redirecionada para IRQ2 
              IRQ 10    não definida
              IRQ 11    não definida
              IRQ 12    não definida
              IRQ 13    Co-processador Matemático
              IRQ 14    Controladora de Disco Rígido 1
              IRQ 15    Controladora de Disco Rígido 2

Não há uma receita ideal de como escolher as interrupções a serem utilizadas. Somente esteja seguro de que ela não esteja sendo usada pela placa mãe ou qualquer outra placa. IRQs 2, 3, 4, 5 ou 7 constituem boas possibilidades; "não definida" significa que atualmente nenhum padrão foi definido para estas IRQs. Note também que IRQ 2 é igual a IRQ 9. Pode-se então utilizar IRQ 2 ou 9 que o programa de controle da serial atuará adequadamente. Caso se tenha uma placa serial com um conector 16 bits, pode-se usar também IRQs 10, 11, 12 ou 15.

Esteja seguro de não utilizar IRQs 0, 1, 6, 8, 13 ou 14! Elas são utilizadas pela placa mãe e ficará muito desapontada ao ser usurpada de suas interrupções. Ao finalizar confira tudo novamente no arquivo /proc/interrupts e esteja seguro de que não há conflitos.

231.2 Configurando Endereços de Dispositivos Seriais

A seguir, deve-se configurar os endereços das portas. Verifique o manual da placa no que se refere às chaves de configuração. Assim como interruptores, somente pode haver um dispositivo serial para cada endereço. As portas normalmente são configuradas da seguinte forma:

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

Escolha qual endereço se deseja para cada dispositivo serial e configure as chaves adequadamente. Meu modem está em ttyS3, o mouse em ttyS0 e o terminal em ttyS2.

Durante a inicialização do sistema, Linux verifica as portas seriais nos endereços definidos. A IRQ checada pelo Linux pode não corresponder a IRQ configurada através das chaves. Não se preocupe com isso. Linux não executa qualquer processo de detecção de IRQs no início do sistema, pois este processo é falho e pode se facilmente "enganado". Utilize o programa setserial para informar ao Linux qual porta IRQ é utilizada. Pode-se checar o arquivo /proc/ioports para verificar quais os endereços de portas de E/S estão em uso após a inicialização do Linux.


Página seguinte Página anterior Índice