RK3588开发板Android14 6.1.99 适配 LT9211 MIPI-LVDS 模块手记
forlinx
2026-03-17 15:25:00
RK3588开发板
屏幕适配
适配背景与平台特性分析
适配背景
我正在基于飞凌嵌入式RK3588开发板,做Android14系统(内核版本6.1.99)下的工业级显示方案开发,需要完成LT9211 MIPI转LVDS模块的适配,配套1280×800分辨率的LVDS屏幕与GT911触摸屏,核心目标是稳定点亮屏幕并实现正常触控功能。
适配前的平台特性分析
瑞芯微RK3588平台的Android14 BSP,显示框架采用标准DRM架构,MIPI DSI桥接芯片的适配,核心离不开三个闭环环节:驱动正确编译进内核、设备树硬件资源无冲突配置、显示时序与屏幕参数完全匹配。
在动手修改前,我先通过编译环境命令确认了内核配置的分层规则:OK3588-Android14的内核配置由rockchip_defconfig(芯片级)、android-14.config(系统级)、OK3588-C-Android.config(板级)三个文件组成。所有板级自定义配置必须放在第三个文件中,避免后续SDK升级时配置被覆盖,这是工业级开发必须遵守的版本兼容规则。
具体适配实施步骤
一、驱动层部署
1. LT9211驱动文件与Makefile配置
LT9211是龙讯的MIPI转LVDS桥接芯片,属于DRM bridge类驱动,必须放在对应驱动目录下才能被框架正确识别。
将lt9211.c驱动文件拷贝到kernel-6.1/drivers/gpu/drm/bridge目录下,修改同目录的Makefile文件,在文件末尾添加编译配置,确保驱动被编译进内核镜像。
| Makefile |
|---|
|
# 原有配置保留,末尾新增如下内容 obj-y += lt9211.o |
完整上下文参考:
Makefile 27 obj-$(CONFIG_DRM_SIMPLE_BRIDGE) += simple-bridge.o 28 obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o 29 obj-$(CONFIG_DRM_TOSHIBA_TC358762) += tc358762.o 30 obj-$(CONFIG_DRM_TOSHIBA_TC358764) += tc358764.o 31 obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o 32 obj-$(CONFIG_DRM_TOSHIBA_TC358768) += tc358768.o 33 obj-$(CONFIG_DRM_TOSHIBA_TC358775) += tc358775.o 34 obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/ 35 obj-$(CONFIG_DRM_TI_DLPC3433) += ti-dlpc3433.o 36 obj-$(CONFIG_DRM_TI_SN65DSI83) += ti-sn65dsi83.o 37 obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o 38 obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o 39 obj-$(CONFIG_DRM_TI_TPD12S015) += ti-tpd12s015.o 40 obj-$(CONFIG_DRM_NWL_MIPI_DSI) += nwl-dsi.o 41 obj-$(CONFIG_DRM_ITE_IT66121) += ite-it66121.o 42 obj-y += lt8912b.o 43 44 obj-y += analogix/ 45 obj-y += cadence/ 46 obj-y += imx/ 47 obj-y += lt9211.o
2. 内核配置修改
本次适配配套的是GT911触摸屏,需要在内核中启用Goodix系列触控驱动。按照之前确认的配置分层规则,修改板级配置文件kernel-6.1/kernel/configs/OK3588-C-Android.config,添加如下配置:
| Plain Text |
|---|
|
# 原有配置保留,新增如下内容 CONFIG_TOUCHSCREEN_GOODIX=y |
完整上下文参考:
Plain Text CONFIG_TOUCHSCREEN_EDT_FT5X06=y CONFIG_GPIO_PCA953X=y CONFIG_GPIO_PCA953X_IRQ=y CONFIG_SND_SOC_NAU8822=y CONFIG_NET_VENDOR_INTEL=y CONFIG_R8169=y CONFIG_E1000E=y CONFIG_RTC_DRV_PCF8563=y CONFIG_RTC_DRV_RX8010=y CONFIG_NXPWIFI=m CONFIG_VIDEO_OV5645=y CONFIG_USB_SERIAL_EXAR=y CONFIG_TOUCHSCREEN_GOODIX=y
二、设备树硬件资源配置
设备树修改路径为kernel-6.1/arch/arm64/boot/dts/rockchip/OK3588-C-Common.dtsi,本次适配以MIPI0通道为例。所有原有冲突配置均采用注释方式保留,不直接删除,方便后续回滚与排查。
1. 新增触控引脚节点定义
原设备树中ft5x06触控节点占用了本次GT911所需的GPIO引脚,先注释原有节点,新增GT911的中断、复位引脚复用配置,避免引脚资源冲突。
Plain Text
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>;
};
};
tp_int {
gt911_dsi1_gpio: gt911-dsi0-gpio {
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
/* 原ft5x06节点注释,避免引脚冲突 */
/*
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>;
};
};
};
2. I2C2节点新增设备配置
LT9211与GT911均挂在I2C2总线上,在&i2c2节点下新增两个设备的节点配置,同时注释原有冲突的ft5x06设备节点。
Plain Text
extio: tca6424@23 {
compatible = "ti,tca6424";
reg =;
interrupt-parent = <&gpio1>;
interrupts =;
gpio-controller;
#gpio-cells =;
interrupt-controller;
#interrupt-cells =;
pinctrl-0 = <&extio_int_gpio>;
pinctrl-names = "default";
status = "okay";
};
/* 原ft5x06节点注释,保留作为参考 */
/*
ft5x06_dsi0: ft5x06@38 {
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg =;
pinctrl-names = "ft5x06_default";
pinctrl-0 = <&ft5x06_dsi0_gpio>;
interrupt-parent = <&gpio3>;
interrupts =;
// irq-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
// reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
touchscreen-size-x =;
touchscreen-size-y =;
input-phy = "ft5x06 2 38/input0";
status = "okay";
}
*/
usbc0: fusb302@22 {
compatible = "fcs,fusb302";
reg =;
interrupt-parent = <&gpio1>;
interrupts =;
pinctrl-names = "default";
pinctrl-0 = <&usbc0_int>;
vbus-supply = <&vbus5v_typec>;
status = "okay";
};
/* LT9211 MIPI转LVDS桥接芯片设备节点 */
lt9211: lt9211@2d {
compatible = "lontium,lt9211";
reg =;
// reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
status = "okay";
};
/* GT911触摸屏设备节点 */
gt911_14: gt911_14_ts@14 {
compatible = "goodix,gt911";
reg =;
pinctrl-names = "default";
pinctrl-0 = <>911_dsi1_gpio>;
interrupt-parent = <&gpio3>;
interrupts =;
irq-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
// reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
touchscreen-size-x =;
touchscreen-size-y =;
// touchscreen-inverted-x;
// touchscreen-inverted-y;
touchscreen-swapped-x-y;
status = "okay";
};
};
3. DSI节点屏参修改
替换&dsi0节点原有的1024×600时序配置,适配本次1280×800分辨率LVDS屏幕的时序参数,所有参数需要严格对应屏幕规格书,避免出现黑屏、花屏问题。
Plain Text
/* 原有1024×600时序配置注释,保留参考 */
/*
disp_timings0: display-timings {
native-mode = <&dsi0_timing0>;
dsi0_timing0: timing0 {
hback-porch =;
hfront-porch =;
hactive =;
hsync-len =;
vback-porch =;
vfront-porch =;
vactive =;
vsync-len =;
clock-frequency =;
vsync-active =;
hsync-active =;
de-active =;
pixelclk-active =;
};
};
*/
/* 新增1280×800 LVDS屏对应时序配置 */
disp_timings0: display-timings {
native-mode = <&dsi0_timing0>;
dsi0_timing0: timing0 {
hback-porch =;
hfront-porch =;
hactive =;
hsync-len =;
vback-porch =;
vfront-porch =;
vactive =;
vsync-len =;
clock-frequency =;
vsync-active =;
hsync-active =;
de-active =;
pixelclk-active =;
};
};
三、内核编译与烧录
为提高验证效率,无需全量编译Android系统,使用命令单独编译内核,编译完成后生成的boot.img镜像位于rockdev/Image-ok3588_c/目录下,单独烧录该镜像即可完成适配。
Bash # 进入SDK根目录 cd /home/forlinx/work/OK3588-android14-source/ # 加载编译环境,选择对应产品分支 source build/envsetup.sh;lunch ok3588_c-userdebug # 单独编译内核并生成boot镜像 ./build.sh -Ku
验证与经验总结
按照上述步骤完成修改与编译后,将生成的boot.img烧录至飞凌嵌入式RK3588开发板,上电后可正常点亮1280×800分辨率的LVDS屏幕,Android14系统桌面完整显示,GT911触摸屏触摸响应正常,无漂移、断触现象,连续72小时开机测试无显示异常。
这次适配的核心经验,在于瑞芯微平台Android高版本的DRM显示框架适配,必须严格遵循SDK的配置分层规则,板级自定义配置不能侵入芯片级与系统级配置文件,这是保证后续SDK可升级、方案可维护的核心;同时MIPI转LVDS桥接芯片的适配,驱动、设备树、时序三个环节必须形成闭环,任何一个参数的偏差都可能导致显示异常。工业级产品的开发,从来不是能点亮就结束,保留完整的参考配置、做好版本兼容、保证长期稳定性,才是嵌入式开发的根本。
华北区负责人
华东区负责人
华南区负责人
中西区负责人
相关产品 >
-
FET3588-C核心板
RK3588芯片系列是Rockchip推出的旗舰级工业级产品,采用先进的8nm制程工艺,集成4核Cortex-A76+4核Cortex-A55架构,A76主频高达2.4GHz,A55核主频高达1.8GHz,能够提供强大的性能支撑。飞凌FET3588-C核心板经过了严苛的环境温度测试和压力测试,确保在高端应用中能够稳定运行。您可以通过飞凌提供的rk3588开发套件充分评估和验证其性能。
了解详情
-
OK3588-C开发板
rk3588系列板卡是飞凌嵌入式基于国产瑞芯微旗舰级 RK3588处理器开发设计,集成了四核Cortex-A76和四核Cortex-A55,性能强大,可通过rk3588开发板产品简介了解了rk3588功能特点,评估芯片性能参数,飞凌为RK3588提供了丰富的参考资料,包括rk3588原理图、使用手册、应用笔记等,为便于客户对开发套件的参考,rk3588开发板做了多重防护设计,像静电、浪涌、脉冲群等,产品稳定可靠,值得推荐。
了解详情
-
FET3576-C核心板
飞凌嵌入式RK3576核心板集成了强大的处理器和丰富的接口,提供出色的计算能力和扩展性。RK3576核心板以其卓越的性能、低功耗和稳定性,成为工业、AIoT、边缘计算、智能移动终端等领域的理想选择。无论是数据处理还是边缘计算,RK3576都能为项目提供强大的硬件支持。核心板推荐选择飞凌嵌入式瑞芯微系列RK3576J业级核心板、RK3576高性能核心板。 了解详情
-
OK3576-C开发板
RK3576开发板CPU选用瑞芯微RK3576,采用核心板+底板分体式设计,采用4个100Pin板对板连接器的方式将处理器的功能引脚以最便利的方式全部引出,并针对不同的功能做了深度优化,方便用户二次开发的同时简化用户设计,为您的项目提供良好的评估及设计依据。RK3576是瑞芯微专为AIoT市场打造的一款高算力、高性能、低功耗的国产化应用处理器,集成了4个ARM Cortex-A72和4个 ARM Cortex-A53高性能核;内置6TOPS超强算力NPU;嵌入式3D GPU加之带有MMU的专用2D硬件引擎,最大限度提升显示性能;H.265超清硬解码,最高支持8K分辨率。 了解详情

