news 2026/4/15 18:33:36

20260113给飞凌OK3588-C开发板适配Rockchip原厂的Android14系统时点亮飞凌的7寸屏时适配CTP触摸屏FT5X06

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20260113给飞凌OK3588-C开发板适配Rockchip原厂的Android14系统时点亮飞凌的7寸屏时适配CTP触摸屏FT5X06

20260113给飞凌OK3588-C开发板适配Rockchip原厂的Android14系统时点亮飞凌的7寸屏时适配CTP触摸屏FT5X06
2026/1/12 20:22


缘起:给飞凌OK3588-C开发板适配Rockchip原厂的Android14后,需要适配CTP触摸屏FT5X06。

当你把荣品RD-RK3588开发板重新适配一把,就相当于从头做了一个项目:【荣品RD-RK3588开发板】。
当然,开发板的功能都是好的,你免除了调试的过程,也就没有解决相关硬件出错的经验/机会了!


1、在DTS的i2c2中挂载CTP触摸屏FT5X06
【下次如果没有的I2C节点要首先注意I2C的冲突了】
如果不指定i2c2的引脚复用,那默认就是i2c2m0了
pin 15 (gpio0-15): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
pin 16 (gpio0-16): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer

Z:\14TB\OK3588-C\OK3588-android14-source\kernel-6.1\arch\arm64\boot\dts\rockchip\OK3588-C-Common.dtsi
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi

&i2c2 {
status = "okay";

// extio: tca6424@23 {
// compatible = "ti,tca6424";
// reg = <0x23>;
// interrupt-parent = <&gpio1>;
// interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
// gpio-controller;
// #gpio-cells = <2>;
// interrupt-controller;
// #interrupt-cells = <2>;
// pinctrl-0 = <&extio_int_gpio>;
// pinctrl-names = "default";
// status = "okay";
// };

ft5x06_dsi0: ft5x06@38 { //dsi0 tp
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg = <0x38>;
pinctrl-names = "ft5x06_default";
pinctrl-0 = <&ft5x06_dsi0_gpio>;
interrupt-parent = <&gpio3>;
interrupts = <RK_PC0 IRQ_TYPE_EDGE_FALLING>;
// irq-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
// reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
input-phy = "ft5x06_2_38/input0";
status = "okay";
};

// usbc0: fusb302@22 {
// compatible = "fcs,fusb302";
// reg = <0x22>;
// interrupt-parent = <&gpio1>;
// interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
// pinctrl-names = "default";
// pinctrl-0 = <&usbc0_int>;
// vbus-supply = <&vbus5v0_typec0>;
// status = "okay";
//
// ports {
// #address-cells = <1>;
// #size-cells = <0>;
//
// port@0 {
// reg = <0>;
// usbc0_role_sw: endpoint@0 {
// remote-endpoint = <&dwc3_0_role_switch>;
// };
// };
// };
//
// usb_con: connector {
// compatible = "usb-c-connector";
// label = "USB-C";
// >


2、
PWM MIPI_DSI1_EN 3B2
MIPI_DSI1_RESET 3B7
TP_INT MIPI_DSI1_INT 3c0
FT5X06:0x38

&pinctrl {

m2 {
net_m2_rst_gpio: net_m2_rst_gpio {
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

【这里应该/貌似没用?貌似是GT911需要配置的?】
touch {
touch_gpio: touch-gpio {
rockchip,pins =
<0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>,
<0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
};
};

hdmirxdet {
hdmirx_det_gpio: hdmirx-det-gpio {
rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
};
};

extio {
extio_int_gpio: extio-int-gpio {
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};

usb-typec {
usbc0_int: usbc0-int {
rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
};

typec5v_pwren0: typec5v-pwren0 {
rockchip,pins = <0 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
};

usbc1_int: usbc1-int {
rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>;
};

typec5v_pwren1: typec5v-pwren1 {
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

【这里必须的,FT5X06的】
tp_int {
ft5x06_dsi0_gpio: ft5x06-dsi0-gpio {
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};

ft5x06_dsi1_gpio: ft5x06-dsi1-gpio {
rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};

headphone {
hp_det: hp-det {
rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};


3、在.config文件中确认CONFIG_TOUCHSCREEN_EDT_FT5X06的位置和写法:
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\.config

# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
CONFIG_TOUCHSCREEN_PARADE=y
CONFIG_TOUCHSCREEN_PARADE_DEVICETREE_SUPPORT=y
# CONFIG_TOUCHSCREEN_PARADE_DEBUG is not set
CONFIG_TOUCHSCREEN_PARADE_I2C=y
# CONFIG_TOUCHSCREEN_PARADE_SPI is not set
# CONFIG_TOUCHSCREEN_PARADE_MT_A is not set
CONFIG_TOUCHSCREEN_PARADE_MT_B=y
# CONFIG_TOUCHSCREEN_PARADE_BUTTON is not set
# CONFIG_TOUCHSCREEN_PARADE_PROXIMITY is not set
# CONFIG_TOUCHSCREEN_PARADE_DEVICE_ACCESS is not set
CONFIG_TOUCHSCREEN_PARADE_LOADER=y
# CONFIG_TOUCHSCREEN_PARADE_PLATFORM_FW_UPGRADE is not set
# CONFIG_TOUCHSCREEN_PARADE_BINARY_FW_UPGRADE is not set
# CONFIG_TOUCHSCREEN_PARADE_PLATFORM_TTCONFIG_UPGRADE is not set
# CONFIG_TOUCHSCREEN_PARADE_MANUAL_TTCONFIG_UPGRADE is not set
# CONFIG_TOUCHSCREEN_PARADE_DEBUG_MDL is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
# CONFIG_TOUCHSCREEN_TSC2004 is not set


Z:\14TB\OK3588-C\OK3588-android-source\kernel-5.10\.config

# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set


Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\configs\rockchip_defconfig

CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_CHIPONE_9551R=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y
CONFIG_TOUCHSCREEN_FT5726=y
CONFIG_TOUCHSCREEN_GSL3673=y
CONFIG_TOUCHSCREEN_GSL3673_800X1280=y
CONFIG_TOUCHSCREEN_GSLX680_PAD=y
CONFIG_TOUCHSCREEN_GT1X=y
CONFIG_TOUCHSCREEN_ILI210X=y
CONFIG_TOUCHSCREEN_ELAN5515=y
CONFIG_TOUCHSCREEN_WACOM_W9013=y
CONFIG_TOUCHSCREEN_PARADE=y
CONFIG_TOUCHSCREEN_PARADE_DEVICETREE_SUPPORT=y
CONFIG_TOUCHSCREEN_PARADE_I2C=y
CONFIG_TOUCHSCREEN_PARADE_MT_B=y
CONFIG_TOUCHSCREEN_PARADE_LOADER=y
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
CONFIG_ROCKCHIP_REMOTECTL=y

CONFIG_ROCKCHIP_REMOTECTL_PWM=y
CONFIG_SENSOR_DEVICE=y
CONFIG_GSENSOR_DEVICE=y


4、确认edt-ft5x06.c编译成为edt-ft5x06.o了,但是CTP还是不能用。
getevent也没有打印信息。
dmesg | grep ft5
【确认CTP的驱动程序没有被挂载!】

Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\drivers\input\touchscreen\edt-ft5x06.o
【应该不用修改】
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\drivers\input\touchscreen\edt-ft5x06.c


5、
保险起见,替换掉edt-ft5x06.c【无效】


6、这时候想起来可能是GPIO冲突了,重点关注I2C2
【现阶段异常的】
pin 15 (gpio0-15): vcc-3v3-sd-s0-regulator gpio0:15 function sdmmc group sd-s0-pwr
pin 16 (gpio0-16): (MUX UNCLAIMED) (GPIO UNCLAIMED)


【预编译的Android14】
pin 15 (gpio0-15): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
pin 16 (gpio0-16): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer


根据经验/很容易得知:gpio0-15/GPIO0B7被sd-s0-pwr占用了


Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi

vcc_3v3_sd_s0: vcc-3v3-sd-s0-regulator {
compatible = "regulator-fixed";
// 2026/1/12 21:04 wenyuanbo i2c2
//gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
//pinctrl-0 = <&sd_s0_pwr>;

regulator-name = "vcc_3v3_sd_s0";
enable-active-high;
};


// 2026/1/12 21:04 wenyuanbo i2c2
//sdmmc {
// sd_s0_pwr: sd-s0-pwr {
// rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>;
// };
//};


7、通了!
130|console:/ #
130|console:/ # getevent
add device 1: /dev/input/event3
name: "Logitech USB Optical Mouse"
add device 2: /dev/input/event1
name: "generic ft5x06 (79)"

add device 3: /dev/input/event2
name: "rockchip,hdmiin rockchip,hdmiin"
add device 4: /dev/input/event5
name: "rockchip-hdmi0 rockchip-hdmi0"
add device 5: /dev/input/event4
name: "adc-keys"
add device 6: /dev/input/event0
name: "rk805 pwrkey"
add device 7: /dev/input/event6
name: "rockchip-hdmi1 rockchip-hdmi1"
【单指头】
/dev/input/event1: 0003 002f 00000000
/dev/input/event1: 0003 0039 00000006
/dev/input/event1: 0003 0035 000000a5
/dev/input/event1: 0003 0036 000000db
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0000 000000a5
/dev/input/event1: 0003 0001 000000db
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0000 0000 00000000

[ 72.211461][ T521] healthd: battery l=50 v=3300 t=2.6 h=2 st=3 c=-1600 fc=100 chg=au


【多指头/五指头?】
/dev/input/event1: 0003 0039 00000007
/dev/input/event1: 0003 0035 00000103
/dev/input/event1: 0003 0036 0000018a
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0000 00000103
/dev/input/event1: 0003 0001 0000018a
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 002f 00000001
/dev/input/event1: 0003 0039 00000008
/dev/input/event1: 0003 0035 000002ec
/dev/input/event1: 0003 0036 000000b6
/dev/input/event1: 0003 002f 00000002
/dev/input/event1: 0003 0039 00000009
/dev/input/event1: 0003 0035 00000329
/dev/input/event1: 0003 0036 00000114
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 002f 00000001
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0003 002f 00000002
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 002f 00000000
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0000 0000 00000000

^C
130|console:/ # [ 132.211169][ T521] healthd: battery l=50 v=3300 t=2.6 h=2 st=3 c=-1600 fc=100 chg=au

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 22:33:24

DECIMAL.JS入门指南:3步解决JS小数计算不准问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 编写一个面向初学者的DECIMAL.JS教学项目&#xff0c;包含&#xff1a;1) 基础安装配置 2) 常见计算问题重现与解决 3) 交互式示例页面。要求&#xff1a;1) 代码注释详细 2) 提供…

作者头像 李华
网站建设 2026/4/8 16:55:21

零基础学SQL:DDL和DML的趣味入门指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个面向初学者的交互式学习应用&#xff0c;用简单易懂的方式教授DDL和DML。包含&#xff1a;1) 生活化类比解释&#xff08;如把数据库比作图书馆&#xff09;&#xff1b;2…

作者头像 李华
网站建设 2026/4/11 3:19:57

48小时打造音乐社交APP原型:音源链接的创意应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发音乐社交APP原型&#xff0c;功能包括&#xff1a;1. 用户上传/分享音源链接 2. AI生成音频波形可视化 3. 点赞评论互动 4. 个性化推荐 5. 用户主页展示 6. 简易聊天功能。使用…

作者头像 李华
网站建设 2026/4/13 16:34:52

OpenPose商业落地:健身房智能镜开发,从技术到产品

OpenPose商业落地&#xff1a;健身房智能镜开发&#xff0c;从技术到产品 1. 为什么健身房需要智能镜&#xff1f; 想象一下这样的场景&#xff1a;会员在健身房独自练习时&#xff0c;常常不确定自己的动作是否标准。传统解决方案需要教练一对一指导&#xff0c;但人力成本高…

作者头像 李华
网站建设 2026/4/12 21:11:46

企业级自动化难题如何破?RPA+Python协同方案全解析

第一章&#xff1a;企业级自动化困局与协同破局之道 企业在推进自动化进程中&#xff0c;常陷入工具割裂、流程孤岛与团队协作低效的困境。不同部门采用异构系统&#xff0c;缺乏统一接口标准&#xff0c;导致数据无法流转&#xff0c;运维成本陡增。真正的破局关键在于构建以协…

作者头像 李华
网站建设 2026/4/15 14:16:52

离线智能打码方案:保护隐私的最佳实践

离线智能打码方案&#xff1a;保护隐私的最佳实践 1. 引言&#xff1a;AI 人脸隐私卫士的诞生背景 在社交媒体、公共展示和数据共享日益频繁的今天&#xff0c;个人面部信息泄露已成为不可忽视的安全隐患。一张未经处理的合照可能暴露多人的身份信息&#xff0c;尤其在教育、…

作者头像 李华