触摸屏驱动剖析与移植
现在的ARM9等开发板都配备有触摸屏,移植QT程序更需要触摸库的支持,下面简要剖许下触摸库的结构以及如何移植。
1.编译
整体命令如下:
tar xvzf tslib-1.4.tar.gz
cd tslib-1.4.1
mkdir _install
./autogen.sh
echo"ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure--prefix=./_install/ --host=arm-linux av_cv_func_malloc_0_nonnull=yes--cache-file=arm-linux.cache
make
make install
通过上述操作,就可以在./_install目录下看到/bin、/etc、/include、/lib 4个文件夹,这些库和配置文件都是要拷到ARM板的根文件系统中的。
2.配置
2.1.修改/ etc/ts.conf
去掉module_raw input的注释符,行首文字是顶格,不然之后会出现段错误(segmentational fault)。
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
第一行是tslib从linux的输入设备读取数据时需要用到的模块,这里指定的模块为input,具体需要用到哪个模块,需要参考其他数据。
第二行的pthres为Tslib提供的触摸屏灵敏度门槛插件。
第三行的variance为Tslib提供的触摸屏滤波算法插件。
第四行的dejitter为Tslib 提供的触摸屏去噪算法插件。
第五行linear为Tslib提供的触摸屏坐标变换插件。
2.2.修改/etc/profile
添加内容如下:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0 #LCD设备驱动,事件驱动作用
export QWS_MOUSE_PROTO=tslib: /dev/event0
exportTSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal #触屏定位文件保存位置
exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #配置文件路径
exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #tslib 插件目录
export TSLIB_FBDEVICE=/dev/fb0 #LCD设备驱动结点,亮灭
export TSLIB_CONSOLEDEVICE=none
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib #动态链接库路径
if [ -f/sys/devices/virtual/input/input0/uevent ] ; then
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_CONFFILE=/etc/ts.conf
export set TSLIB_PLUGINDIR=/lib/ts
export set QWS_MOUSE_PROTO="TSLIB:/dev/event0Intellimouse:/dev/mouse0"
else
exportset QWS_MOUSE_PROTO="Intellimouse:/dev/mouse0"
fi