rk3399_android7.1调试USB接口的TP记录
调试过程记录:
基本信息列表:
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记录相关推荐
- Ubuntu13下调试USB AUDIO的一些记录
最近想玩玩LINUX,于是双系统装了一个Ubuntu13.04. 在新系统下用着都还好,不过我自己DIY的USB DAC出了问题.在WIN7下能正常工作,但是在Ubuntu下就爆音不断,很明显是音频数 ...
- CY7C68013 USB接口相机开发记录 - 第一天:资料下载
一直觉得从头开发一套东西出来会极大的提升自己的自信心,能够最大化的开发自己的潜能.所以在犹豫很久之后决定学习下CY7C68013 USB接口相机的开发. 通过在网上查找多份资料后,觉得工欲善其事必先利 ...
- nvidia xavier平台无PD控制器USB接口调试
NVIDIA英伟达 1. 前言 问题: 基于nvidia xavier核心板,设计载板,但是USB功能无法使用: 硬件: OTG连接器使用Micro B VBUS_ID=GPIO30(B55) pin ...
- 解决安卓手机USB接口被外设占用导致无法调试的问题
安卓新人,在做一个通过安卓手机USB接口控制外部设备的项目. 开始就没有办法调试,因为USB接口被设备占用了, 只能用文本一次一次的把状态显示在主界面上,相当费劲,而且时不时程序就崩溃.基本没有办法对 ...
- 基于FPGA的USB接口控制器设计(VHDL)(中)
今天给大侠带来基于 FPGA 的 USB 接口控制器设计(VHDL),由于篇幅较长,分三篇.今天带来第二篇,中篇,USB通信原理.USB 系统开发以及设计实例.话不多说,上货. 之前有关于 Veril ...
- USB接口 在单片机读写U盘 项目中的应用
2019独角兽企业重金招聘Python工程师标准>>> 一. USB接口是什么? 通俗地说法: USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.USB接口即插即用 ...
- usb接口电路_RS232接口与RS485的不同之处
RS232与RS485一直是弱电常见的接口,很多朋友提到他们之间的区别,那么今天我们一起来了解下它们. 一.接口的物理结构 1.RS232接口: 计算机通讯接口之一,通常 RS-232 接口以9个引脚 ...
- 20190812_Intel Realsense D435 关于摄像头USB掉线问题问题记录汇总
文章目录 关于摄像头掉线问题问题汇总 未尝试的可能的解决办法: 可能成功的尝试 20190921 20190923 20190924 20190925 20190930 20191008 201910 ...
- BUS HOUND调试USB驱动遇到的错误代码解析
BUS HOUND调试USB驱动遇到的错误代码解析 在使用BUS HOUND调试USB驱动时,在Capture页面会遇到抓取的错误信息,错误代码会在data字段显示,根据不同的显示,含义如下: 顺便记 ...
- 禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法
禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法 前提条件:安装QNX 6.5 RTOS操作系统的主板的USB接口必须能够被操作系统识别,否则连接不到触摸屏 ...
最新文章
- python matplotlib画数据分布图_Python数据可视化之matplotlib
- linux运维/自动化开发__目录
- 负载均衡设备选型计算参考
- JavaScript 的使用简单总结
- 服务器上的文件怎么取名,给新的服务器取名你会取神马?
- pythonjavascript一起开发_Python开发【第十一篇】:JavaScript
- 学习python课程_想学习Python吗? 这是我们的免费4小时互动课程
- 老码农的Java干货资源
- Asp.net的生命周期之应用程序生命周期
- windows下使用vim
- lhgcoreDialogPlugin v3.5.2 使用点滴
- LitePal数据存储
- 联想 M7400 两种清零方法
- 监测生命体征、活动水平的可穿戴电子产品设计方案
- web程序设计-动态网页技术?06
- 抖音短视频APP——市场需求文档
- Java 明文转密文
- 寻找心灵深处的菩提树
- (3种解决思路)OSError: [Errno 22] Invalid argument:解决python爬虫中报错
- 支付宝出安全漏洞,买了账户安全险的也要小心
热门文章
- [科普]关于文件头的那些事
- Cocos2d-x三种定时器启用和停止
- HDOJ 5091 Beam Cannon 扫描线
- Xcode 7.3 解决自定义类无法自动联想
- Vs2010中水晶报表引用及打包
- 课程笔记:深度学习与人类语言处理 ——李宏毅,2020 (P5)
- 【讲座预告】Processing Learner Texts: from Annotation to ...
- 75道常见AI面试题,看看你的知识盲点在哪?(附解析,包括机器学习、深度学习、苹果Google面试等)...
- 每日算法系列【LeetCode 1039】多边形三角剖分的最低得分
- python—gc.collect()清楚内存