实现触摸板的功能,需要借助tslib工具,大致过程为:
1、利用mipsel编译tslib工具。
2、然后在QT4的编译中添加tslib的相关配置。
3、将生成的tslib和QT4的库文件移植到龙芯1B核心板中,并修改核心板的环境变量
4、对触摸板进行矫正。


Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

TSLIB下载传送门:https://github.com/kergoth/tslib
我是用的系统为ubuntu18.04,所使用的交叉编译工具为mipsel-linux,使用的qt开源库为4.8.6版本。
一、编译tslib库
核心语句为:

  ./configure  --prefix=/opt/tslib-mipsel/ 
 --host=mipsel-linux
  ac_cv_func_malloc_0_nonnull=yes

执行make,make install成功后,会在指定目录下生成bin、include、lib、etc四个文件夹。

二、交叉编译QT4

vi mkspecs/qws/linux-mips-g++/qmake.conf

作如下修改
mips-linux-gcc mipsel-linux-gcc
misp-linux-g++ mipsel-linux-g++
mips-linux-ar mipsel-linux-ar
mips-linux-objcopy mipsel-linux-objcopy
mips-linux-strip mipsel-linux-strip
而后修改linux.conf文件

vi mkspecs/common/linux.conf

添加如下内容

QMAKE_LIBS_THREAD = -lpthread -lts

然后就是最为重要的配置文件

# ./configure -prefix /opt/qt4.8.6-mipsel 
-opensource  //使用QT的开源版本
-release   //不进行调试
-shared   //使用共享库
-fast   //利用共享库和子目录进行快速配置
-qt-sql-sqlite   //使用qt的该数据库
-no-qt3support -no-phonon -no-phonon-backend -no-webkit 
-no-javascript-jit -no-mmx -no-3dnow -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 
-no-sse4.2 -no-avx -no-neon -qt-zlib -no-libtiff -no-libmng -qt-libjpeg -qt-libpng 
-no-openssl -nomake examples -nomake demos -nomake tools -nomake docs 
-optimized-qmake -no-nis -no-cups -pch -no-dbus -no-gtkstyle -no-nas-sound -no-opengl 
-no-openvg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes 
-no-xrandr -no-xrender -no-mitshm -no-xinput -no-xkb -no-glib -no-separate-debug-info 
-no-qvfb -qt-gfx-linuxfb -no-gfx-vnc -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb 
-no-gfx-transformed -no-gfx-multiscreen -depths 8,16,24,32 -qt-freetype -little-endian 
//以上内容大部分为不适用某功能,以裁剪QT的功能,减小大小,加快编译
-xplatform qws/linux-mips-g++   //交叉编译工具的目录
-embedded mips   //mips架构的嵌入式
-qt-mouse-tslib  //使用触摸屏的功能
-I/opt/tslib-mipsel/include -L/opt/tslib-mipsel/lib  指定触摸屏头文件和库文件的目录

上述具体的配置内容,不过多解释,可以通过help命令自行查看。

./configure -help

三、移植tslib和QT4的库文件
我利用nfs进行移植,不多赘述,各显神通。
在/opt目录下创建两个文件夹,一个存放tslib的库文件,一个存放QT4的库文件。

# mkdir opt
# cd opt
# mkdir qt4lib tslib
# cp /mnt/tslib-mipsel/lib /mnt/tslib-mipsel/etc /opt/tslib/ -rd
# cp /mnt/tslib-mipsel/bin/ts_calibrate /mnt/tslib-mipsel/bin/ts_test /bin/
# cp /mnt/qt4.8.6-mipsel/lib /opt/qt4lib/ -rd
# cp /mnt/qt4.8.6-mipsel/plugins /opt/qt4lib/ -rd

-rd的d表示拷贝时保留文件的链接。
以下是重点内容,修改配置文件,修改龙芯1B的环境变量:

# vi /etc/profile

修改或者添加以下内容

export QTDIR=/opt/qt4lib  //注入QT4的目录文件,定义为QTDIR
export QT_PLUGIN_PATH=$QTDIR/plugins/  //注入QT4的plugins文件夹的内容
export T_ROOT=/opt/tslib/    //注入tslib的目录文件,定义为T_ROOT
export PATH=$QTDIR/bin:$PATH  
export TSLIB_CONSOLEDEVICE=none  //控制台设备文件名
export TSLIB_FBDEVICE=/dev/fb0  //设备名
export TSLIB_TSDEVICE=/dev/input/event0  //触摸屏设备的驱动目录
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts  //插件目录
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf   //配置文件的目录
export TSLIB_CALIBFILE=/etc/pointercal   //校准的数据文件,由ts_calibrate校准程序生成,QT文件也将使用此文件
export TSLIB_TSEVENTTYPE=INPUT  //类型为输入
export QWS_MOUSE_PROTO=tslib:/dev/input/event0  //这一条很重要,在QT的可视化界面中的指针驱动目录,与上面的TSDEVICE相同。如果是使用鼠标操作,需要将此条注释掉。
export QT_QWS_FONTDIR=/opt/qt4lib/lib/fonts   //QT界面的文字库
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH   //库文件目录

然后修改ts.conf文件

# vi /opt/tslib/etc/ts.conf

将module_raw input前面的“#”去掉。
然后重启开发板。

四、矫正触摸板

#ts_calibrate

依次点击五个点,则会在核心板的根目录下的etc文件夹中,生成pointercal文件。可以利用

#ts_test

进行测试,其中的draw功能就是可以画线,drag就是可以实时获得光标的坐标。

Last modification:December 7th, 2019 at 04:26 pm
如果觉得我的文章对你有用,请随意赞赏