Chronpic 3.0 y Linux: BUG ENCONTRADO



Hola,

  He seguido haciendo pruebas y ya he encontrado el Bug:

  El driver del kernel tiene un bug y no funcionará correctamente en
mono en los kernels 2.6.20, 2.6.21, 2.6.22 y 2.6.23. PERO ya está
solucionado en el 2.6.24 (el último kernel liberado). Yo no lo he podido
probar todavía.

  El error del driver es que no está implementado el "metodo" TIOCMGET
que sirve para leer las señales de control: CTS, RTS, etc... Esta
llamada al sistema normalmente no se hace al abrir un puerto serie y por
eso no falla en los programas C ni en Python. Pero parece ser que la
implementación de Mono sí lo usa y por eso "peta".

  Es muy fácil reproducir el problema desde una consola python:
(hay que tener intalado el paquete python-serial)

$ python
Python 2.4.4 (#2, Jan  3 2008, 13:36:28) 
[GCC 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Ejecutamos los siguientes comandos:

>>> import serial
>>> ser = serial.Serial("/dev/ttyUSB0")

Y ahora si leemos el estado de cualquier señal de control puerto serie
se invoka a TIOCMGET y se produce el error:

>>> ser.getCTS()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/site-packages/serial/serialposix.py", line
349, in getCTS
    s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str)
IOError: [Errno 14] Bad address

-----------------------------------------------------------------

Una vez encontrado, he googleado un poco y me he encontrado con este
mensaje de la lista del kernel, en el que otra persona lo ha detectado y
ha enviado un parche:

http://kerneltrap.org/mailarchive/linux-usb-devel/2007/10/6/342318

En este otro mail indican que lo incluirán en el 2.6.24:

http://kerneltrap.org/mailarchive/linux-usb-devel/2007/10/9/342411

Y por último, en la lista de cambios el actual Kernel (2.6.24) se puede
ver que lo han incluido (haciendo una búsqueda de la cadena FT232RL)

http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.24

Reproduzco aquí la parte importante:


commit ed6e52829c113ca18f042ac55cc77b1b90745eab
Author: Andrew M. Bishop <amb gedanken demon co uk>
Date:   Tue Aug 21 19:08:56 2007 +0100

    USB: ftdi_sio: Handle FT232RL devices like FT232BM devices
    
    Handle the FT232RL device type in exactly the same way as FT232BM
    devices (FT232RL detection was added around kernel 2.6.20 but not
code
    for handling it).
    
    Signed-off-by: Andrew M. Bishop <amb gedanken demon co uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh suse de>

------------------------------------------------------------------------

CONCLUSIONES:

  -Con el nuevo kernel 2.6.24 debería funcionar correctamente--> PERO
hay que probarlo. [PENDIENTE]

  -Para kernels <2.6.20 --> FUNCIONA [COMPROBADO]

  -Si  kernel esta en el rango [2.6.20, 2.6.23] --> NO FUNCIONA
[COMPROBADO]

Saludos, Juan



-- 
Juan Gonzalez Gomez
juan iearobotics com
www.iearobotics.com



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]