嵌入式设备中触摸屏使用非常广泛,但触摸屏的坐标和屏的坐标是不对称的,需要校准。目前广泛使用的是开源的tslib。
一、环境介绍
1 主机:虚拟机下fedora9
2 硬件平台:mini2440
3 交叉编译器:arm-linux-gcc-4.3.2
4 触摸屏适配层源码:tslib-1.4.tar.gz
二、解压tslib-1.4.tar.gz
1 cd tslib/
2 ./autogen.sh //用于生产configure
3 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
4 ./configure --host=arm-linux --cache-file=arm-linux.cache -- enable-inputapi=no -prefix=/usr/local/tslib
//配置成将生成的文件安装到/usr/local/tslib目录
5 make
6 make install
编译和安装后在主机的/usr/local/tslib目录下看到编译好的程序和库。
三、交叉编译Qt时在./configure 后加上 --qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib ,然后gmake,make install,把生成的lib库下载到开发板上。
四、配置并加入到根文件系统
vi /usr/local/tslib/etc/ts.conf
//修改tslib/etc目录下的ts.conf文件,将module_raw input前面的注释去掉。
最后内容如下:
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
然后打包整个tslib的内容,下载到开发板里的对应路径下(/usr/local下)。
//以下步骤是在超级终端完成
五、在根文件系统的etc/profile文件中加入运行tslib的环境变量
vi /etc/profile
添加如下内容:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO='tslib:/dev/input/event0"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
六、设定Qtopia运行必要的环境
vi /bin/qtopia
最后内容为:
#!/bin/sh
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export LD_LIBRARY_PATH=/mini2440/lib:/usr/local/tslib/lib:$LD_LIBRARY_PATH
export QWS_KEYBOARD=TTY:/dev/tty1
export KDEDIR=/opt/kde
export HOME=/root
exec /opt/Qtopia/bin/qpe 1>/dev/null 2>/dev/null
保存退出。
七、测试
以上都配置好后,在终端下,运行ts_calibrate进入触摸屏的五点校准,至此,tslib的安装移植成功完成。