itop-3568 开发板文件系统构建学习笔记(4)tslib 移植与使用

《【北京迅为】itop-3568 开发板文件系统构建手册v1.0.pdf》学习笔记

tslib 简介

Tslib是一个跨平台库,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能。它能支持 Linux 中与输入子系统有关的所有设备。

下载 tslib

tslib 下载地址:https://github.com/libts/tslib/releases

我直接选择下载当前的最新版本,tslib 1.22,

在这里插入图片描述

编译 tslib

将压缩包复制到虚拟机开发系统,然后解压,编译 tslib 前,先确认当前系统的交叉编译器是否加入环境变量,

在这里插入图片描述

进入 tslib 源文件夹,执行 autogen.sh,如果出现了如下报错,可以通过 sudo apt-get install autoconf automake libtool 解决

在这里插入图片描述

在这里插入图片描述

运行 ./configure --host=aarch64-linux-gnu -prefix=/home/topeet/Linux/tslib-1.22/_install ac_cv_func_malloc_0_nonnull=yes 生成 Makefile 文件,交叉编译器和安装路径根据实际情况填写,另外安装目录需要填绝对路径,

在这里插入图片描述
我们可以通过查看生成的 Makefile 文件的 CC 值判断上一步配置是否正确,

在这里插入图片描述

然后依次执行 makemake install 进行编译和安装

在这里插入图片描述

安装完成后,在安装目录下生成了我们需要移植的文件,

在这里插入图片描述

移植 tslib

临时移植

将安装路径下的所有文件打包,通过网络或 U 盘将压缩包复制到开发板中,

在这里插入图片描述

在开发板进行解压缩,

在这里插入图片描述
但是这里遇到一个奇怪的问题,链接文件创建失败,

在这里插入图片描述

后来发现是 U 盘的文件系统不支持软链接,如果解压时通过 -C 将解压目标路径改到开发板系统,就不会出现上面的问题,

在这里插入图片描述
在这里插入图片描述

重命名 tslib 根目录,然后将其复制到 /opt(用户软件放到一起,方便管理,复制时要加上保留文件属性的参数,如 -a,确保链接关系不被破坏),

在这里插入图片描述

修改 tslib 配置(/etc/profile

在 /etc/profile 增加以下内容,第一行时获取当前系统触摸屏对应的输入设备名,针对 itop-3568 所支持的两份驱动,

#TSLIB 配置
EVENT=$(cat /proc/bus/input/devices | grep -E 'ft5x06|goodix-gt911' -A4 | tail -n1 | head -c 95 | cut -c13-18)
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_ROOT=/opt/tslib-1.22
export TSLIB_TSDEVICE=/dev/input/$EVENT
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QT_QPA_GENERIC_PLUGINS=tslib
#将 TSLIB 的 bin/ 和 lib 添加到相应环境变量 
export PATH=$PATH:$TSLIB_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

修改完成后,source /etc/profile 或重启系统,然后可以运行 tslib 的工具了(ts_calibrate 用于校准,ts_test 用于画线测试)

在这里插入图片描述

画线测试,

在这里插入图片描述

移植到镜像

在根文件系统文件夹的 opt/ 目录下创建 tslib-1.22 文件夹,然后将 tslib 安装目录下的所有文件拷贝到 opt/tslib-1.22 目录,

在这里插入图片描述

修改根文件系统的 etc/proflie,增加 tslib 配置,

#TSLIB 配置
EVENT=$(cat /proc/bus/input/devices | grep -E 'ft5x06|goodix-gt911' -A4 | tail -n1 | head -c 95 | cut -c13-18)
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_ROOT=/opt/tslib-1.22
export TSLIB_TSDEVICE=/dev/input/$EVENT
export TSLIB_TSEVENTTYPE=input
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QT_QPA_GENERIC_PLUGINS=tslib
#将 TSLIB 的 bin/ 和 lib 添加到相应环境变量 
export PATH=$PATH:$TSLIB_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

在这里插入图片描述

移植完 tslib 后,下一步需要将根文件系统制作成镜像,操作步骤如下:

在这里插入图片描述

将 rootfs.ext4 挂载到 rootfs/,然后将根文件系统的所有文件拷贝到 rootfs/,取消挂载后,将 roofs.ext4 复制成 rootfs.img,

在这里插入图片描述
最后,通过相关工具将 rootfs.img 烧录到开发板上。机器开机后,能够直接运行 ts_xxx,tslib 移植成功。

在这里插入图片描述


我移植的 tslib 存在一个问题,每次重启后直接运行 ts_xx 相关工具,串口终端显示了程序在运行(没报错),屏幕却没有反应,但只要我随便运行一个 QT 程序(然后退出),再运行 ts_xx,又能正常显示。。。上篇笔记中,QT 编译配置脚本 autoconfigure.sh 里有两行关于 tslib 库的配置,不知 ts_xx 开机不能运行是否与 QT 编译配置有关。

猜你喜欢

转载自blog.csdn.net/weixin_43772810/article/details/129142239