tslib源码:https://github.com/kergoth/tslib.git
编译器:arm-linux-gcc
目标板:广州斯道6410
1、编译前准备工作
1) 编译tslib需要用到autoconf这个工具,首先安装之:#apt-get install autoconf
2) 获取源码:
这里需要git ,安装之:apt-get install git。
使用#git clone https://github.com/kergoth/tslib.git /home/work/tslib
/home/work/tslib 是个人的工作目录。源码获取成功。
2、编译
1) # cd /home/work/tslib
# ./autogen.sh //运行配置文件
#./configure CC=arm-linux-gcc --prefix=/home/work/mytslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
//--prefix=/home/work/mytslib 为make install的安装路径
#make
#make install
2)到此会在/home/work/mytslib目录下生成4个文件夹 bin/ etc/ lib/ include/,修改./etc/ts.conf 文件,
改为
module_raw input #使用input输入子系统
module pthres pmin=1 #最低灵敏输入门槛
module variance delta=30 #触摸屏滤波算法插件
module dejitter delta=100 #触摸屏去噪算法插件
module linear #触摸屏坐标变换插件
3、安装
1) 将编译好的/home/work/mytslib/目录复制到开发板 /usr/local/下
2)配置tslib运行的环境变量。将一下内容添加到/etc/profile
#!/bin/sh
export TSLIB_ROOT=/usr/local/mytslib
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_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH
添加完成以后执行#source /etc/profile
TSLIB_TSDEVICE //触摸设备 TSLIB_CALIBFILE //校准数据存放文件 TSLIB_CONFFILE //tslib的配置文件 TSLIB_PLUGINDIR //插件目录 TSLIB_FBDEVICE //显示设备 LD_LIBRARY_PATH //共享库路径4、校准触摸屏
#cd /usr/local/mytslib/bin5、移植过程中遇到的错误
#./ts_calibrate
错误1:
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: Error 40
./ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory
解决办法:
#echo $LD_LIBRARY_PATH //查看lib路径,
#export LD_LIBRARY_PATH=$TSLIB_ROOT/lib
错误2:
ts_open: No such file or directory
解决办法:
#export TSLIB_TSDEVICE=/dev/input/event0 //触摸屏设备路径
错误3:
Couldnt open tslib config file: No such file or directory ts_config: Illegal seek
解决办法:
#export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
错误4:
Couldnt load module pthres
No raw modules loaded.
ts_config: Success
解决办法:
#export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
错误5:
No raw modules loaded.
Ts_config: No such file or directory
解决办法:
修改$TSLIB_ROOT/etc/ts.conf, 至少有一个module_raw
注:在触摸驱动程序中须得添加对ABS_X和ABS_Y的时间支持
结束语:历时3天终于完成了,不过位置有点不准。以前做过Android上的触摸驱动,得到触摸数据之后直接上报给input子系统就OK了,Android上层会自动处理的,做完之后比起来还是Android好移植。
刚开始说要在QT上做触摸的时候,不知道从哪下手,刚开始是沿用Android的那套方式,数据可以上报,但是没有反应,因为没有程序处理上报的数据。。。
后来是各种百度和google才找到了tslib。
第一次把做的东西写下来