实现触摸板的功能,需要借助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就是可以实时获得光标的坐标。