IMX6ULL开发板tslib编译与测试

一、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 文件夹下,可以看到如下内容。

其中的 S99myirhmi2S05lvgl 就是开机时后显示的两个界面文件,它们会与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 根据实际情况

参考文章:IMX6ULL tslib移植出现的问题及解决-优快云博客

### 如何在 Buildroot 环境中进行触屏校准 #### 使用 `tslib` 进行触摸屏校准 对于嵌入式 Linux 设备,在 Buildroot 环境下可以利用 `tslib` 来实现触摸屏的校准工作。当遇到像正点原子 IMX6ULL 开发板这样的硬件平台,如果移植 Qt 后发现存在触摸屏响应不正常的情况,则可以通过集成并配置 `tslib` 库来解决这个问题。 为了使 `tslib` 正确运作于目标设备上,需要先确认该库已被加入到构建系统之中[^1]。接着按照如下方式操作: - **编译部署** 确保已经通过 Buildroot 构建好了包含 `tslib` 的镜像,并将其烧录至开发板启动。随后将主机上的 `tslib` 文件夹复制到 ARM 平台的目标路径 `/opt/tslib/` 下面[^3]。 - **执行测试命令** 连接好串口调试线缆之后打开终端模拟器,登录进入开发板后尝试运行以下 shell 命令来进行初步检测: ```bash cd /opt/tslib/bin/ ./ts_test ``` 此时应该可以看到一个简单的图形界面弹出;虽然可能呈现黑色背景,但是用手点击屏幕任意位置时应当能在控制台上观察到相应的坐标输出信息。这表明基本驱动层面上触摸功能是正常的。 - **正式校准流程** 由于直接使用 `xinput-calibrator` 工具依赖 X Window System (X11),而在很多精简版的嵌入式环境中并不一定支持此环境,因此推荐采用更适合的方式——即借助 `ts_calibrate` 实现触摸屏参数调整。具体做法是在上述相同目录内键入下面这条指令开启交互式的校准向导程序: ```bash ./ts_calibrate ``` 根据提示完成五点定位即可获得一组新的转换矩阵用于修正原始数据偏差,最终达到提高精度的目的。保存设置完毕以后记得重启服务让改动生效。 另外值得注意的是,某些情况下还需要编辑 weston 配置文件以适应特定需求,比如改变显示方向等特性。这时可参照类似方法找到对应的 ini 文件做出相应更改[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值