Gu�a de Administraci�n de Redes con Linux | ||
---|---|---|
Anterior | Cap�tulo 4. Configuraci�n del Hardware Serie | Siguiente |
Dediquemos algo de tiempo a examinar las dos utilidades m�s comunes: setserial y stty.
El n�cleo har� su mayor esfuerzo en determinar c�mo est� configurado su hardware serie, pero las diversas variantes en la configuraci�n de dispositivos serie hace dif�cil obtener una determinaci�n fiable al 100%. Un buen ejemplo de este problema son los m�dems internos que discutimos anteriormente. La UART que usan tiene un b�fer FIFO de 16 bytes, pero parece una UART 16450 para el n�cleo: a no ser que espec�ficamente informemos al manejador que el puerto es realmente un dispositivo 16550, el n�cleo no har� uso del b�fer extendido. Otro ejemplo es el de las tarjetas de cuatro puertos sin procesamiento que permiten compartir una misma IRQ entre un n�mero de dispositivos serie. Probablemente tengamos que especificarle al n�cleo qu� IRQ se supone que usar� el puerto, y que las IRQ pueden estar compartidas.
setserial fue creado para configurar el manejador serie en tiempo de ejecuci�n. La orden setserial se ejecuta por lo com�n al arrancar, desde un script llamado 0setserial en unas distribuciones, y rc.serial en otras. Este script est� al cargo de iniciar adecuadamente el manejador de puerto serie para dar cabida a cualquier hardware no est�ndar o inusual que haya en la m�quina.
La sintaxis general para la orden setserial es:
setserial dispositivo [par�metos] |
La orden setserial tiene un gran n�mero de par�metros. Los m�s comunes vienen descritos en Tabla 4-1. Para m�s informaci�n sobre el resto de los par�metros, consulte la p�gina de manual de setserial.
Tabla 4-1. Par�metros de L�nea de �rdenes de setserial
Par�metro | Descripci�n |
---|---|
port n�mero_puerto | Especifica la direcci�n de E/S del dispositivo serie. Los n�meros de puerto deben ser especificados en notaci�n hexadecimal, p.ej. 0x2f8. |
irq n�m | Especifica la l�nea de petici�n de interrupci�n que emplea el dispositivo serie. |
uart tipo_uart | Especifica el tipo de UART del dispositivo serie. Los valores m�s comunes son 16450, 16550, etc. Ajustar este valor a none desactivar� el dispositivo serie. |
fourport | El uso de este par�metro informar� al manejador de puertos serie del n�cleo de que este puerto forma parte de una tarjeta AST Fourport. |
spd_hi | Programar la UART para emplear una velocidad de 57,6 kbps cuando un proceso solicita 38,4 kbps. |
spd_vhi | Programar la UART para emplear una velocidad de 115 kbps cuando un proceso solicita 38,4 kbps. |
spd_normal | Programar la UART para emplear la velocidad predefinida de 38,4 kbps cuando se le solicite. Este par�metro sirve para deshacer el efecto de un spd_hi o spd_vhi aplicado en el dispositivo serie especificado. |
auto_irq | Este par�metro provocar� que el n�cleo trate de determinar autom�ticamente la IRQ del dispositivo especificado. Este intento puede no ser fiable completamente, as� que quiz� sea mejor entenderlo como una solicitud al n�cleo para que adivine la IRQ. Si conoce usted la IRQ del dispositivo, debe especificar que se use el par�metro irq en su lugar. |
autoconfig | Este par�metro debe ser especificado simult�neamente con el par�metro port. Cuando se suministra este par�metro, setserial ordena al n�cleo que intente determinar autom�ticamente el tipo de UART localizada en la direcci�n de puerto proporcionada. Si el par�metro auto_irq tambi�n es suministrado, el n�cleo tratar� tambi�n de determinar la IRQ autom�ticamente. |
skip_test | Con este par�metro se solicita que el n�cleo no se ocupe de determinar el tipo de UART en la auto-configuraci�n. Esto es necesario cuando la UART es detectada de forma incorrecta por el n�cleo. |
Un fichero rc t�pico y sencillo para configurar sus puertos serie al arrancar puede parecerse a lo mostrado en Ejemplo 4-1. Una mayor�a de distribuciones de GNU/Linux incluir�n algo m�s sofisticado que este ejemplo.
Ejemplo 4-1. Ejemplo de �rdenes setserial en rc.serial
# /etc/rc.serial - script de configuraci�n de l�neas serie. # # Configurar dispositivos serie. /sbin/setserial /dev/ttyS0 auto_irq skip_test autoconfig /sbin/setserial /dev/ttyS1 auto_irq skip_test autoconfig /sbin/setserial /dev/ttyS2 auto_irq skip_test autoconfig /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig # # Mostrar la configuraci�n de dispositivos serie. /sbin/setserial -bg /dev/ttyS* |
El argumento -bg /dev/ttyS* en la �ltima orden mostrar� un pulcro sumario de la configuraci�n hardware de todos los dispositivos serie activos. Esta salida se parecer� a la mostrada en Ejemplo 4-2.
Ejemplo 4-2. Salida de la orden setserial -bg /dev/ttyS*
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A /dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A |
El nombre stty probablemente signifique “set tty,” pero la orden stty tambi�n puede ser empleada para mostrar la configuraci�n de un terminal. Quiz�s a�n m�s que setserial, la orden stty proporciona un desconcertante n�mero de caracter�sticas configurables. Cubriremos las m�s importantes en breve. Puede usted encontrar descrito el resto en la p�gina de manual de stty.
La orden stty se utiliza principalmente para configurar par�metros del terminal, tales como qu� caracteres ser�n mostrados, o qu� tecla deber� generar una se�al de parada. Explicamos anteriormente que los dispositivos serie son dispositivos tty, y por tanto la orden stty es igualmente aplicable a ellos.
Uno de los usos m�s importantes de stty para dispositivos serie es habilitar la negociaci�n por hardware en ellos. Anteriormente describimos someramente la negociaci�n por hardware. La configuraci�n por defecto en dispositivos serie es que esta negociaci�n hardware est� deshabilitada. Esta disposici�n permite que los cables serie de “tres hilos” funcionen; estos cables no aceptan las se�ales necesarias para la negociaci�n por hardware, y si estuviera activada por defecto, ser�an incapaces de transmitir ning�n car�cter para desactivarla.
Sorprendentemente, algunos programas de comunicaci�n serie no habilitan la negociaci�n por hardware, as� que si su m�dem la permite, deber� configurar el m�dem para emplearla (dir�jase al manual de su m�dem para averiguar qu� orden usar), y tambi�n deber� configurar el dispositivo serie para utilizar negociaci�n por hardware. La orden stty tiene una bandera crtscts que habilita la negociaci�n por hardware en un dispositivo; tendr� que utilizar esto. El lugar m�s apropiado para ejecutar esta orden probablemente sea el fichero rc.serial (o equivalente) al arrancar, utilizando sentencias como las mostradas en Ejemplo 4-3.
Ejemplo 4-3. �rdenes stty de Ejemplo en rc.serial
# stty crtscts < /dev/ttyS0 stty crtscts < /dev/ttyS1 stty crtscts < /dev/ttyS2 stty crtscts < /dev/ttyS3 # |
La orden stty trabaja en el terminal en uso de forma predefinida, pero mediante la redirecci�n de entrada (“<”) facilitada por el int�rprete de �rdenes, podemos hacer que stty maneje cualquier dispositivo tty. Es un error com�n olvidar si se ha de emplear “<” o “>”; las versiones m�s modernas de stty tienen una sintaxis m�s clara de especificarlo. Con esta nueva sintaxis, nuestro ejemplo quedar�a como en Ejemplo 4-4.
Ejemplo 4-4. �rdenes stty de Ejemplo en rc.serial Empleando Sintaxis Moderna
# stty crtscts -F /dev/ttyS0 stty crtscts -F /dev/ttyS1 stty crtscts -F /dev/ttyS2 stty crtscts -F /dev/ttyS3 # |
Antes mencionamos que la orden stty puede ser usada para mostrar los par�metros de configuraci�n de un dispositivo tty. Para mostrar todos los par�metros activos de un dispositivo tty se hace:
$ stty -a -F /dev/ttyS1 |
La salida de esta orden, mostrada en Ejemplo 4-5, le muestra el estado de todas las banderas para ese dispositivo; una bandera precedida por un signo menos, como en –crtscts, significa que la bandera ha sido desactivada.
Ejemplo 4-5. Salida de una Orden stty -a
speed 19200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke |
Una descripci�n de las banderas m�s importantes se da en Tabla 4-2. Cada una de ellas se habilita suministr�ndola a stty, y se deshabilita de la misma forma, pero precedida por un car�cter – delante. As�, para deshabilitar la negociaci�n hardware, se har�a:
$ stty -crtscts -F /dev/ttyS0 |
Tabla 4-2. Banderas de stty M�s Relevantes Para Configurar Dispositivos Serie
Bandera | Descripci�n |
---|---|
N | Ajustar la velocidad de l�nea a N bits por segundo. |
crtsdts | Habilitar/Deshabilitar negociaci�n por hardware. |
ixon | Habilitar/Deshabilitar control de flujo mediante XON/XOFF. |
clocal | Habilitar/Deshabilitar se�ales de control del m�dem como DTR/DTS y DCD. Esto es necesario si se usa cable serie de “tres hilos” ya que no proporciona estas se�ales. |
cs5 cs6 cs7 cs8 | Ajustar el n�mero de bits de datos a 5, 6, 7 u 8, respectivamente. |
parodd | Habilitar paridad impar. Desactivar esta bandera activa la paridad par. |
parenb | Habilitar comprobaci�n de paridad. Si esta bandera se niega, no se utiliza paridad. |
cstopb | Ajustar los bits de parada a dos por car�cter. Al negar esta bandera, se usar� s�lo un bit de parada por car�cter. |
echo | Habilitar/Deshabilitar el eco de caracteres recibidos al que los env�a. |
El siguiente ejemplo combina algunas de estas banderas y configura el dispositivo ttyS0 a 19.200 bps, 8 bits de datos, sin paridad, con negociaci�n por hardware y eco deshabilitado:
$ stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0 |