美文网首页
从调试TP开始进入android驱动

从调试TP开始进入android驱动

作者: 秋云_3b22 | 来源:发表于2019-03-29 19:21 被阅读0次

    1、什么是TP

    TP的全称叫touchpanel,字面意思就是触摸屏。常见触摸屏有电阻触摸屏和电容式触摸屏,现在我们使用的手持设备基本都是电容屏。触摸IC会计算出触摸坐标,然后通过i2c传送给平台,响应触摸事件。

    2、怎么调试TP的驱动?

    调试前我们需要了解的基本的硬件知识。我们调试的是什么IC?有没有规格书,有的话看一下,找到这颗ic的设备地址。只有找到正确的设备地址I2C总线才知道要跟哪个设备通信,就像我们给某某打电话,首先要输入正确的电话号码。平台有多条i2c总线,是挂载哪呢?系统通过什么来通知需要上报触摸坐标?需要中断脚来识别中断出发。触摸IC要正常工作,需要系统供电吧,VDD一般是2.8v。还有一个reset脚。

    了解了TP硬件后,开始说TP的驱动。TP的驱动放在哪里?触摸屏的驱动都在Kernel/drivers/input/touchscreen/目录下,目录下有各种触控ic的驱动。这里找一个常用的ic ——gt9xx。(这里选用高通平台)。

    (1) 、dtsi的配置

    i2c_5: i2c@78b9000{

    ......

    .......

    };

    i2c@78b9000 { /* BLSP1 QUP5 */           

         goodix@5d {

                            compatible = "goodix,gt9xx";

                            reg = <0x5d>;

                            interrupt-parent = <&msm_gpio>;

                            interrupts = <13 0x2008>;

                            reset-gpios = <&msm_gpio 12 0x0>;

                            interrupt-gpios = <&msm_gpio 13 0x2008>;

                            vcc-i2c-supply = <&pm8909_l6>;

                            vdd-supply = <&pm8909_l17>;

                            goodix,panel-coords = <0 0 800 1280>;

                            goodix,display-coords = <0 0 800 1280>;

                            goodix,enable-power-off;

                            goodix,fw_name = "gtp_fw.bin";

                            pinctrl-names = "pmx_ts_active","pmx_ts_suspend";

                            pinctrl-0 = <&ts_int_active &ts_reset_active>;

                            pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;

    };

    };

    Ic的器件地址是0x5d,这是一个7为地址。硬件上gt9xx是挂载在I2c5上,中断脚是gpio 13,reset脚是gpio 12,VDD是LDO17,触摸屏的分辨是800 x 1280。这里还有两个pinctrl-0和pinctrl-1,用来配置中断gpio 13和reset gpio 12的上拉和下拉,即active状态时是gpio上拉,suspend时是下拉。

    (2) 、configs中添加编译项

    在kernel/arch/arm/configs/目录下找到对应的defconfig添加两个编译选项。

    CONFIG_TOUCHSCREEN_GT9XX=y

    CONFIG_GT9XX_TOUCHPANEL_DRIVER=y

    (3) 、Kconfig和Makefile

    这两个文件在Kernel/drivers/input/touchscreen/目录下,

    Kconfig是内核配置文件,在Kconfig中添加如下:

    config TOUCHSCREEN_GT9XX

            bool "Goodix touchpanel GT9xx series"

            depends on I2C

            help

              Say Y here if you have a Goodix GT9xx touchscreen.

              Gt9xx controllers are multi touch controllers which can

              report 5 touches at a time.

              If unsure, say N.

    source "drivers/input/touchscreen/gt9xx/Kconfig"

    Makefile编译配置文件,Makefile中添加:

    obj-$(CONFIG_TOUCHSCREEN_GT9XX)         += gt9xx/

    到这里驱动相关的配置就添加完成,接下来开始编译内核,编译命令用

    Make bootimage或者 make  kernel。

    怎么查看是否编译到我们添加的驱动?在out目录下面可以查看到我们编译出来的.o文件。

    3、怎么debug?

    如果编译正确烧录后,TP没反应怎么排查问题?调试的时候不可能都一帆风顺,遇到问题,才能更深入的去了解驱动,以及工作原理。首先我们确保TP的连接是正常的,电源是正常,gpio控制是正常。这些都正常后,我们可以抓取启动时候的Log,有两种方法,第一种抓取串口log,第二种,用adb命令, adb  root , 再adb dmesg 。I2c没有应答,我们除了看log和驱动代码,还可以通过示波器抓取i2c波形,看波形是否正常。

    4、驱动代码流程

    ��

    相关文章

      网友评论

          本文标题:从调试TP开始进入android驱动

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