在编写完触摸屏的驱动程序以后,就可以使用通过编译tslib确定自己的驱动程序是否可以,也可以通过tslib调试自己对坐标的处理。
一、 编译
cd /root/imx27/tslib-1.3
export CC=arm-linux-gcc
./autogen.sh
echo “ac_cv_func_malloc_0_nonnull=yes”>arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no
如果触摸屏驱动程序支持ioctl操作,那么可以把configure的选项--enable-inputapi=no去掉。
在交叉编译TSLIB的时候出现了libtool:link: only absolute run-paths are allowed错误
解决方法:要修改/tslib/plugins/Makefile里面找rpath,找到将其注释并加上绝对路径。
找到:LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改为:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`
二、测试
2.1 在自己的nfs目录下创建了一个tslib目录,只copy一些需要的文件
mkdir /home/yuehy/rootfs/tslib
mkdir /home/yuehy/rootfs/tslib/tests
mkdir /home/yuehy/rootfs/tslib/plugins
mkdir /home/yuehy/rootfs/tslib/lib
mkdir /home/yuehy/rootfs/tslib/etc
2.2设置测试目录
cp /root/imx27/tslib-1.3/tests/.libs/ts_* /home/yuehy/rootfs/tslib/tests/ //几个所需的测试文件,比如生成的校准文件,测试文件等
cp /root/imx27/tslib-1.3/src/.libs/libts_0.0.so.0* /home/yuehy/rootfs/tslib/lib/ //程序运行需要的库文件
cp /root/imx27/tslib-1.3/src/.libs/libts.so /home/yuehy/rootfs/tslib/libts.so //程序运行需要的库文件
cp /root/imx27/tslib-1.3/plugins/.libs/*.so /home/yuehy/rootfs/tslib/plugins/ //触摸屏插件模块库。
cp /root/imx27/etc/ts.conf /home/yuehy/rootfs/tslib/etc/ //配置文件
2.3 环境变量设置:
由于程序中默认的帧缓冲设备为/dev/fb0,所以要检查自己开发板的具体情况,要是帧缓冲设备不是/dev/fb0的话,做个链接产生/dev/fb0即可。
2.3设定环境变量
export QWS_MOUSE_PROTO=TPanel:/dev/ts //此处填写触摸屏的设备节点
export T_ROOT=/tslib
export LD_LIBRARY_PATH=$T_ROOT/lib //指定tslib库文件路径
export TSLIB_CONSOLEDEVICE=none //tslib运行需要的控制台,这里就是LCD屏幕,设定控制台设备为none,否则默认为/dev/tty
export TSLIB_FBDEVICE=/dev/fb0 //指定帧缓冲设备
export TSLIB_TSDEVICE=/dev/ts //指定触摸屏设备节点文件
export TSLIB_TSEVENTTYPE=H3600 //对tslib的设备结构体定义。
export TSLIB_CALIBFILE=$T_ROOT/etc/pointercal //指定触摸屏校准文件pintercal的存放位置。在设定这个文件的位置时候,要注意存放校准文件的位置是否允许读写,校准文件一定要存放在允许读写的位置。
2.4 校准
行校准程序校准屏幕(5点校准)
cd $T_ROOT/tests
./ts_calibrate //板子上陆续出现5个光标,点击完毕后会生成校准文件pintercal存放在$T_ROOT/etc/下
ts_calibrate 是一个应用程序,在屏幕上画几个十字,将用户点击后从触摸屏驱动获得的数据和屏上的坐标通过一套算法来获得校准数据写入到校准文件当中。
再继续测试
./ts_test //这时LCD上出现光标,要是前面操作都是正确的话,光标应该指哪打哪的,点在哪个地方,光标就出现在哪个地方。要是点了之后,光标没有任何的动作,那么要仔细查看ts.conf的配置文件了。
我自己的ts.conf里面的内容是:
#module mousebuts
module variance xlimit=50 ylimit=50 pthreshold=3
module dejitter xdelta=1 ydelta=1 pthreshold=3
module linear
要是发生光标没有任何反应,可以尝试只保留:module linear,先把其他的屏蔽掉,这个需要自己反复进行调试。
三、错误
出现错误,不外乎就是库文件找不到,仔细阅读一下错误提示都是应该解决的。
以上所述只是在自己的开发环境中进行了测试,可能不同的环境导致的问题不一样,根据自己的具体情况进行分析即可。