硬件环境

1.Firefly AIO-3399(AI)开发版;

2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688。

操作系统

Android 7.2 for rockship

Step-1 查阅AIO-3399(AI)原理图,确定I2C的Slave Device Addr地址长度

通过RK3399的原理图可以了解到I2C的Slave Addr地址长度为7Bita,这个地址长度十分关键,确定了在DTS配置文件中应该配置哪个地址作为Slave Device的Addr,如图1所示。

图1 I2C Map

Step-2 查阅触摸芯片GT5688 数据手册,确定驱动地址

  • GT5688芯片上电时序图,如图2所示。

    图2 上电时序图
  • 主控复位时序图,如图3所示。

    图3 复位时序图
    1.通过上电时序图确定地址
    使用示波器,测试在上电前-上电中-上电后管脚INT和RES的波形情况,根据下图判断设备使用的地址,如图4所示。

    图4 地址位与使用地址对应关系表
  • 波形如图5所示,则设定地址:0x14(7bit),0x28/0x29(8bit)

    图5 地址为0x14波形
  • 波形如图6所示,则设定地址:0x5D(7bit),0xBA/0xBB(8bit)

    图6 地址为0x5D波形
    2.联系Step-1 确定采用的是7Bita的地址,还是8Bita的地址
    本案采用的是7bit的地址,因此在驱动DTS文件中配置I2C时,应配置为0x14地址。

Step-3 查阅AIO-3399(AI)原理图,确定REST和INT的I2C管脚

该步骤确定触摸屏REST和INT管脚接入的GPIO,从而确定在DTS文件配置时GPIO的数字,详情请了解Firefly 官网关于AIO-3399(AI)WIKI章节(驱动开发-GPIO使用)。
如图7所示,TP_RST是接入GPIO4_C5管脚的,TP_INT是接入GPIO4_D4管脚的。此处只需要记住即可,下一步配置DTS文件时会使用到。

图7 TP管脚接入原理图

Step-4 配置驱动文件

驱动文件路径为:"kernel/arch/arm64/boot/dts/rockship"
本案新建文件名为:"rk3399-firefly-aioc-ai-lvds-HSX5H30C.dts",关于触摸驱动的配置内容如下所示。由于GT5688使用的是GT1X的驱动,所示在配置是compatible赋值为:"goodix,gt1x"

&i2c4 {status = "okay";gt1x:goodix_ts@14{                                                                            compatible = "goodix,gt1x";reg = <0x14>;  //该地址为Step-2确定的地址interrupt-parent = <&gpio4>;  //从Step-3了解到的信息interrupts = <28 IRQ_TYPE_EDGE_FALLING>; //数字28与irq-gpio保持一致goodix,rst-gpio = <&gpio4 21 GPIO_ACTIVE_LOW>; //数字"21“的确定,如备注所述。goodix,irq-gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>; //数字"28“的确定,如备注所述。};
};

备注:
GPIO4_C5 被描述为: <&gpio4 21 GPIO_ACTIVE_LOW>,这里的 21来源于:16+5=21,其中 16 是因为 GPIO4_C5 是属于 GPIO4 的 C 组,如果是 A 组的话则为 0,如果是 C 组则为 16,如果是 D 组则为 24,以此递推,而 5是因为C5 后面的 5,以此判断GPIO4_D4描述为:<&gpio4 28 GPIO_ACTIVE_HIGH>

Step-5 修改驱动源码

1.修改gt1x_generic.h(文件路径:"kernel/drivers/input/touchscreen/gt1x"
(1)修改CFG参数,更改为厂家提供的CFG参数,其余的GTP_CFG_GROUP1,GTP_CFG_GROUP2,GTP_CFG_GROUP3,GTP_CFG_GROUP4,GTP_CFG_GROUP5均清空。

#define GTP_CFG_GROUP0 {\0x43,0x20,0x03,0xE0,0x01,0x05,0x3D,0x10,0x01,0x00,\0x08,0x08,0x50,0x3C,0x53,0x11,0x01,0x01,0x00,0x00,\0x14,0x14,0x14,0x22,0x08,0x04,0x00,0x00,0x00,0x00,\0x3C,0x00,0x53,0x00,0x14,0x00,0x00,0x84,0x00,0x00,\0x00,0x00,0x00,0x64,0x1E,0x1E,0x8A,0x2A,0x0C,0x3C,\0x3E,0xF8,0x0A,0x20,0x33,0x60,0x12,0x02,0x24,0x00,\0x00,0x32,0x64,0x80,0x14,0x02,0x00,0x00,0x54,0x80,\0x35,0x7F,0x3D,0x7F,0x46,0x7F,0x51,0x7F,0x5D,0x7F,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x32,0x20,0x50,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00,\0x0D,0x06,0x0C,0x05,0x0B,0x04,0x0A,0x03,0x09,0x02,\0x08,0x01,0xFF,0xFF,0x00,0x01,0x02,0x03,0x04,0x05,\0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,\0x10,0x11,0x12,0x13,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xF5,0x01\
}

(2)设置GTP_CUSTOM_CFG1,加载自定义配置;GTP_DEBUG_ON1,方便调试输出信息。

#define GTP_CUSTOM_CFG        1  // customize resolution & interrupt trigger mode#define GTP_DEBUG_ON          1 // enable log printed by GTP_DEBUG(...)

(3)修改自定义CFG

#if GTP_CUSTOM_CFG
#define GTP_MAX_HEIGHT   800    //根据屏幕尺寸修改
#define GTP_MAX_WIDTH    480    //根据屏幕尺寸修改
#define GTP_INT_TRIGGER  1  //0:Rising 1:Falling
#define GTP_WAKEUP_LEVEL 1
#else
#define GTP_MAX_HEIGHT   4096
#define GTP_MAX_WIDTH    4096
#define GTP_INT_TRIGGER  1
#define GTP_WAKEUP_LEVEL 1
#endif

2.修改“kernel/arch/arm64/configs/rockship_deconfig",打开指定的tp,关闭其他的*

CONFIG_TABLET_USB_KBTAB=y
CONFIG_INPUT_TOUCHSCREEN=y
#CONFIG_TOUCHSCREEN_GSLX680_PAD=y
#CONFIG_TOUCHSCREEN_GSLX680_VR=y
#CONFIG_TOUCHSCREEN_GSL3673=y
#CONFIG_TOUCHSCREEN_GSL3673_800X1280=y
#CONFIG_TOUCHSCREEN_GT9XX=y
CONFIG_TOUCHSCREEN_GT1X=y  //打开指定的tp,
CONFIG_ROCKCHIP_REMOTECTL=y
CONFIG_ROCKCHIP_REMOTECTL_PWM=y

3.修改"kernel/drivers/input/touchscreen/Kconfig"

config TOUCHSCREEN_GT1Xbool "GT1X for gt1x pakage"default n

Step-6 编译并安装系统

Step-7 如何Debug?

1.获取设备联网IP地址

可通过局域网内扫描方式获得,前提是要知道MAC地址。

2.连接设备

  • 通过网线连接AIO-3399C设备,获取得到IP地址[192.168.1.171],此IP为路由分配,没有设置固定。

  • 通过adb调试

$> adb connect 192.168.1.171$> adb shellrk3399_firefly_aioc_ai_lvds:/ $  dmesg
  • 查看goodix_ts加载是否成功

    明显,此处显示:i2c i2c-4:of_i2c:invalid addr=ba on /i2cff3d0000/goodix_ts@ba,即地址错误。

3.查看系统开机信息显示

$> adb shell dmesg > dmesg.log


参考文献

[1] tp调试日志
[2] RK3399-Android7.1 调试笔记 GT9XX触摸屏驱动详解

RK3399 GT1X触摸屏驱动调试笔记相关推荐

  1. RK3399驱动开发 | 07 - GT911触摸屏驱动调试及问题分析解决(基于RK SDK Linux 4.4.194内核)

    更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...

  2. RK3399驱动开发 | 06 - GT911触摸屏驱动调试及驱动浅析(Linux 5.4内核)

    更新内容 更新时间 完成初稿 2022-09-21 文章目录 一.GT911 1. 触摸芯片 2. 原理图 二.驱动调试 1. 测试gt911是否正常通信 2. 添加驱动 3. 添加设备树描述 4. ...

  3. 全志A64触摸屏驱动调试

    一.前言 linux的触摸屏驱动一般要经历一下几个步骤(以4412为例):1.移植驱动到linux源码"driver/input/touchscreen/"目录下,在Kconfig ...

  4. MT6575驱动调试笔记

    一.配置GPIO 通过工具: mediatek/source/dct/DrvGen.exe 配置并替换dws文件: mediatek/custom/bbk75_emmc_gb2/kernel/dct/ ...

  5. 安卓11(AndroidR)展锐 sc9863a驱动调试笔记1

    1.先来看下新代码包的所使用的文件所在: Source和lunch 58之后(58. s9863a1h10_go_32b_2g-userdebug-native),配置了一些环境变量: ======= ...

  6. 初级驱动调试笔记-总结

    文章目录 一.拿到开发板的第一步 二.调试第一步 三.Makefile说明 3.1 内核版本说明 3.2 Makefile文件 3.3 Makefile 与Kconfig的关系 3.4 defconf ...

  7. stm32mp157 wm8960音频驱动调试笔记

    这次调试wm8960音频驱动遇到了好多的坑,研究好几天终于调试好了. 驱动调试步骤 驱动能不能成功加载是调试的第一大步骤,也是最关键的步骤之一. 1.查看硬件原理图: 2.打开对应的设备树(stm32 ...

  8. RK3288的GTxx触摸屏驱动调试

    电容屏是在LCD屏上覆盖一个透明的矩阵键盘,在调试goodix gt9xx系列触控屏的驱动时,会遇到各种问题! 1.linux启动时,触控屏驱动偶尔不能加载固件信息. 2.在使用过程中偶尔不能触发或触 ...

  9. Dm9000aep在u-boot下网卡驱动调试笔记

    作者:杨硕,华清远见嵌入式培训中心讲师. 最近在将u-boot1.3.4移植到三星s5pc100 SOC平台发现u-boot启动之后无法ping通主机,也不能用tftp下载内核.硬件平台用的网卡芯片是 ...

最新文章

  1. 解决 Windows instance 时间不同步问题 - 每天5分钟玩转 OpenStack(153)
  2. 关于sublime-text-2的Package Control组件安装方法,自动和手动
  3. javascript怎么禁用浏览器后退按钮
  4. Winform DataGridView中利用WebClient异步加载显示网络地址的图片
  5. 计算机课又叫什么课,计算机课学电脑的书叫什么?
  6. 【渝粤教育】电大中专金融与税收 (2)_1作业 题库
  7. 本地打印后台处理程序服务没有运行和windows无法连接到打印机拒绝访问
  8. 搜索引擎优化核心关键词策略
  9. JavaScript:实现返回格式化的电话号码的字符串算法(附完整源码)
  10. 【MySQL练习】数据查询(02)-简易版
  11. 简智音科技:抖音与快手相比,谁的前景更好?
  12. 十大排序算法代码集锦(java)
  13. CSS-属性选择器的用法详解
  14. 关于“车联网”的最强科普!
  15. 压力表负值表示什么_弹簧管式压力表轻敲变动量居然有负值,我不知道是不是我学的不好,还是计量所所长脑子有病...
  16. hubuild 打包ios_iOS | 使用HBuilder进行本地打包步骤
  17. 搜狐新闻APP是如何使用HUAWEI DevEco IDE快速集成HUAWEI HiAI Engine
  18. 私募基金的绝对收益之路——幻方量化创始合伙人徐进博士
  19. 人脸识别:即使不上传任何照片依然能跟踪你的个人信息
  20. Deepmind 公司及AI岗位概览

热门文章

  1. WiFi配网~智能家居配网解决方案
  2. How Gradual Typing System Helps Us
  3. tl02-搭建企业私有GIT服务
  4. 知识蒸馏 | (1) 知识蒸馏概述
  5. 10.pyecharts柱状图-----班级各地区男女所占人数
  6. 宝塔提示PHP7.3等版本无zip扩展解决
  7. 可以结束一个循环的关键字是python_python异常处理会使用到哪些关键字?
  8. vue-admin-template默认英文改成中文
  9. Springboot内嵌tomcat
  10. 天数最少的年份_农历辛丑年仅有354天是怎么回事 平年比闰年少几天