目录
tslib触摸校准库的移植与使用
tslib是一个开源的第三方库。常用于对触摸屏的功能调试,对于触摸屏一般电阻触摸屏需要进行校准,而电容触摸屏一般不需要进行校准。下面开始对tslib库进行移植。
开发环境
debian10系统、RK3568开发板、PC主机(Ubuntu18.04)
一、获取tslib库的源码
tslib官网下载链接如下:
Releases · libts/tslib · GitHub
最新版本为tslib 1.23版本,这里我们下载 tslib-1.21.tar.gz 这个文件。
二、拷贝源码压缩包到Ubuntu主机并解压
首先使用以下命令在Ubuntu主机下创建一个tslib文件夹:
mkdir tslib
然后使用filezilla工具将下载的源码包发送给Ubuntu主机,放入到刚新建的tslib文件夹中。
接着在Ubuntu主机中使用以下命令进行解压:
tar xvf tslib-1.21.tar.gz
解压后得到tslib-1.21文件夹。
三、配置交叉编译工具链
首先,找到编译开发板内核时使用的交叉编译工具链目录,对于RK3568开发板,它的路径为:
SDK_TOP/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
其中:
SDK_TOP是存放RK3568的SDK包的顶层目录。这个需要根据实际存放的目录确定。
由于RK3568是64位的,它使用的交叉编译器为:
aarch64-linux-gnu-gcc
1、可以打开终端,使用以下命令配置RK3568的交叉编译工具链:
export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- export PATH=$PATH:SDK_TOP/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
注意:上面命令中的SDK_TOP需要按照实际的路径进行修改。
2、以上的配置还可以通过配置 .bashrc文件进行修改:
打开 .bashrc文件,将以上修改后的命令加入到文件的末尾,保存退出。之后使用以下命令更新.bashrc。
source .bashrc
完成以上配置后可以使用以下命令进行测试配置是否成功:
aarch64-linux-gnu-gcc -v (使用 交叉编译工具器 -v 命令 打印交叉编译器的版本号)
如果能打印出交叉编译器的版本号,则配置成功。
四、编译tslib源码
在编译tslib的源码之前,首先使用以下命令安装相关工具:
sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool
接着,在tslib-1.21源码目录下,依次使用以下命令配置编译tslib库:
./configure --host=aarch64-linux-gnu --prefix=/
其中
--host用来指定交叉编译器,这个交叉编译器要和自己使用的对应;
--prefix用来指定宏TS_CONF路径为/etc/ts.conf;
make
make install DESTDIR=$PWD/tmp
其中
DESTDIR用来指定编译完待使用的文件路径在tslib-1.21文件夹下的tmp目录中。
执行完以上命令,在tslib-1.21目录下会有一个tmp文件夹,其下有以下五个文件夹:
bin etc include lib share
至此,tslib库已经编译成功。
五、将编译出来的相关文件拷贝到Linux开发板
首先,在ARM开发板上也创建一个名为tslib的文件夹。
接着可以使用NFS网络文件系统将上面编译出的五个文件夹拷贝到新创建的tslib文件夹中。
然后进入开发板的tslib目录,使用以下命令拷贝相关库文件和可执行文件到开发板目录中:
cp lib/*so* -d /lib
cp lib/ts /lib -rf
cp bin/* /bin
cp etc/ts.conf -d /etc
再接着打开/etc/ts.conf配置文件,找到这一行:
module_raw input
查看前面是否使用#号进行了屏蔽,如果有#号屏蔽的话,去掉#号。然后保存退出。
最后打开/etc/profile文件,将以下命令添加到文件末尾:
export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=/etc/ts.conf export TSLIB_PLUGINDIR=/lib/ts export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0
这里需要注意,环境变量TSLIB_TSDEVICE是表示触摸屏设备的文件,后面的event1需要根据实际情况进行确定。
可以使用以下命令查看自己的触摸屏设备的相关信息及event文件的序号:
cat /proc/bus/input/devices
环境变量TSLIB_CALIBFILE表示校准文件,这个文件在校准后会自动生成。
环境变量TSLIB_CONFFILE是触摸配置文件。
环境变量TSLIB_PLUGINDIR表示插件文件的位置。
环境变量TSLIB_CONSOLEDEVICE表示控制台,这里使用none不进行设置。
环境变量TSLIB_FBDEVICE表示屏幕设备。这里需要根据实际情况确定。
经过上面的流程,tslib在ARM开发板上就配置好了,接着重启开发板进行测试。
六、测试tslib库
对于触摸屏一般电阻屏需要进行校准,而电容屏一般不需要进行校准。
1、电阻屏校准使用以下命令:
ts_calibrate
执行命令后,屏幕上会出现十字架,依次点击屏幕上的十字架即可生成/etc/pointercal校准文件。
2、对于多点触摸屏,使用以下命令进行测试即可:
ts_test_mt
完结。。。