一、tslib介绍:
tslib tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入 设 备 添 加 各 种 “ filter。
主要框架:
核心在于“plugins”目录里的“插件”,或称为“module”。这个目录下的 每个文件都是一个 module,每个 module 都提供 2 个函数:read、read_mt,前 者用于读取单点触摸屏的数据,后者用于读取多点触摸屏的数据。
二、获取压缩包,解压,进入目录
我所使用的是韦老师在文件中提供的压缩包 tslib-1.21.tar.xz ,在文件所在目录下右键打开终端,输入以下命令进行解压。
tar xJf tslib-1.21.tar.xz
解压后会得到 tslib-1.21 文件夹,使用 cd 命令进入该文件夹。
cd tslib-1.21
三、配置编译工具链
依次执行以下命令,工具链和目录要根据自己的实际情况修改,如果工具链是 arm-linux-gnueabihf 就不要更改。
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
四、交叉编译tslib
依次执行以下命令
./configure --host=arm-linux-gnueabihf --prefix=/
make
make install DESTDIR=$PWD/tmp
五、确定工具链中头文件、库文件目录
使用以下命令
echo 'main(){}'| arm-linux-gnueabihf-gcc -E -v -
得到图中所示的工具链头文件目录
库目录就是把最后的include换成lib。如果工具链和我一样就应该是以下两个文件夹。
//库文件:
/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/
//头文件:
/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include
六、将编译好的头文件和库文件拷贝到工具链目录下
执行以下命令
cd tslib-1.21/tmp/
cp include/* /home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include
cp -d lib/*so* /home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/
七、将编译好的文件拷贝到开发板
启动开发板,将开发板挂载到ubuntu,执行 以下命令。
cp /mnt/tslib-1.21/tmp/lib/ts /lib
cp /mnt/tslib-1.21/tmp/bin/* /bin
cp /mnt/tslib-1.21/tmp/etc/ts.conf -d /etc
八、测试tslib
首先需要关闭开发板的默认界面,进入到开发板的 /etc/init.d 文件夹下,可以看到如下内容。
其中的 S99myirhmi2 和 S05lvgl 就是开机时后显示的两个界面文件,它们会与tslib的测试程序冲突,所以需要先移除。
韦老师讲解链接:1-3_关闭默认UI、关闭自动息屏_哔哩哔哩_bilibili
使用以下两条命令把它们先移除出去,如果后面想让它再显示就再移回来。
mv /etc/init.d/S99myirhmi2 /root
mv /etc/init.d/S05lvgl /root
移回来的命令
mv /root/S99myirhmi2 /etc/init.d
mv /root/S05lvgl /etc/init.d
然后重启开发板,运行测试程序
reboot
ts_test_mt
九、 遇到的问题
运行程序的时候可能会出现 ts_config 和 ts_setup 报错。
解决方法:
进入单板/etc/profile添加以下的触摸屏支持环境变量
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE=/dev/event1
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/lib/ts
//event fb 根据实际情况