4.5. Uso de las Utilidades de Configuraci�n

Dediquemos algo de tiempo a examinar las dos utilidades m�s comunes: setserial y stty.

4.5.1. La orden setserial

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]
donde el dispositivo es uno de los dispositivos serie, como ttyS0.

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�metroDescripci�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.

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.

4.5.2. La Orden stty

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.

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.

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.

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

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