26.2. Terminologia serial e hardware

Os termos a seguir são frequentemente usados em comunicações seriais:

bps

Bits por Segundo (bps) é a taxa na qual os dados são transmitidos.

DTE

Equipamento Terminal de Dados (DTE) é um dos dois terminais em uma comunicação serial. Um exemplo seria um computador.

DCE

Equipamento de Comunicações de Dados (DTE) é o outro terminal em uma comunicação serial. Normalmente, é um modem ou terminal serial.

RS-232

O padrão original que definiu as comunicações seriais de hardware. Desde então, foi renomeado para TIA-232.

Ao se referir a taxas de dados de comunicação, esta seção não usa o termo baud. Baud refere-se ao número de transições de estado elétrico feitas em um período de tempo, enquanto bps é o termo correto a ser usado.

Para conectar um terminal serial a um sistema FreeBSD, são necessárias uma porta serial no computador e o cabo adequado para conectar ao dispositivo serial. Os usuários que já estão familiarizados com hardware serial e cabeamento podem pular esta seção com segurança.

26.2.1. Cabos Serial e Portas

Existem vários tipos diferentes de cabos seriais. Os dois tipos mais comuns são cabo null-modem e cabo padrão RS-232. A documentação do hardware deve descrever o tipo de cabo necessário.

Estes dois tipos de cabos diferem em como os fios são conectados ao conector. Cada fio representa um sinal, com os sinais definidos resumidos em Tabela 26.1, “RS-232C Nomes dos Sinais”. Um cabo serial padrão passa todos os sinais RS-232C diretamente. Por exemplo, o pino Transmitted Data em uma extremidade do cabo vai para o pino Transmitted Data na outra extremidade. Este é o tipo de cabo usado para conectar um modem ao sistema FreeBSD e também é apropriado para alguns terminais.

Um cabo de modem nulo alterna o pino Transmitted Data do conector em uma extremidade com o pino Received Data na outra extremidade. O conector pode ser um DB-25 ou um DB-9.

Um cabo de modem nulo pode ser construído usando as conexões de pinos resumidas em Tabela 26.2, “Cabo Null-Modem DB-25 para DB-25”, Tabela 26.3, “Cabo DB-9 para DB-9 Null-Modem” e Tabela 26.4, “Cabo DB-9 para DB-25 Null-Modem”. Enquanto o padrão exige um pino direto 1 para fixar uma linha Protective Ground, ele é freqüentemente omitido. Alguns terminais funcionam usando apenas os pinos 2, 3 e 7, enquanto outros exigem configurações diferentes. Em caso de dúvida, consulte a documentação do hardware.

Tabela 26.1. RS-232C Nomes dos Sinais
SiglasNomes
RDReceived Data
TDTransmitted Data
DTRData Terminal Ready
DSRData Set Ready
DCDData Carrier Detect
SGSignal Ground
RTSRequest to Send
CTSClear to Send

Tabela 26.2. Cabo Null-Modem DB-25 para DB-25
SinalPin # Pin #Sinal
SG7conecta-se a7SG
TD2conecta-se a3RD
RD3conecta-se a2TD
RTS4conecta-se a5CTS
CTS5conecta-se a4RTS
DTR20conecta-se a6DSR
DTR20conecta-se a8DCD
DSR6conecta-se a20DTR
DCD8conecta-se a20DTR

Tabela 26.3. Cabo DB-9 para DB-9 Null-Modem
SinalPin # Pin #Sinal
RD2conecta-se a3TD
TD3conecta-se a2RD
DTR4conecta-se a6DSR
DTR4conecta-se a1DCD
SG5conecta-se a5SG
DSR6conecta-se a4DTR
DCD1conecta-se a4DTR
RTS7conecta-se a8CTS
CTS8conecta-se a7RTS

Tabela 26.4. Cabo DB-9 para DB-25 Null-Modem
SinalPin # Pin #Sinal
RD2conecta-se a2TD
TD3conecta-se a3RD
DTR4conecta-se a6DSR
DTR4conecta-se a8DCD
SG5conecta-se a7SG
DSR6conecta-se a20DTR
DCD1conecta-se a20DTR
RTS7conecta-se a5CTS
CTS8conecta-se a4RTS

Nota:

Quando um pino em uma extremidade se conecta a um par de pinos na outra extremidade, geralmente é implementado com um fio curto entre o par de pinos em seu conector e um fio longo no outro pino único.

As portas seriais são os dispositivos através dos quais os dados são transferidos entre o computador host do FreeBSD e o terminal. Vários tipos de portas seriais existem. Antes de comprar ou construir um cabo, verifique se ele irá se encaixar nas portas do terminal e no sistema FreeBSD.

A maioria dos terminais tem portas DB-25. Os computadores pessoais podem ter portas DB-25 ou DB-9. Um cartão serial multiportas pode ter portas RJ-12 ou RJ-45/. Consulte a documentação que acompanha o hardware para especificações sobre o tipo de porta ou verifique visualmente o tipo de porta.

No FreeBSD, cada porta serial é acessada através de uma entrada em /dev. Existem dois tipos diferentes de entradas:

  • As portas de chamada são nomeadas /dev/ttyuN onde N é o número da porta, começando do zero. Se um terminal estiver conectado a primeira porta serial (COM1), use /dev/ttyu0 para se referir ao terminal. Se o terminal estiver na segunda porta serial (COM2), use /dev/ttyu1 e assim por diante. Geralmente, a porta de chamada é usada para terminais. As portas de chamada requerem que a linha serial declare o sinal Data Carrier Detect para funcionar corretamente.

  • As portas de chamadas de saida são nomeadas /dev/cuauN nas versões 8.X e superiores do FreeBSD e /dev/cuadN nas versões 7.X e inferiores do FreeBSD. As portas de chamada de saida geralmente não são usadas para terminais, mas são usadas para modems. A porta de evocação pode ser usada se o cabo serial ou o terminal não suportar o sinal Data Carrier Detect.

O FreeBSD também fornece dispositivos de inicialização (/dev/ttyuN.init e /dev/cuauN.init ou /dev/cuadN.init) e dispositivos de bloqueio (/dev/ttyuN.lock e /dev/cuauN.lock ou /dev/cuadN.lock). Os dispositivos de inicialização são utilizados para inicializar os parâmetros da porta de comunicações de cada vez que uma porta é aberta, tal como o crtscts para modems que usam RTS/CTS sinalização para controle de fluxo. Os dispositivos de bloqueio são usados para bloquear sinalizadores nas portas para impedir que usuários ou programas alterem determinados parâmetros. Consulte termios(4), sio(4), e stty(1) para obter informações sobre configurações de terminal, bloqueio e inicialização de dispositivos e configuração de opções de terminal, respectivamente.

26.2.2. Configuração de Porta Serial

Por padrão, o FreeBSD suporta quatro portas seriais que são comumente conhecidas como COM1, COM2, COM3 e COM4. O FreeBSD também suporta placas de interfaces seriais multi-port, como o BocaBoard 1008 e 2016, bem como placas multi-port mais inteligentes, como as feitas pela Digiboard. No entanto, o kernel padrão procura apenas as portas padrão COM.

Para ver se o sistema reconhece as portas seriais, procure por mensagens de inicialização do sistema que começam com uart:

# grep uart /var/run/dmesg.boot

Se o sistema não reconhecer todas as portas seriais necessárias, entradas adicionais podem ser adicionadas ao /boot/device.hints. Este arquivo já contém entradas hint.uart.0.* para entradas COM1 e hint.uart.1.* para COM2. Ao adicionar uma entrada de porta para COM3 use 0x3E8 e para COM4 use 0x2E8. Endereços comuns de IRQ são 5 para COM3 e 9 para COM4.

Para determinar o conjunto padrão de configurações de terminal E/S usadas pela porta, especifique o nome do dispositivo. Este exemplo determina as configurações para a porta de chamada em COM2:

# stty -a -f /dev/ttyu1

A inicialização de dispositivos seriais em todo o sistema é controlada por /etc/rc.d/serial. Este arquivo afeta as configurações padrão dos dispositivos seriais. Para alterar as configurações de um dispositivo, use stty. Por padrão, as configurações alteradas estão em vigor até que o dispositivo seja fechado e, quando o dispositivo for reaberto, volte para o conjunto padrão. Para alterar permanentemente o conjunto padrão, abra e ajuste as configurações do dispositivo de inicialização. Por exemplo, para ativar o modo CLOCAL, comunicação de 8 bits e controle de fluxo XON/XOFF para ttyu5, digite:

# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff

Para impedir que determinadas configurações sejam alteradas por um aplicativo, faça ajustes no dispositivo de bloqueio. Por exemplo, para bloquear a velocidade de ttyu5 para 57600 bps, digite:

# stty -f /dev/ttyu5.lock 57600

Agora, qualquer aplicativo que abra ttyu5 e tente alterar a velocidade da porta será bloqueado com 57600 bps.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.