24、TSP测试工具:tslib、evtest、触摸屏测试APK
做驱动开发这些年,我有个习惯——拿到一块新触摸屏,先不急着调参数,而是先跑一遍测试工具。为什么?因为工具能告诉你最原始的数据,比看代码直观多了。今天咱们就聊聊三款我常用的TSP测试工具:tslib、evtest,还有那些触摸屏测试APK。
24.1 底层调试利器:evtest
evtest 是我个人最常用的工具,没有之一。它直接读取Linux内核的输入事件,说白了就是看驱动上报的原始数据。
安装与使用
# 安装
sudo apt-get install evtest
# 查看所有输入设备
evtest --grab /dev/input/eventX
# 或者先列出设备
sudo evtest
运行后会看到类似这样的输出:
Input device ID: bus 0x0018 vendor 0x0001 product 0x0001 version 0x0100
Input device name: "Goodix Capacitive TouchScreen"
Testing ... (interrupt to exit)
Event: time 1623456789.123456, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 520
Event: time 1623456789.123456, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 860
Event: time 1623456789.123456, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1623456789.123789, type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 45
关键点:看到type 3是绝对坐标事件,type 1是按键事件。如果触摸没反应,先看有没有event上报——这是最直接的排查手段。
我的经验:曾经有个项目,触摸屏偶尔断触。用evtest抓了半小时数据,发现压力值(ABS_MT_PRESSURE)在某个区域突然跳变。后来发现是FPC排线接触不良,换个排线就好了。你看,工具不会骗人。
24.2 上层校准神器:tslib
tslib 是触摸屏校准的祖师爷级工具。虽然现在很多Android设备不用它了,但嵌入式Linux开发中依然很常见。
tslib 的核心组件
| 模块 | 功能 | 我常用的场景 |
|---|---|---|
| ts_read | 读取原始触摸数据 | 验证驱动是否正常上报 |
| ts_calibrate | 五点校准,生成校准参数 | 电阻屏必用,电容屏偶尔用 |
| ts_test | 图形化测试界面 | 快速验证触摸线性度 |
| ts_uinput | 将校准后的数据注入uinput | 兼容老旧应用 |
校准流程
# 1. 设置环境变量
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
# 2. 运行校准程序
ts_calibrate
# 3. 测试校准效果
ts_test
注意:tslib 的校准参数是保存在 /etc/pointercal 文件里的。我曾经遇到过升级固件后校准参数丢失的情况,触摸完全错位。解决办法很简单——备份这个文件,或者写个脚本在启动时自动校准。
24.3 触摸屏测试APK
在Android平台上,我习惯用几款测试APK来做功能验证。它们比命令行工具直观得多。
推荐APK列表
- TouchScreenTest:显示触摸点坐标、压力值、触摸面积,支持多点触控
- MultiTouch Tester:专门测试多点触控,能看到每个手指的轨迹
- YAMTT(Yet Another MultiTouch Test):开源,可以自定义测试模式
测试要点
- 单点测试:用手指在屏幕画直线、画圆,看轨迹是否平滑
- 多点测试:用两个手指做缩放、旋转操作,看是否卡顿或跳点
- 边缘测试:触摸屏幕四个角和边缘,看坐标是否准确
- 压力测试:轻触和重压,看压力值变化是否线性
避坑指南:我曾经用一款测试APK发现触摸屏在左上角有2mm的偏移。一开始以为是驱动问题,折腾了两天。后来换了个APK测试,发现偏移消失了——原来是那个APK本身有bug。所以,我建议至少用两款不同的APK交叉验证。
24.4 三款工具的对比
| 工具 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| evtest | 驱动调试、底层问题排查 | 直接看原始事件,最真实 | 需要命令行,不够直观 |
| tslib | 校准、嵌入式Linux开发 | 功能完整,有校准算法 | Android上用得少 |
| 测试APK | 功能验证、用户体验测试 | 图形化,直观易用 | 可能引入APK自身的误差 |
24.5 知识体系总览
下面这张图是我自己整理的TSP测试工具知识结构,你看一眼就能明白它们之间的关系:
你看,这三款工具各有侧重。evtest 看最底层的数据,tslib 做校准和转换,APK 做最终的功能验证。我个人习惯的流程是:先用 evtest 确认驱动有数据上报,再用 tslib 做校准(如果需要的话),最后用 APK 跑一遍功能测试。这样一套下来,触摸屏的问题基本都能暴露出来。
小技巧:如果你在调试时发现触摸坐标不准,别急着改驱动。先试试 tslib 的校准,很多时候是屏幕和触摸屏的贴合偏差导致的,校准一下就好了。我曾经在一个平板项目上,校准前后坐标偏差了3mm,校准后完全正常。