调试过程记录:
基本信息列表:
1. CPU type : RK3399
2. Kernel version : kernel4.4
3. Android version: Android7.1
4. Touch Controller Interface : USB
5. Touch Controller Type:EETI EXC80H80

1、确保kernel的rockchip_defconfigs文件以下的宏打开:

1. CONFIG_INPUT_EVDEV
2. CONFIG_INPUT_UINPUT
3. CONFIG_HIDRAW  ( for USB Interface )
4. HID_MULTITOUCH  ( USB Interface & Kernel 3.0 upwards )

2、kernel做以下修改(其实这里主要是做TP vid的识别方面的内容):

diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index e9ae3d5..02c60e3 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -1449,6 +1449,15 @@ static void evdev_disconnect(struct input_handle *handle)put_device(&evdev->dev);}+static bool evdev_match(struct input_handler *handler, struct input_dev *dev)
+{+/* Avoid EETI USB touchscreens */
+#define VID_EETI 0x0EEF
+  if ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))
+      return false;
+  return true;
+}
+static const struct input_device_id evdev_ids[] = {{ .driver_info = 1 },    /* Matches all devices */{ },           /* Terminating zero entry */
@@ -1459,6 +1468,7 @@ MODULE_DEVICE_TABLE(input, evdev_ids);static struct input_handler evdev_handler = {.event       = evdev_event,.events      = evdev_events,
+  .match = evdev_match, /* Added by EETI*/.connect   = evdev_connect,.disconnect    = evdev_disconnect,.legacy_minors  = true,
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index 5d11fea..cdb1443 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -809,6 +809,11 @@ static bool joydev_match(struct input_handler *handler, struct input_dev *dev)if (joydev_dev_is_absolute_mouse(dev))return false;+   /* Avoid EETI virtual devices */
+#define VID_EETI 0x0EEF
+  if (( BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))
+      return false;
+return true;}diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index b604564..4ec970b 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -1002,6 +1002,18 @@ static void mousedev_disconnect(struct input_handle *handle)mousedev_destroy(mousedev);}+static bool mousedev_match(struct input_handler *handler, struct input_dev *dev)
+{+/* Avoid EETI USB touchscreens */
+#define VID_EETI 0x0EEF
+  if ((BUS_USB == dev->id.bustype) && (VID_EETI == dev->id.vendor))
+      return false;
+/* Avoid EETI virtual devices */
+  if ((BUS_VIRTUAL == dev->id.bustype) && (VID_EETI == dev->id.vendor))
+      return false;
+  return true;
+}
+static const struct input_device_id mousedev_ids[] = {{.flags = INPUT_DEVICE_ID_MATCH_EVBIT |
@@ -1056,6 +1068,7 @@ MODULE_DEVICE_TABLE(input, mousedev_ids);static struct input_handler mousedev_handler = {.event     = mousedev_event,.connect  = mousedev_connect,
+  .match      = mousedev_match, /* Added by EETI */.disconnect   = mousedev_disconnect,.legacy_minors   = true,.minor      = MOUSEDEV_MINOR_BASE,

3、see uinput under /dev/input/uinput or /dev/uinput

rk3399_all:/ # ls -l /dev/uinput
crw-rw---- 1 system net_bt_stack 10, 223 1970-01-01 00:00 /dev/uinput

4、rk3399_all:/ # ls -l dev/hidraw0

crw------- 1 root root 237,   0 1970-01-01 00:00 dev/hidraw0

5、cat /proc/bus/input/devices

rk3399_all:/ # cat /proc/bus/input/devices
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="ff420030.pwm"
P: Phys=gpio-keys/remotectl
S: Sysfs=/devices/platform/ff420030.pwm/input/input0
U: Uniq=
H: Handlers=event0 cpufreq keychord
B: PROP=0
B: EV=3
B: KEY=10 0 3c0000 c0007c010 4000000000 10000 10003010000 787015040408800 1e16c000000000 10000000004ffcI: Bus=0003 Vendor=0eef Product=c000 Version=0111
N: Name="eGalax Inc. eGalaxTouch P80H80 -1308-06.00.00.00"
P: Phys=usb-fe3e0000.usb-1/input0
S: Sysfs=/devices/platform/fe3e0000.usb/usb2/2-1/2-1:1.0/0003:0EEF:C000.0001/input/input1
U: Uniq=
H: Handlers=cpufreq
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=260800000000003I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="rk29-keypad"
P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/rockchip-key/input/input3
U: Uniq=
H: Handlers=event1 keychord
B: PROP=0
B: EV=3
B: KEY=100000 40008000 1c004000000000 800000000000000

6、Place “eGTouchA.ini” into Android system directory “/data/eGTouchA.ini” where driver would load it.
adb把eGTouchA.ini文件 push进机器的/data/eGTouchA.ini目录。

7、To make eGTouchD driver run from the beginning of system operation. Please put eGTouchD driver into Android system directory “/system/bin”.
adb把eGTouchD文件 push进机器/system/bin目录。

8、[Android 3.0 upwards] Please put file “eGalaxTouch_VirtualDevice.idc” into Android system directory “/system/usr/idc/”
adb把eGalaxTouch_VirtualDevice.idc文件push到机器/system/usr/idc/目录。

【说明】:以上6、7、8的操作可以添加到代码中的device目录,即把这三个文件拷贝到device/rockchip/rk3399/目录,然后修改device.mk文件和在init.tablet.rc文件给eGTouchD赋权限0755:
(我这里遇到个问题就是从windows拷贝这些文件到linux服务器代码上,没有赋权限给文件,编译的时候没法拷贝到对应目录或者拷贝过去了无权限无法运行,这点需要注意一下)

+++ b/device.mk
@@ -44,6 +44,12 @@ PRODUCT_COPY_FILES += \$(LOCAL_PATH)/hdcp2_tx:/system/bin/hdcp2_tx \$(LOCAL_PATH)/firmware.le:/system/vendor/firmware/hdcp2.fw+#add by czd for Touch panel:I215FGB01.0 80H80
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/eGTouchA.ini:/system/etc/eGTouchA.ini \
+    $(LOCAL_PATH)/eGTouchD:/system/bin/eGTouchD \
+    $(LOCAL_PATH)/eGalaxTouch_VirtualDevice.idc:/system/usr/idc/eGalaxTouch_VirtualDevice.idc
+

9、Modify the file“init.rc” in Android system and add service,我这里修改的是device/rockchip/rk3399/init.tablet.rc,这样机器开机之后就会把eGTouchD服务程序运行起来。

+    #add for eGTouchD  by czd 2020-03-05
+    chmod 0755 /system/bin/eGTouchD
+    copy system/etc/eGTouchA.ini /data/eGTouchA.ini
+    chmod 0777  /data/eGTouchA.ini
+    #add end+service eGTouchD /system/bin/eGTouchD
+       class main
+       user root
+       group root
+       oneshot
+       seclabel u:r:eGTouchD:s0  //这句必须加上

10、解决相关selinux权限的问题(Android5.1以后的安卓版本需要解决)

10.1 修改sepolicy/file_contexts:

+/system/bin/eGTouchD     u:object_r:eGTouchD_exec:s0

10.2 添加sepolicy/eGTouchD.te文件,文件内容如下:

type eGTouchD, domain;
type eGTouchD_exec, exec_type, file_type;init_daemon_domain(eGTouchD)allow eGTouchD init_tmpfs:file create_file_perms;
allow eGTouchD self:capability { dac_override net_admin net_raw setgid setuid };
allow eGTouchD device:dir { open read };
allow eGTouchD shell:lnk_file { read };
allow eGTouchD rootfs:lnk_file { getattr };
allow eGTouchD socket_device:sock_file { write };

11、安装apk测试
adb install eGalaxCalibrator_v0.11-usb.apk

rk3399_android7.1调试USB接口的TP记录相关推荐

  1. Ubuntu13下调试USB AUDIO的一些记录

    最近想玩玩LINUX,于是双系统装了一个Ubuntu13.04. 在新系统下用着都还好,不过我自己DIY的USB DAC出了问题.在WIN7下能正常工作,但是在Ubuntu下就爆音不断,很明显是音频数 ...

  2. CY7C68013 USB接口相机开发记录 - 第一天:资料下载

    一直觉得从头开发一套东西出来会极大的提升自己的自信心,能够最大化的开发自己的潜能.所以在犹豫很久之后决定学习下CY7C68013 USB接口相机的开发. 通过在网上查找多份资料后,觉得工欲善其事必先利 ...

  3. nvidia xavier平台无PD控制器USB接口调试

    NVIDIA英伟达 1. 前言 问题: 基于nvidia xavier核心板,设计载板,但是USB功能无法使用: 硬件: OTG连接器使用Micro B VBUS_ID=GPIO30(B55) pin ...

  4. 解决安卓手机USB接口被外设占用导致无法调试的问题

    安卓新人,在做一个通过安卓手机USB接口控制外部设备的项目. 开始就没有办法调试,因为USB接口被设备占用了, 只能用文本一次一次的把状态显示在主界面上,相当费劲,而且时不时程序就崩溃.基本没有办法对 ...

  5. 基于FPGA的USB接口控制器设计(VHDL)(中)

    今天给大侠带来基于 FPGA 的 USB 接口控制器设计(VHDL),由于篇幅较长,分三篇.今天带来第二篇,中篇,USB通信原理.USB 系统开发以及设计实例.话不多说,上货. 之前有关于 Veril ...

  6. USB接口 在单片机读写U盘 项目中的应用

    2019独角兽企业重金招聘Python工程师标准>>> 一.    USB接口是什么? 通俗地说法: USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.USB接口即插即用 ...

  7. usb接口电路_RS232接口与RS485的不同之处

    RS232与RS485一直是弱电常见的接口,很多朋友提到他们之间的区别,那么今天我们一起来了解下它们. 一.接口的物理结构 1.RS232接口: 计算机通讯接口之一,通常 RS-232 接口以9个引脚 ...

  8. 20190812_Intel Realsense D435 关于摄像头USB掉线问题问题记录汇总

    文章目录 关于摄像头掉线问题问题汇总 未尝试的可能的解决办法: 可能成功的尝试 20190921 20190923 20190924 20190925 20190930 20191008 201910 ...

  9. BUS HOUND调试USB驱动遇到的错误代码解析

    BUS HOUND调试USB驱动遇到的错误代码解析 在使用BUS HOUND调试USB驱动时,在Capture页面会遇到抓取的错误信息,错误代码会在data字段显示,根据不同的显示,含义如下: 顺便记 ...

  10. 禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法

    禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法 前提条件:安装QNX 6.5 RTOS操作系统的主板的USB接口必须能够被操作系统识别,否则连接不到触摸屏 ...

最新文章

  1. python matplotlib画数据分布图_Python数据可视化之matplotlib
  2. linux运维/自动化开发__目录
  3. 负载均衡设备选型计算参考
  4. JavaScript 的使用简单总结
  5. 服务器上的文件怎么取名,给新的服务器取名你会取神马?
  6. pythonjavascript一起开发_Python开发【第十一篇】:JavaScript
  7. 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
  8. 老码农的Java干货资源
  9. Asp.net的生命周期之应用程序生命周期
  10. windows下使用vim
  11. lhgcoreDialogPlugin v3.5.2 使用点滴
  12. LitePal数据存储
  13. 联想 M7400 两种清零方法
  14. 监测生命体征、活动水平的可穿戴电子产品设计方案
  15. web程序设计-动态网页技术?06
  16. 抖音短视频APP——市场需求文档
  17. Java 明文转密文
  18. 寻找心灵深处的菩提树
  19. (3种解决思路)OSError: [Errno 22] Invalid argument:解决python爬虫中报错
  20. 支付宝出安全漏洞,买了账户安全险的也要小心

热门文章

  1. [科普]关于文件头的那些事
  2. Cocos2d-x三种定时器启用和停止
  3. HDOJ 5091 Beam Cannon 扫描线
  4. Xcode 7.3 解决自定义类无法自动联想
  5. Vs2010中水晶报表引用及打包
  6. 课程笔记:深度学习与人类语言处理 ——李宏毅,2020 (P5)
  7. 【讲座预告】Processing Learner Texts: from Annotation to ...
  8. 75道常见AI面试题,看看你的知识盲点在哪?(附解析,包括机器学习、深度学习、苹果Google面试等)...
  9. 每日算法系列【LeetCode 1039】多边形三角剖分的最低得分
  10. python—gc.collect()清楚内存