美文网首页
Android TP 触摸异常分析

Android TP 触摸异常分析

作者: GuangZhi | 来源:发表于2022-01-19 19:39 被阅读0次

    近期多台设备出现触摸异常情况,借此记录Android 触摸异常排查解决过程。此篇将介绍通过Android开发者选项指针显示功能和I2cTools快速定位问题,并分析异常原因。

    异常现象:

    与实际点击的位置相差大,触摸跳点。

    排查思路:

    ①.开启指针显示,快速确定是固件问题还是TP物理损坏;

    ②.如果不是tp物理损坏,确定TP参数是否有误。

    一、开启指针显示排查:

    查找源码,找出指针位置显示开启方法如下:

    即:

    1.开启/关闭指针位置显示:

    settings put system pointer_location 1/0

    2.查询是否开启触摸显示:

    settings get system pointer_location

    开启后,可沿着对角线滑动,观察轨迹是否连续,选取易观察的特殊点确定坐标是否大致正确。如下图是触摸正常的轨迹图。

    以分辨率为720*1280的正常设备为例,从左上角->屏幕中点->右下角滑动时,坐标值应为(0,0)->(360,640)->(720,1280)线性变化。

    ①.如果触摸轨迹不是连续的且触摸与显示的位置偏差大(坐标值偏差大),这种为触摸跳点,通常是固件原因;

    ②.如果触摸轨迹不连续且轨迹有断点,这种为触摸坏点,通常是触摸屏物理损坏,直接更换便是;

    ③.如果是局部位置没有触摸显示,其它位置触摸都有显示且坐标大致是对的,也是触摸坏点。

    我手上这台异常的设备,点上方,显示的下方,且不对称(没保存图片,只能描述了),存在跳点现象,据此判断是TP参数有误,可能是固件问题。为此我们需要读取TP参数进一步确认。

    二、确定TP参数

    我们知道TP是I2C设备,那理应可以通过i2c协议读取出tp 触摸IC里的参数,再与配置的参数比较便能确定tp ic里参数是否有误。

    这里使用的是Goodix 9271的触摸ic,找到驱动代码如下:

    在Gt9xx.c gtp_init_panel()函数里发现tp ic的版本号是通过读取GTP_REG_CONFIG_DATA这个地址寄存器读取的,而tp ic的版本号就是tp参数数组的第一个参数,那第一个参数的寄存器地址我们知道了,长度可以查看下发的tp参数数组长度知道,如下是上电时下发的tp参数,可知道长度是185.这样我们就可以借助i2c-tools来读取tp ic里的参数。

    i2c-tools在源码里没有预置,需要自行下载编译,我这里使用的是i2c-tools-3.1.0这个版本,放在源码里,mma编译,在out/..../system/bin/下生成i2cdetect、i2cdump、i2cget、i2cset可执行文件,把这个文件push到设备systen/bin/下。

    根据i2c协议知道,我们需要先通过i2cset 写入要读取的寄存器地址,再通过i2cget获取这个寄存器的值。先看看i2cset怎么使用,如下:

    看来我们需要指定:

    I2CBUS:TP IC 的i2c总线

    CHIP-ADDRESS:TP IC芯片地址

    DATA-ADDRESS:寄存器地址

    VALUE:往寄存器写入的值

    从上面分析中我们知道:

    DATA-ADDRESS = GTP_REG_CONFIG_DATA>> 8

    VALUE为[0x47,0x47+185]

    CHIP-ADDRESS可参看对应dts,如下图:

    可知CHIP-ADDRESS = 0x5d.

    I2CBUS可以通过i2cdetect查找,先确定有几组总线:

    可知总共有4组i2c总线,然后逐个遍历这4组总线,确定出地址为0x5d,且显示UU(设备已被驱动占用)的这组总线,如下:

    可知是tp设备使用的i2c-5这组总线,即I2CBUS=5;现在就可以使用i2cset、i2cget来读取了,这里先读取第一个参数。如下:

    说明第一个参数跟dts配置的参数是一致的,为方便读取一整组参数,写了bat脚本读取,如下:

    在我这台异常的设备中,发现读取的参数和配置的参数不一样,现在可以确定是固件问题。

    经排查,可能是在上电下发tp参数时出现数据错乱导致下发的版本号大于tp ic里的版本号,导致写入错误参数。为此增加了版本号比较功能,要下发的TP固件版本号大于tp ic固件的版本号才下发,这样就可大大降低写入错误参数的几率。代码如下:

    附带i2ctool和脚本,可参照修改:

    链接:https://pan.baidu.com/s/1wNdtCsF-ei06cl70XnBWRg

    提取码:oqcu

    若以上理解有误,欢迎指正!

    相关文章

      网友评论

          本文标题:Android TP 触摸异常分析

          本文链接:https://www.haomeiwen.com/subject/txarcrtx.html