GZSD 6410 基于QT的触摸屏(tslib)移植记录

时间:2021-07-13 12:28:14

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/bin
#./ts_calibrate
5、移植过程中遇到的错误

错误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天终于完成了,不过位置有点不准GZSD 6410 基于QT的触摸屏(tslib)移植记录。以前做过Android上的触摸驱动,得到触摸数据之后直接上报给input子系统就OK了,Android上层会自动处理的,做完之后比起来还是Android好移植。

刚开始说要在QT上做触摸的时候,不知道从哪下手,刚开始是沿用Android的那套方式,数据可以上报,但是没有反应,因为没有程序处理上报的数据。。。

后来是各种百度和google才找到了tslib。

第一次把做的东西写下来GZSD 6410 基于QT的触摸屏(tslib)移植记录