TSLIB调试记录

主芯片:TI-DM8168
Linux版本:2.6.37

笔记是在wiznote做的,图片无法复制过来,可以在这个 址看到我的笔记

最近2周基本上都在调试触摸屏和WG225模块,抽时间做一个总结。
Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口,因为这个原因,我这边的电容触摸屏是采用tslib提供的程序进行校准

首先在官 下载源码压缩包
https://github.com/libts/tslib/releases
一开始选择的版本是最新版本1.20,后来没有调试成功,改用老版本tslib-1.4.tar.gz
压缩包要在linux系统下进行解压
解压后,可以使用chmod 777 -R 改变整个递归目录的权限,否则可能出现Permission denied的 错,所以每次运行指令要加sudo,我的sudo执行环境变量也是改过的,增加了gcc所在的bin目录

运行脚本

如果 错,可能是因为某些软件没有安装,根据 错提示百度即可,也可以先装以下三个软件尝试以下

运行配置脚本,host指定在ARM核上运行,而不是电脑的x86,prefix指定安装路径(通过NFS很方便的挂载到板子上)

进行编译和安装

首次编译 错如下

个人猜测是因为内核版本比较老,相关的定义在内核中头文件中没有
不过问题不大,在tslib库中的头文件自己声明一下就行了(src/tslib.h)
在/src/tslib.h的如下位置加如下的宏

修改之后,编译通过

将编译好的文件安装到指定的目录下,就是刚刚用prefix指定的目录
执行make install
可以看到编译后的内容已经复制到这里

在Bin目录下有一些测试用的二进制文件,在执行这些文件前,需要进行一些配置
配置1:修改/etc/profile

设置这些之后,使用source命令使设置的环境变量生效,或者重启
在ARM板子上运行以下程序进行校准和测试

我调试的屏型 是ST-2511-001,分辨率2K
因为获取到的键值有问题,始终无法进行校准和测试
正常情况下,触摸屏幕会发出类型为EV_KEY的键值,按下发1,抬起发0,而且一次触摸事件,只发送一次0和1
我这边的实际情况是,只要按下不松手,就不停的发0和1
对于这种特殊情况,我仔细阅读了tslib的源码后,针对键值的特点,对源码进行了相应的修改

只需要修改tslib-1.4pluginsinput-raw.c 这个文件中的ts_input_read函数
分析了键值后,发现每次触摸过程,最后4个键值一定是EV_SYN、EV_ABS、EV_ABS、EV_SYN
并且此处的EV_ABS并不是ABS_X或者ABS_Y,而是ABS_MT_TOUCH_MAJOR等,因此忽略掉此型 后,即可认为最后收到两个连续的EV_SYN,当检测到两个连续的EV_SYN时,认为是触摸的抬起动作

具体代码的更改如下
增加了static int lastType = -1;用于记录上一次检测到的键值类型

函数末尾对上一次的键值进行记录

最后更改了退出的条件
在SYN的检测中屏蔽了之前的条件,加入了新的退出条件

最后,将编译后的/rootfs/tslib目录拷贝到板子上,方便以后的校准

利用hexdump读取数据

参考https://blog.csdn.net/weixin_42462202/article/details/84963795
我读取出来的数据就很奇葩
0000000 dff3 5ef0 13ca 0003 0004 0004 0042 000d EV_MSC MSC_SCAN
0000010 dff3 5ef0 13d9 0003 0001 014a 0001 0000 EV_KEY BTN_TOUCH 1
0000020 dff3 5ef0 13e3 0003 0003 0000 2c7a 0000 EV_ABS ABS_X
0000030 dff3 5ef0 13ec 0003 0003 0001 11ae 0000 EV_ABS ABS_Y
0000040 dff3 5ef0 1412 0003 0004 0004 0042 000d EV_MSC MSC_SCAN
0000050 dff3 5ef0 1416 0003 0001 014a 0000 0000 EV_KEY BTN_TOUCH 0
0000060 dff3 5ef0 14eb 0003 0003 0030 0000 0000 EV_ABS ABS_MT_TOUCH_MAJOR
0000070 dff3 5ef0 150c 0003 0003 0031 0000 0000 EV_ABS ABS_MT_TOUCH_MINOR
0000080 dff3 5ef0 1529 0003 0003 0032 ea20 0004 EV_ABS ABS_MT_WIDTH_MAJOR
0000090 dff3 5ef0 1536 0003 0003 0033 0001 0000 EV_ABS ABS_MT_WIDTH_MINOR
00000a0 dff3 5ef0 1539 0003 0000 0000 0000 0000 EV_SYN

00000b0 dff3 5ef0 282e 0003 0004 0004 0042 000d EV_MSC
00000c0 dff3 5ef0 2838 0003 0001 014a 0001 0000 EV_KEY BTN_TOUCH 1
00000d0 dff3 5ef0 285d 0003 0004 0004 0042 000d EV_MSC
00000e0 dff3 5ef0 2860 0003 0001 014a 0000 0000 EV_KEY BTN_TOUCH 0
00000f0 dff3 5ef0 2917 0003 0003 0030 0000 0000 EV_ABS ABS_MT_TOUCH_MAJOR
0000100 dff3 5ef0 293a 0003 0003 0031 0000 0000 EV_ABS ABS_MT_TOUCH_MINOR
0000110 dff3 5ef0 2960 0003 0003 0032 ea70 0004 EV_ABS ABS_MT_WIDTH_MAJOR
0000120 dff3 5ef0 296b 0003 0003 0033 0001 0000 EV_ABS ABS_MT_WIDTH_MINOR
0000130 dff3 5ef0 296e 0003 0000 0000 0000 0000 EV_SYN

00007a0 dff3 5ef0 67fb 0004 0003 0030 0000 0000 EV_ABS ABS_MT_TOUCH_MAJOR
00007b0 dff3 5ef0 682b 0004 0003 0031 0000 0000 EV_ABS ABS_MT_TOUCH_MINOR
00007c0 dff3 5ef0 6848 0004 0003 0032 ede0 0004 EV_ABS ABS_MT_WIDTH_MAJOR
00007d0 dff3 5ef0 6851 0004 0003 0033 0001 0000 EV_ABS ABS_MT_WIDTH_MINOR
00007e0 dff3 5ef0 6855 0004 0000 0000 0000 0000 EV_SYN

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年8月15日
下一篇 2019年8月15日

相关推荐