Tslib: librería para la pantalla táctil del Chumby
Cuando tienes un dispositivo con pantalla táctil y quieres programar algo para él siempre puede ser de ayuda tener un método de entrada tan fácil como la propia pantalla del dispositivo. Si nuestro aparato tiene, como en el caso del Chumby, un Linux metido dentro y tienes forma de compilar software para él, Tslib es tu respuesta.
Tslib se suele utilizar en muchos dispositivos embebidos para proporcionar la funcionalidad de la pantalla táctil a los programadores. Se utiliza en muchos dispositivos de este tipo, entre ellos el TomTom, el Nokia 770 o el que nos ocupará en esta receta: el Chumby
Preparándolo todo
Para poder compilar esta librería para el Chumby necesitarás tener lo siguiente:
- Un Chumby con acceso por SSH.
- Un entorno de desarrollo preparado para el Chumby.
- Un directorio compartido por NFS para pasarle al Chumby los ficheros (no es obligatorio, se puede hacer con un pendrive USB)
Una vez tengas todos estos ingredientes solo te queda ponerte manos a la obra:
Compilando Tslib
Para realizar la compilación primero entra en la jaula chroot para no guarrear nada. Supondré que has creado tu jaula en un directorio llamado chumby.
Una vez allí ve a tu home (con el fin de guarrear el sistema de ficheros lo menos posible) y descarga allí el código fuente. En este punto tienes dos posibles opciones: la versión publicada actualmente (1.0) o bajar la versión del repositorio subversion.
Opción A
Opción B
Sobra decir que si el comando anterior no te funciona tienes que instalar subversion dentro de tu chroot.
Usando el método que hayas usado conseguirás tener un directorio con el código fuente de Tslib en tu home. Entremos y realicemos lo siguiente:
Tras ello se creará en el directorio un script configure. Este script requiere de las autotools para utilizarse, así que ya sabes lo que tienes que instalar dentro de tu chroot, si no lo hiciste ya.
El script configure acepta multitud de argumentos. Para que funcione nuestra compilación cruzada, los parámetros que debemos decirle son:
Las opciones significan lo siguiente:
- —build=i686-pc-linux-gnu: es la arquitectura y SO dónde estás compilando. Si es diferente deberías cambiarla (utiliza la salida del script config.guess).
- —host=arm-linux: arquitectura y sistema operativo destino de la compilación. Hará que se busque si existe un compilador cruzado para esa arquitectura.
- —prefix=/mnt/nfs: es la ruta donde se copiarán los ficheros cuando hagamos la instalación. Es recomendable (aunque ni mucho menos obligatorio) que esta ruta sea la misma para el Chumby. Yo por ejemplo, dado que los ficheros se los paso al Chumby por NFS creo este directorio en el chroot y lo monto por NFS desde el Chumby en la misma ubicación.
Una vez hayas ejecutado el configure tan solo te quedarán los dos pasos más sencillos (pero más lentos) de todo el proceso:
¡OJO! Si al hacer make tienes un error relacionado con la funció rpl_malloc deberás abrir el fichero config.h y comentar la línea dónde aparece lo siguiente:
Una vez comentada vuelve a ejecutar make y todo debería ir bien. Por otra parte, make install copiará los ficheros generados a la ruta especificada por —prefix en el configure anterior.
Preparar el Chumby
Conéctate a tu Chumby por SSH y monta tu directorio por NFS en /mnt/nfs (o dónde más rabia te de) o pincha tu pendrive USB:
Para calibrar la pantalla ejecutaremos un programa con interfaz gráfica, por lo que es recomendable que matemos el panel de control del Chumby y habilitemos el FrameBuffer 0, que es dónde se mostrará esa interfaz:
Antes de intentar calibrar la pantalla debes asegurarte de lo siguiente:
- Tienes permiso de escritura en el directorio NFS/pincho USB desde el Chumby y NFS te lo permite.
- Edita el fichero /mnt/nfs/etc/ts.conf y des-comenta la línea del module_raw input
- Configura las variables de entorno para poder ejecutar el programa sin necesidad de indicarle la ruta completa ni dónde se encuentran las librerías. Para esto puedes crearte un fichero de configuración de las variables de entornos necesarias y ponerlo en tu directorio NFS/pincho USB para usarlo siempre que lo necesitemos:
Para no tener que ejecutar esto cada vez que quieras hacer alguna prueba puedes guardar las líneas anteriores en un fichero (por ejemplo, enviroment) y ejecutarlo cada vez que nos haga falta con:
Probando el invento
Para probar si hemos compilado/instalado todo correctamente necesitarías crear y compilar un programa usando las librerías de Tslib. Si tienes prisa y quieres probarlo ya :P estás de suerte: junto con la librería se compilan unos programas (que están en el directorio bin_). Uno de ellos es el primero que tendrás que ejecutar: *tscalibrate*
Cuando lo ejecutes deberá aparecerte en la pantalla del Chumby algo como esto:
Simplemente tienes que pulsar en la cruz tantas veces como va cambiando de sitio. En la terminal SSH podrśa ver cuando termina el proceso. Es importante que cuando termines compruebes que se ha creado un fichero llamado pointercal en el directorio /etc de tu directorio NFS/pincho USB.