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
Para poder compilar esta librería para el Chumby necesitarás tener lo siguiente:
Una vez tengas todos estos ingredientes solo te queda ponerte manos a la obra:
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.
$ sudo chroot 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.
CHROOT@Chumby:~# wget http://prdownload.berlios.de/tslib/tslib-1.0.tar.bz2
CHROOT@Chumby:~# svn co svn://svn.berlios.de/tslib/trunk/tslib tslib-svn
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:
CHROOT@Chumby:~# cd tslib-XXXX CHROOT@Chumby:tslib-XXXX# ./autogen.sh
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:
CHROOT@Chumby:tslib-XXXX# ./configure --build=i686-pc-linux-gnu --host=arm-linux --prefix=/mnt/nfs
Las opciones significan lo siguiente:
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:
CHROOT@Chumby:tslib-XXXX# make CHROOT@Chumby:tslib-XXXX# make install
¡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:
#define malloc rpl_mallocUna 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.
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:
chumby:~# mount -t nfs -o nolock usuario@host:/home/usuario/chumby/mnt/nfs /mnt/nfs
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:
chumby:~# stop_control_panel
chumby:~# echo 0 > /proc/driver/imxfb/enableAntes de intentar calibrar la pantalla debes asegurarte de lo siguiente:
export HOME=/mnt/nfs/root export PATH=$PATH:/mnt/nfs/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs/lib export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_PLUGINDIR=/mnt/nfs/lib/ts export TSLIB_CONSOLEDEVICE=/dev/ttyS0 export TSLIB_CONFFILE=/mnt/nfs/etc/ts.conf export TSLIB_CALIBFILE=/mnt/nfs/etc/pointercal export POINTERCAL_FILE=/mnt/nfs/etc/pointercal export QWS_MOUSE_PROTO=Tslib:/dev/input/event0 export QWS_KEYBOARD=USB:/dev/input/event1
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:
chumby:~# source enviroment
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
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: ts_calibrate
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.