17.2. Introdução

17.2.1. Terminologia

bps

Bits por segundo -- é a taxa com que os dados são transmitidos.

DTE

Equipamento Terminal de Dados -- por exemplo, o seu computador

DCE

Equipamento de Comunicação de Dados -- seu modem

RS-232

Padrão EIA para hardwares de comunicação serial

Quando fala sobre taxa de comunicação de dados, esta sessão não usa o termo ``baud''. Baud se refere ao número de estados de transição elétricas que ocorrem em um determinado periodo de tempo, enquanto ``bps'' (bits por segundo) é o termo correto a ser utilizado (ao menos ele não parece incomodar completamente os teimosos).

17.2.2. Cabos e Portas

Para conectar um modem ou um terminal ao seu sistema FreeBSD, você irá precisar de uma porta serial em seu computador e do cabo apropriado para conectar o seu dispositivo serial. Se você já esta familiarizado com o seu dispositivo e com o cabo que ele necessita, você pode pular tranquilamente esta sessão. .

17.2.2.1. Cabos

Há diversos tipos diferentes de cabos seriais. Os dois tipos mais comuns para os nossos propósitos são os cabos null-modem e os cabos padrão RS-232. A documentação do seu dispositivo irá descrever o tipo de cabo necessário.

17.2.2.1.1. Cabos Null-Modem

Um cabo null-modem passa alguns sinais, como o ``sinal terra'', de forma direta (sai e chega no mesmo pino em ambas as pontas), mas chaveia outros sinais. Por exemplo, o pino de ``envio de dados'' em uma das pontas do cabo irá para o pino ``recebimento de dados'' na outra ponta.

Se você preferir preparar seus próprios cabos, você pode construir um cabo null-modem para utilizar com terminais. Esta tabela mostra os nomes dos sinais RS-232C e a numeração dos pinos em um conector DB-25.

Sinal Pino #   Pino # Sinal
SG 7 conecta-se ao 7 SG
TxD 2 conecta-se ao 3 RxD
RxD 3 conecta-se ao 2 TxD
RTS 4 conecta-se ao 5 CTS
CTS 5 conecta-se ao 4 RTS
DTR 20 conecta-se ao 6 DSR
DCD 8   6 DSR
DSR 6 conecta-se ao 20 DTR

Nota: Conecte o ``Data Set Ready'' (DSR) e o ``Data Carrier Detect'' (DCD) internamente no conector, e então conecte-os ao ``Data Terminal Ready'' (DTR) no conector remoto.

17.2.2.1.2. Cabos Padrão RS-232C

Um cabo serial padrão trafega todos os sinais de forma direta (sai e chega no mesmo pino em ambas as pontas). Isto é, o pino de ``envio de dados'' em uma ponta do cabo, irá para o pino ``envio de dados'' na outra ponta. Este é o tipo de cabo utilizado para conectar um modem ao seu sistema FreeBSD, e também é adequado para alguns terminais.

17.2.2.2. Portas

Portas seriais são os dispositivos através dos quais os dados são transferidos entre um host FreeBSD e um terminal. Esta sessão descreve os tipos de portas que existem e como elas são reconhecidas no FreeBSD.

17.2.2.2.1. Tipos de portas

Existem diversos tipos de portas seriais. Antes de comprar ou construir um cabo, você precisa ter certeza que ele irá se ajustar a porta existente no seu terminal e no seu sistema FreeBSD.

A maioria dos terminais irão ter portas DB25. Computadores pessoais, incluindo PCs rodando FreeBSD, terão portas DB25 ou portas DB9. Se você possui uma placa multiserial para o seu PC, você poderá ter portas RJ-12 ou portas RJ-45.

Consulte a documentação que acompanha o seu hardware para obter a especificação do tipo de porta que ele utiliza. Uma inspeção visual da porta costuma ajudar também.

17.2.2.2.2. Nomes das Portas

No FreeBSD, você acessa cada porta serial através de uma entrada no diretório /dev. Existem 2 tipos diferentes de entradas:

  • As portas utilizadas para receber ligações (call-in) são chamadas /dev/ttydN , onde N é o numero da porta, iniciando-se em 0. Geralmente, você utiliza as portas call-in para terminais. As portas call-in necessitam que a linha serial estabeleça o sinal de detecção de portadora de dados (DCD) para funcionar corretamente.

  • As portas utilizadas para efetuar ligações (call-out), são chamadas /dev/cuaaN . Você normalmente não utiliza este tipo de porta para terminais, usando-as apenas para modens. Você pode utilizar uma porta call-out sempre que o cabo serial ou o terminal não suportar o sinal de detecção da portadora.

Se você conectou um terminal a sua primeira porta serial (COM1 no MS-DOS®), você terá que utilizar /dev/ttyd0 para acessar o terminal. Se o terminal estiver conectado a segunda porta serial (também conhecida como COM2), utilize /dev/ttyd1, e assim por diante.

17.2.3. Configuração do Kernel

O FreeBSD por default suporta 4 portas seriais. No mundo MS-DOS, elas são conhecidas como COM1, COM2, COM3, e COM4. O FreeBSD atualmente suporta diversas placas multiseriais, tais como a BocaBoard 1008 e 2016, bem como outras placas multiseriais inteligentes fabricadas com as tecnologias Digiboard e Stallion. No entando, o kernel default suporta apenas as portas COM normais.

Para verificar se o seu kernel reconhece alguma das suas portas seriais, olhe as mensagens exibidas no console enquanto o kernel esta sendo carregado, ou então utilize o comando /sbin/dmesg para visualizar novamente as mensagens exibidas durante o processo de boot do kernel. Em particular, procure por mensagens que iniciem com os caracteres sio.

Dica: Para visualizar apenas as mensagens que contenham a palavra sio, use o comando:

# /sbin/dmesg | 
grep 'sio'

Por exemplo, em um sistema com 4 portas seriais, as mensagens especificas do kernel para as portas seriais durante o processo de boot seriam parecidas com essas:

sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A

Se o seu kernel não reconheceu todas as suas portas seriais, você provavelmente precisa de um kernel customizado para o seu sistema FreeBSD. Para informações detalhadas de como configurar o seu kernel, por favor consulte Capítulo 9.

As linhas de device relevantes em seu arquivo de configuração do kernel, irão paracer com estas, para o FreeBSD 4.X:

device     sio0    at isa? port IO_COM1 irq 4
device      sio1    at isa? port IO_COM2 irq 3
device      sio2    at isa? port IO_COM3 irq 5
device      sio3    at isa? port IO_COM4 irq 9

e parecida com esta, para o FreeBSD 5.X:

device     sio

No FreeBSD 4.X; você pode comentar ou remover por completo as linhas dos dispositivos que você não possui , no caso do FreeBSD 5.X você tem que editar o seu arquivo /boot/device.hints para configurar as suas portas seriais. Por favor consulte a página de manual do sio(4) para maiores informações sobre a configuração de portas seriais e de placas muiltiseriais. Tenha cuidado se você estiver utilizando um arquivo de configuração usado previamente em uma versão diferente do FreeBSD porque os flags de dispositivo e a sintaxe mudou entre as versões.

Nota: port IO_COM1 é a substituição para port 0x3f8, IO_COM2 é 0x2f8, IO_COM3 é 0x3e8, e IO_COM4 é 0x2e8, os quais são os endereços mais comuns utilizados para as respectivas portas seriais. As interrupções 4, 3, 5, e 9 são as linhas de interrupção normalmente solicitadas. Observe também que as portas seriais comuns não podem compartilhar IRQ no barramento ISA (as placas multiseriais possuem componentes eletrônicos onboard que permitem que todos os chips 16550A da placa compartilhem 1 ou 2 IRQs).

17.2.4. Arquivos especiais de dispositivo

A maioria dos dispositivos no kernel são acessados através de ``arquivos especiais de dispositivos'', que estão localizados no diretório /dev. Os dispositivos sio são acessados através dos dispositivos /dev/ttydN (dial-in) e /dev/cuaaN (call-out). O FreeBSD também disponibiliza dispositivos de inicialização (/dev/ttyidN e /dev/cuaiaN ) e dispositivos de ``fechamento'' (/dev/ttyldN e /dev/cualaN). Os dispositivos de inicialização são utilizados para inicializar os parametros das portas de comunicação cada vez que elas são abertas, como por exemplo o crtscts para os modens que utilizam a sinalização RTS/CTS para controle de fluxo. Os dispositivos de fechamento são utilizados para travar flags nas portas para prevenir que usuários ou programas mudem certos parametros; veja as páginas de manual do termios(4), sio(4), and stty(1) para informações sobre a configuração de terminais, fechamento e inicialização de dispositivos, e configuração das opções de terminal, respectivamente.

17.2.4.1. Criando arquivos especiais de dispositivo

Nota: O FreeBSD 5.0 inclui o sistema de arquivos devfs(5), o qual cria automaticamente os device nodes a medida que se fazem necessários. Se você esta executando esta versão do FreeBSD com o devfs habilitado, você pode pular tranquilamente esta sessão.

Um script shell chamado MAKEDEV existente no diretório /dev gerência os arquivos especiais de dispositivo. Para utilizar o MAKEDEV para criar os arquivos especiais de dispositivos de dial-up para a porta COM1 (porta 0), vá para o diretório /dev e execute o comando MAKEDEV ttyd0. Da mesma forma, para criar os arquivos especiais de dispositivos dial-up para a porta COM2 (porta 1), utilize o comando MAKEDEV ttyd1.

O MAKEDEV não cria apenas os arquivos especiais de dispositivo /dev/ttydN , mas também os /dev/cuaaN , /dev/cuaiaN , /dev/cualaN , /dev/ttyldN , e /dev/ttyidN .

Depois de criar os novos arquivos especiais de dispositivo, certifique-se sobre as permissões dos arquivos (especialmente os arquivos /dev/cua*), para ter certeza de que apenas os usuários que precisam ter acesso a eles, possuem permissão de escrita e de leitura nos mesmos -- você provavelmente não deseja permitir que os seus usuários médios utilizem seus modens para dial-out. As permissões padrões nos arquivos /dev/cua* devem ser suficientes:

crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

Estas permissões permitem que o usuário uucp e que os usuários do grupo dialer utilizem os dispositivos de call-out.

17.2.5. Configuração de portas seriais

O dispositivo ttydN (ou cuaaN) é o dispositivo que normalmente você irá desejar abrir para as suas aplicações. Quando um processo abre um dispositivo, ele irá ter um conjunto padrão de configurações de I/O para o terminal.

#    stty -a -f /dev/ttyd1
   

Quando você altera as configurações para este dispositivo, os ajustes permanecem válidos até que o dispositivo seja fechado. Quando ele é reaberto, ele voltará a utilizar as configurações padrões. Para fazer alterações na configuração padrão, você deve abrir e ajustar as configurações de ``estado inicial'' do dispositivo. Por exemplo, para habilitar o modo CLOCAL , comunicação de 8 bits e o controle de fluxo XON/XOFF como padrão para o dispositivo ttyd5, execute:

# stty -f /dev/ttyid5 clocal cs8 ixon ixoff

Todo o processo de inicialição dos dispositivos seriais é controlado pelo arquivo /etc/rc.serial. Este arquivo afeta as configurações padrões dos dispositivos seriais.

Para impedir que configurações sejam modificadas por aplicações, configure os dispositivos em ``lock state''. Por exemplo, para travar a velocidade do ttyd5 em 57600 bps, digite:

# stty -f /dev/ttyld5 57600

Deste momento em diante, as aplicações que abrirem o dispositivo ttyd5 e tentarem modificar a velocidade da porta terão sua tentativa ignorada e farão uso do dispositivo na velocidade 57600 bps.

Naturalmente, você deve definir que os dispositivos que estiverem em estado de inicialização ou travados tenham permissão de escrita somente para a conta root.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.