RK3588開發(fā)板Android14 6.1.99 適配 LT9211 MIPI-LVDS 模塊手記

原創(chuàng) 作者 forlinx 2026-03-17 15:25:00 RK3588開發(fā)板 屏幕適配

作者簡介 我是燕南無聲,擁有十二年嵌入式開發(fā)經(jīng)驗,長期深耕 ARM 架構(gòu)嵌入式平臺開發(fā),專注系統(tǒng)底層定制、軟硬件適配優(yōu)化、源碼編譯、開發(fā)環(huán)境搭建與底層驅(qū)動開發(fā)。在工業(yè)級嵌入式場景中,長期負責產(chǎn)品落地、問題定位與系統(tǒng)穩(wěn)定性優(yōu)化,擅長用容器等工具解決復雜開發(fā)環(huán)境沖突,能夠高效處理各類嵌入式底層與應用適配問題。

適配背景與平臺特性分析

適配背景

我正在基于飛凌嵌入式RK3588開發(fā)板,做Android14系統(tǒng)(內(nèi)核版本6.1.99)下的工業(yè)級顯示方案開發(fā),需要完成LT9211 MIPI轉(zhuǎn)LVDS模塊的適配,配套1280×800分辨率的LVDS屏幕與GT911觸摸屏,核心目標是穩(wěn)定點亮屏幕并實現(xiàn)正常觸控功能。

RK3588開發(fā)板

適配前的平臺特性分析

瑞芯微RK3588平臺的Android14 BSP,顯示框架采用標準DRM架構(gòu),MIPI DSI橋接芯片的適配,核心離不開三個閉環(huán)環(huán)節(jié):驅(qū)動正確編譯進內(nèi)核、設備樹硬件資源無沖突配置、顯示時序與屏幕參數(shù)完全匹配。

在動手修改前,我先通過編譯環(huán)境命令確認了內(nèi)核配置的分層規(guī)則:OK3588-Android14的內(nèi)核配置由rockchip_defconfig(芯片級)、android-14.config(系統(tǒng)級)、OK3588-C-Android.config(板級)三個文件組成。所有板級自定義配置必須放在第三個文件中,避免后續(xù)SDK升級時配置被覆蓋,這是工業(yè)級開發(fā)必須遵守的版本兼容規(guī)則。

具體適配實施步驟

一、驅(qū)動層部署

1. LT9211驅(qū)動文件與Makefile配置

LT9211是龍訊的MIPI轉(zhuǎn)LVDS橋接芯片,屬于DRM bridge類驅(qū)動,必須放在對應驅(qū)動目錄下才能被框架正確識別。

將lt9211.c驅(qū)動文件拷貝到kernel-6.1/drivers/gpu/drm/bridge目錄下,修改同目錄的Makefile文件,在文件末尾添加編譯配置,確保驅(qū)動被編譯進內(nèi)核鏡像。

Makefile
# 原有配置保留,末尾新增如下內(nèi)容
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. 內(nèi)核配置修改

本次適配配套的是GT911觸摸屏,需要在內(nèi)核中啟用Goodix系列觸控驅(qū)動。按照之前確認的配置分層規(guī)則,修改板級配置文件kernel-6.1/kernel/configs/OK3588-C-Android.config,添加如下配置:

Plain Text
# 原有配置保留,新增如下內(nèi)容
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通道為例。所有原有沖突配置均采用注釋方式保留,不直接刪除,方便后續(xù)回滾與排查。

1. 新增觸控引腳節(jié)點定義

原設備樹中ft5x06觸控節(jié)點占用了本次GT911所需的GPIO引腳,先注釋原有節(jié)點,新增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節(jié)點注釋,避免引腳沖突 */
    /*
    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節(jié)點新增設備配置

LT9211與GT911均掛在I2C2總線上,在&i2c2節(jié)點下新增兩個設備的節(jié)點配置,同時注釋原有沖突的ft5x06設備節(jié)點。

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節(jié)點注釋,保留作為參考 */
    /*
    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轉(zhuǎn)LVDS橋接芯片設備節(jié)點 */
    lt9211: lt9211@2d {
        compatible = "lontium,lt9211";
        reg =;
        // reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>; 
        status = "okay";
    };
    /* GT911觸摸屏設備節(jié)點 */
    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節(jié)點屏參修改

替換&dsi0節(jié)點原有的1024×600時序配置,適配本次1280×800分辨率LVDS屏幕的時序參數(shù),所有參數(shù)需要嚴格對應屏幕規(guī)格書,避免出現(xiàn)黑屏、花屏問題。

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 =;
    };
};

三、內(nèi)核編譯與燒錄

為提高驗證效率,無需全量編譯Android系統(tǒng),使用命令單獨編譯內(nèi)核,編譯完成后生成的boot.img鏡像位于rockdev/Image-ok3588_c/目錄下,單獨燒錄該鏡像即可完成適配。

Bash
# 進入SDK根目錄
cd /home/forlinx/work/OK3588-android14-source/
# 加載編譯環(huán)境,選擇對應產(chǎn)品分支
source build/envsetup.sh;lunch ok3588_c-userdebug
# 單獨編譯內(nèi)核并生成boot鏡像
./build.sh -Ku

驗證與經(jīng)驗總結(jié)

按照上述步驟完成修改與編譯后,將生成的boot.img燒錄至飛凌嵌入式RK3588開發(fā)板,上電后可正常點亮1280×800分辨率的LVDS屏幕,Android14系統(tǒng)桌面完整顯示,GT911觸摸屏觸摸響應正常,無漂移、斷觸現(xiàn)象,連續(xù)72小時開機測試無顯示異常。

這次適配的核心經(jīng)驗,在于瑞芯微平臺Android高版本的DRM顯示框架適配,必須嚴格遵循SDK的配置分層規(guī)則,板級自定義配置不能侵入芯片級與系統(tǒng)級配置文件,這是保證后續(xù)SDK可升級、方案可維護的核心;同時MIPI轉(zhuǎn)LVDS橋接芯片的適配,驅(qū)動、設備樹、時序三個環(huán)節(jié)必須形成閉環(huán),任何一個參數(shù)的偏差都可能導致顯示異常。工業(yè)級產(chǎn)品的開發(fā),從來不是能點亮就結(jié)束,保留完整的參考配置、做好版本兼容、保證長期穩(wěn)定性,才是嵌入式開發(fā)的根本。

咨詢立即獲得專屬報價

華北區(qū)負責人二維碼

華北區(qū)負責人

華東區(qū)負責人二維碼

華東區(qū)負責人

華南區(qū)負責人二維碼

華南區(qū)負責人

中西區(qū)負責人二維碼

中西區(qū)負責人

相關(guān)產(chǎn)品 >

  • FET3588-C核心板

    RK3588芯片系列是Rockchip推出的旗艦級工業(yè)級產(chǎn)品,采用先進的8nm制程工藝,集成4核Cortex-A76+4核Cortex-A55架構(gòu),A76主頻高達2.4GHz,A55核主頻高達1.8GHz,能夠提供強大的性能支撐。飛凌FET3588-C核心板經(jīng)過了嚴苛的環(huán)境溫度測試和壓力測試,確保在高端應用中能夠穩(wěn)定運行。您可以通過飛凌提供的rk3588開發(fā)套件充分評估和驗證其性能。

    了解詳情
    FET3588-C核心板
  • OK3588-C開發(fā)板

    rk3588系列板卡是飛凌嵌入式基于國產(chǎn)瑞芯微旗艦級 RK3588處理器開發(fā)設計,集成了四核Cortex-A76和四核Cortex-A55,性能強大,可通過rk3588開發(fā)板產(chǎn)品簡介了解了rk3588功能特點,評估芯片性能參數(shù),飛凌為RK3588提供了豐富的參考資料,包括rk3588原理圖、使用手冊、應用筆記等,為便于客戶對開發(fā)套件的參考,rk3588開發(fā)板做了多重防護設計,像靜電、浪涌、脈沖群等,產(chǎn)品穩(wěn)定可靠,值得推薦。

    了解詳情
    OK3588-C開發(fā)板
  • FET3576-C核心板

    飛凌嵌入式RK3576核心板集成了強大的處理器和豐富的接口,提供出色的計算能力和擴展性。RK3576核心板以其卓越的性能、低功耗和穩(wěn)定性,成為工業(yè)、AIoT、邊緣計算、智能移動終端等領(lǐng)域的理想選擇。無論是數(shù)據(jù)處理還是邊緣計算,RK3576都能為項目提供強大的硬件支持。核心板推薦選擇飛凌嵌入式瑞芯微系列RK3576J業(yè)級核心板、RK3576高性能核心板。 了解詳情
    FET3576-C核心板
  • OK3576-C開發(fā)板

    RK3576開發(fā)板CPU選用瑞芯微RK3576,采用核心板+底板分體式設計,采用4個100Pin板對板連接器的方式將處理器的功能引腳以最便利的方式全部引出,并針對不同的功能做了深度優(yōu)化,方便用戶二次開發(fā)的同時簡化用戶設計,為您的項目提供良好的評估及設計依據(jù)。RK3576是瑞芯微專為AIoT市場打造的一款高算力、高性能、低功耗的國產(chǎn)化應用處理器,集成了4個ARM Cortex-A72和4個 ARM Cortex-A53高性能核;內(nèi)置6TOPS超強算力NPU;嵌入式3D GPU加之帶有MMU的專用2D硬件引擎,最大限度提升顯示性能;H.265超清硬解碼,最高支持8K分辨率。 了解詳情
    OK3576-C開發(fā)板

推薦閱讀 換一批 換一批