Cuando se habla de tasa de comunicación de datos, ésta sección no usa el término “baud”. Baud se refiere al número de estados de transición eléctricos que pueden realizarse en un periodo de tiempo, mientras que “bps” (bits por segundo) es el término correcto a usar (al menos parece no molestar demasiado a los más aferrados).
Para conectar un modem o terminal a su sistema FreeBSD necesitará un puerto serie en su computadora y el cable apropiado para conectar a su dispositivo serie. Si ya está familiarizado con su hardware y el cable que requiere, puede saltarse esta sección.
Existen diferentes tipos de cables serie. Los dos tipos más comunes para nuestros propósitos son cables null-modem y cables RS-232 estándar (“normal”). La documentación de su hardware debería describir el tipo de cable requerido.
Un cable null-modem pasa algunas señales, como “tierra”, normalmente, pero cambia otras señales. Por ejemplo, el pin “envío de datos” en un extremo va al pin “recepción de datos” en el otro.
Si le gusta fabricar sus propios cables, puede construir un cable null-modem para utilizar con terminales. Esta tabla muestra los nombres de señal y números de pin en un conector DB-25.
Señal | Pin # | Pin # | Señal | |
---|---|---|---|---|
SG | 7 | conecta a | 7 | SG |
TD | 2 | conecta a | 3 | RD |
RD | 3 | conecta to | 2 | TD |
RTS | 4 | conecta a | 5 | CTS |
CTS | 5 | conecta a | 4 | RTS |
DTR | 20 | conecta a | 6 | DSR |
DCD | 8 | 6 | DSR | |
DSR | 6 | conecta a | 20 | DTR |
Conectar “Data Set Ready” (DSR) y “Data Carrier Detect” (DCD) intérnamente en la capucha del conector, y entonces a “Data Terminal Ready” (DTR) en la capucha remota.
Puertos serie son los dispositivos a través de los cuales los datos son transferidos entre una computadora FreeBSD y la terminal. Esta sección describe los tipos de puertos que existen y como son referidos en FreeBSD.
Existen varios tipos de puertos serie. antes de comprar o construir un cable, necesita asegurarse que coincida con los puertos en su terminal y en su sistema FreeBSD.
La mayoría de las terminales tienen puertos DB25. Computadoras personales, incluyendo PCs corriendo FreeBSD, tienen puertos DB25 o DB9. Si tiene una tarjeta multipuertos serie para su PC, tal vez tenga puertos RJ-12 o RJ-45.
Vea la documentación que acompaña su hardware para las especificaciones sobre el tipo de puerto en uso. Una inspección visual del puerto también funciona en la mayoría de los casos.
En FreeBSD, se accesa cada puerto serie a través de
una entrada en el directorio /dev
. Existen
dos tipos de entradas:
Puertos de llamada-entrante
son llamados /dev/ttydN
donde N
es el número de
puerto, iniciando desde cero. Generalmente, los puertos de
llamada-entrante se utilizan para terminales. Los puertos
de llamada-entrante requieren que la línea
serie especifique la señal data carrier detect (DCD)
para funcionar correctamente.
Puertos de llamada-saliente
son llamados /dev/cuaaN
.
Usualmente no se utilizan los puertos de llamada-saliente
para terminales, solo para modems. Puede utilizar el puerto
de llamada-saliente si el cable serie o la terminal no
soporta la señal de carrier detect.
Si tiene conectada una terminal al primer puerto serie
(COM1
en MS-DOS®), entonces usará
/dev/ttyd0
para referirse a la terminal. Si
la terminal está en el segundo puerto serie (también
conocido como COM2
), utilice
/dev/ttyd1
, y así sucesivamente.
FreeBSD soporta cuatro puertos serie por omisión.
en el mundo MS-DOS® éstos son conocidos como
COM1
,
COM2
,
COM3
, y
COM4
. FreeBSD actualmente soporta
tarjetas de interfaz serie “tontas”, como la
BocaBoard 1008 y 2016, así como tarjetas multipuerto
más inteligentes como las fabricadas por Digiboard
y Stallion Technologies. De cualquier manera, el kernel por
omisión solo busca por los puertos COM estándares.
Para ver si su kernel reconoce cualquiera de sus puertos serie,
mire los mensajes mientras el kernel esta arrancando, o utilice el
comando /sbin/dmesg
para repetir los mensajes de
arranque del kernel. En particular busque por mensajes que inicien
con el caracter sio
.
Para ver solamente los mensajes que contienen
la palabra sio
, use el comando:
#
/sbin/dmesg | grep 'sio'
Por ejemplo, en un sistema con cuatro puertos serie, éstos son los mensajes de arranque del kernel específicos de puerto serie:
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
Si su kernel no reconoce todos sus puertos serie, probablemente necesitará configurar un kernel FreeBSD personalizado para su sistema. Para información detallada sobre configurar su kernel, por favor vea Capítulo 8, Configuración del kernel de FreeBSD.
Las líneas de dispositivo relevantes para su fichero de configuración del kernel podrín verse de esta manera, para 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
y de esta manera, para FreeBSD 5.X:
device sio
Puede comentar o remover completamente líneas de
dispositivos que no tenga en el caso de FreeBSD 4.X;
para FreeBSD 5.X tiene que editar su fichero
/boot/device.hints
para configurar
sus puertos serie. Por favor diríjase a la página
de manual sio(4) para mayor información sobre
puertos serie y configuración de tarjetas multipuertos.
Tenga cuidado si está utilizando un fichero de
configuración que fué usado anteriomente para una
versión diferente de FreeBSD porque las banderas de
dispositivo y la sintaxis han cambiado entre versiones.
port IO_COM1
es una substitución para
port 0x3f8
, IO_COM2
es
0x2f8
, IO_COM3
es
0x3e8
, y IO_COM4
es
0x2e8
, las cuales son direcciones de puerto
comunes para sus respectivos puertos serie; interrupciones 4,3,5 y
9 son peticiones comunes de líneas de interrupción.
Note también que puertos serie regulares
no pueden compartir interrupciones en PCs con
bus ISA (las tarjetas multipuerto tienen electrónicos que
les permiten a los 16550A's compartir una o dos líneas de
peticiones de interrupción).
La mayoría de dispositivos en el kernel son accesados
a través de “ficheros especiales de dispositivo”,
los cuales están localizados en el directorio
/dev
. Los dispositivos
sio
son accesados a través de los
dispositivos
/dev/ttydN
(dial-in)
y /dev/cuaaN
(call-out). FreeBSD provee también dispositivos de
inicialización
(/dev/ttyidN
y
/dev/cuaiaN
) y
dispositivos de bloqueo
(/dev/ttyldN
y
/dev/cualaN
).
Los dispotivos de inicialización son utilizados para
inicializar los parámetros de comunicación de puerto
cada vez que un puerto es abierto, como
crtscts
para modems que utilizan
señalización RTS/CTS
para
control de flujo. Los dispositivos de bloqueo son utilizados
para bloquear banderas en puertos y prevenir que usuarios o
programas cambien ciertos parámetros; vea las páginas
de manual termios(4), sio(4), y stty(1) para
información de las propiedades de terminales, bloqueo
e inicialización de dispositivos y aplicación de
opciones de terminal, respectivamente.
FreeBSD 5.0 incluye el sistema de
ficheros devfs(5) el cual crea automáticamente
nodos de dispositivos según se necesiten.
si está corriendo una versión de FreeBSD
con devfs
habilitado entonces puede
saltarse esta sección.
Un script de shell llamado MAKEDEV
en el directorio /dev
administra los
ficheros especiales de dispositivo. Para utilizar
MAKEDEV
para crear un fichero especial de
dispositivo dial-up para COM1
(port 0),
cd
a /dev
y ejecute
el comando MAKEDEV ttyd0
. De la misma
manera, para crear ficheros especiales de dispositivo para
COM2
(port 1), utilice
MAKEDEV ttyd1
.
MAKEDEV
no crea solamente el
fichero especial de dispositivo
/dev/ttydN
también crea los nodos
/dev/cuaaN
,
/dev/cuaiaN
,
/dev/cualaN
,
/dev/ttyldN
,
y
/dev/ttyidN
.
Despues de crear ficheros especiales de dispositivo nuevos,
asegúrese de revisar los permisos en los ficheros
(especialmente los ficheros /dev/cua*
)
para asegurarse que solamente los usuarios que deben tener
acceso a esos ficheros especiales de dispositivo puedan leer
y escribir en ellos — probablemente no desee permitir
al usuario promedio utilizar sus modems para marcar al exterior.
Los permisos por omisión en los ficheros
/dev/cua*
deberían 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
Estos permisos permiten al usuario uucp
y
usuarios en el grupo dialer
utilizar
dispositivos call-out.
El dispositivo ttydN
(o cuaaN
) es el
dispositivo regular que usted deseará abrir para sus
aplicaciones. Cuando un proceso abre el dispositivo, tendrá un
conjunto por omisión de propiedades de terminal E/S. Puede ver
estas propiedades con el comando
#
stty -a -f /dev/ttyd1
Cuando cambia las propiedades de este dispositivo, las propiedades
son efectivas hasta que el dispositivo es cerrado. Cuando es reabierto
regresa a las propiedades por omisión. Para realizar cambios
al conjunto por omisión, usted puede abrir y ajustar las
propiedades del dispositivo de “estado inicial” . Por
ejemplo, para activar el modo CLOCAL
,
comunicación de 8 bits y control de flujo
XON/XOFF
por omisión para
ttyd5
, teclée:
#
stty -f /dev/ttyid5 clocal cs8 ixon ixoff
La inicialización para todo el sistema de los
dispositivos serie es controlada en /etc/rc.serial
.
Este fichero afecta las propiedades por omisión de
dispositivos serie.
Para prevenir que ciertas propiedades sean cambiadas
por una aplicación, haga ajustes al dispositivo
“bloquear estado”. Por ejemplo, para confinar
la velocidad en ttyd5
a 57600 bps,
teclée:
#
stty -f /dev/ttyld5 57600
Ahora, una aplicación que abra
ttyd5
y trate de cambiar la velocidad
del puerto se mantendrá con 57600 bps.
Naturalmente, debería crear los dispositivos de estado
inicial y bloqueo de estado escribible únicamente para la
cuenta root
.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.