Está en la página 1de 5

Dediquemos algo de tiempo a examinar las dos utilidades ms comunes: setserial y stty.

===== La orden setserial ===== El ncleo har su mayor esfuerzo en determinar cmo est configurado su hardware serie, pero las diversas variantes en la configuracin de dispositivos serie hace difcil obtener una determinacin fiable al 100%. Un buen ejemplo de este problema son los mdems internos que discutimos anteriormente. La UART que usan tiene un bfer FIFO de 16 bytes, pero parece una UART 16450 para el ncleo: a no ser que especficamente informemos al manejador que el puerto es realmente un dispositivo 16550, el ncleo no har uso del bfer extendido. Otro ejemplo es el de las tarjetas de cuatro puertos sin procesamiento que permiten compartir una misma IRQ entre un nmero de dispositivos serie. Probablemente tengamos que especificarle al ncleo 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 ejecucin. La orden setserial se ejecuta por lo comn 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 estndar o inusual que haya en la mquina. La sintaxis general para la orden setserial es: || setserial ##//dispositivo//## [##//parmetos//##] || donde el dispositivo es uno de los dispositivos serie, como //ttyS0//. La orden setserial tiene un gran nmero de parmetros. Los ms comunes vienen descritos en http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/x-087-2-serialconfiguration.html#X-087-2-SERIAL-SETSERIAL-PARAMETERS Tabla 4-1. Para ms informacin sobre el resto de los parmetros, consulte la pgina de manual de setserial.

Tabla 4-1. Parmetros de Lnea de rdenes de setserial || Parmetro || Descripcin || || ##port## ##//nmero_puerto//## || Especifica la direccin de E/S del dispositivo serie. Los nmeros de puerto deben ser especificados en notacin hexadecimal, p.ej. ##0x2f8##. || || ##irq## ##//nm//## || Especifica la lnea de peticin de interrupcin que emplea el dispositivo serie. || || ##uart## ##//tipo_uart//## || Especifica el tipo de UART del dispositivo serie. Los valores ms comunes son ##16450##, ##16550##, etc. Ajustar este valor a ##none## desactivar el dispositivo serie. || || ##fourport## || El uso de este parmetro informar al manejador de puertos serie del ncleo 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 parmetro sirve para deshacer el efecto de un ##spd_hi## o ##spd_vhi## aplicado en el dispositivo serie especificado. || || ##auto_irq## || Este parmetro provocar que el ncleo trate de determinar automticamente la IRQ del dispositivo especificado. Este intento puede no ser fiable completamente, as que quiz sea mejor entenderlo como una solicitud al ncleo para que adivine la IRQ. Si conoce usted la IRQ del dispositivo, debe especificar que se use el parmetro ##irq## en su lugar. || || ##autoconfig## || Este parmetro debe ser especificado simultneamente con el parmetro ##port##. Cuando se suministra este parmetro, setserial ordena al ncleo que intente determinar automticamente el tipo de UART localizada en la direccin de puerto proporcionada. Si el parmetro ##auto_irq## tambin es suministrado, el ncleo tratar tambin de determinar la IRQ automticamente. || || ##skip_test## || Con este parmetro se solicita que el ncleo no se ocupe de determinar el tipo de UART en la auto-configuracin. Esto es necesario cuando la UART es detectada de forma incorrecta por el ncleo. ||

Un fichero ##rc## tpico y sencillo para configurar sus puertos serie al arrancar puede parecerse a lo mostrado en http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/x-087-2serial-configuration.html#X-087-2-SERIAL-RC.SERIAL.SETSERIAL Ejemplo 4-1. Una mayora de distribuciones de GNU/Linux incluirn algo ms sofisticado que este ejemplo.

Ejemplo 4-1. Ejemplo de rdenes setserial en rc.serial || # /etc/rc.serial - script de configuracin de lneas 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 configuracin de dispositivos serie. /sbin/setserial -bg /dev/ttyS* ||

El argumento ##-bg /dev/ttyS*## en la ltima orden mostrar un pulcro sumario de la configuracin hardware de todos los dispositivos serie activos. Esta salida se parecer a la mostrada en http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/x-087-2-serialconfiguration.html#X-087-2-SERIAL.SETSERIAL.OUTPUT 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 ||

===== La Orden stty ===== El nombre stty probablemente signifique set tty, pero la orden stty tambin puede ser empleada para mostrar la configuracin de un terminal. Quizs an ms que setserial, la orden stty proporciona un desconcertante nmero de caractersticas configurables. Cubriremos las ms importantes en breve. Puede usted encontrar descrito el resto en la pgina de manual de stty. La orden stty se utiliza principalmente para configurar parmetros del terminal, tales como qu caracteres sern mostrados, o qu tecla deber generar una seal 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 ms importantes de stty para dispositivos serie es habilitar la negociacin por hardware en ellos. Anteriormente describimos someramente la negociacin por hardware. La configuracin por defecto en dispositivos serie es que esta negociacin hardware est deshabilitada. Esta disposicin permite que los cables serie de tres hilos funcionen; estos cables no aceptan las seales necesarias para la negociacin por hardware, y si estuviera activada por defecto, seran incapaces de transmitir ningn carcter para desactivarla. Sorprendentemente, algunos programas de comunicacin serie no habilitan la negociacin por hardware, as que si su mdem la permite, deber configurar el mdem para emplearla (dirjase al manual de su mdem para averiguar qu orden usar), y tambin deber configurar el dispositivo serie para utilizar negociacin por hardware. La orden stty tiene una bandera ##crtscts## que habilita la negociacin por hardware en un dispositivo; tendr que utilizar esto. El lugar ms apropiado para ejecutar esta orden probablemente sea el fichero ##rc.serial## (o equivalente) al arrancar, utilizando sentencias como las mostradas en http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/x-0872-serial-configuration.html#X-087-2-SERIAL-RC.SERIAL.STTY 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 redireccin de entrada (<) facilitada por el intrprete de rdenes, podemos hacer que stty maneje cualquier dispositivo tty. Es un error comn olvidar si se ha de emplear < o >; las versiones ms modernas de stty tienen una sintaxis ms clara de especificarlo. Con esta nueva sintaxis, nuestro ejemplo quedara como en http://es.tldp.org/ManualesLuCAS/GARL2/garl2/x-087-2-serial-configuration.html#X-087-2-SERIALRC.SERIAL.STTY.NEW 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 parmetros de configuracin de un dispositivo tty. Para mostrar todos los parmetros activos de un dispositivo tty se hace: || $ ##stty -a -F /dev/ttyS1## || La salida de esta orden, mostrada en http://es.tldp.org/Manuales-LuCAS/GARL2/garl2/x087-2-serial-configuration.html#X-087-2-SERIAL.STTY.OUTPUT 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 descripcin de las banderas ms importantes se da en http://es.tldp.org/ManualesLuCAS/GARL2/garl2/x-087-2-serial-configuration.html#X-087-2-SERIAL.STTY.FLAGS Tabla 4-2. Cada una de ellas se habilita suministrndola a stty, y se deshabilita de la misma forma, pero precedida por un carcter delante. As, para deshabilitar la negociacin hardware, se hara: || $ ##stty -crtscts -F /dev/ttyS0## ||

Tabla 4-2. Banderas de stty Ms Relevantes Para Configurar Dispositivos Serie || Bandera || Descripcin || || ##N## || Ajustar la velocidad de lnea a ##N## bits por segundo. || || ##crtsdts## || Habilitar/Deshabilitar negociacin por hardware. || || ##ixon## || Habilitar/Deshabilitar control de flujo mediante XON/XOFF. || || ##clocal## || Habilitar/Deshabilitar seales de control del mdem como DTR/DTS y DCD. Esto es necesario si se usa cable serie de tres hilos ya que no proporciona estas seales. || || ##cs5 cs6 cs7 cs8## || Ajustar el nmero de bits de datos a 5, 6, 7 u 8, respectivamente. || || ##parodd## || Habilitar paridad impar. Desactivar esta bandera activa la paridad par. || || ##parenb## || Habilitar comprobacin de paridad. Si esta bandera se niega, no se utiliza paridad. || || ##cstopb## || Ajustar los bits de parada a dos por carcter. Al negar esta bandera, se usar slo un bit de parada por carcter. || || ##echo## || Habilitar/Deshabilitar el eco de caracteres recibidos al que los enva. ||

El siguiente ejemplo combina algunas de estas banderas y configura el dispositivo ##ttyS0## a 19.200 bps, 8 bits de datos, sin paridad, con negociacin por hardware y eco deshabilitado: || $ ##stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0## ||