RK3588開發(fā)板Android14 6.1.99 適配 LT9211 MIPI-LVDS 模塊手記
forlinx
2026-03-17 15:25:00
RK3588開發(fā)板
屏幕適配
作者簡(jiǎn)介 我是燕南無聲,擁有十二年嵌入式開發(fā)經(jīng)驗(yàn),長(zhǎng)期深耕 ARM 架構(gòu)嵌入式平臺(tái)開發(fā),專注系統(tǒng)底層定制、軟硬件適配優(yōu)化、源碼編譯、開發(fā)環(huán)境搭建與底層驅(qū)動(dòng)開發(fā)。在工業(yè)級(jí)嵌入式場(chǎng)景中,長(zhǎng)期負(fù)責(zé)產(chǎn)品落地、問題定位與系統(tǒng)穩(wěn)定性優(yōu)化,擅長(zhǎng)用容器等工具解決復(fù)雜開發(fā)環(huán)境沖突,能夠高效處理各類嵌入式底層與應(yīng)用適配問題。
適配背景與平臺(tái)特性分析
適配背景
我正在基于飛凌嵌入式RK3588開發(fā)板,做Android14系統(tǒng)(內(nèi)核版本6.1.99)下的工業(yè)級(jí)顯示方案開發(fā),需要完成LT9211 MIPI轉(zhuǎn)LVDS模塊的適配,配套1280×800分辨率的LVDS屏幕與GT911觸摸屏,核心目標(biāo)是穩(wěn)定點(diǎn)亮屏幕并實(shí)現(xiàn)正常觸控功能。
適配前的平臺(tái)特性分析
瑞芯微RK3588平臺(tái)的Android14 BSP,顯示框架采用標(biāo)準(zhǔn)DRM架構(gòu),MIPI DSI橋接芯片的適配,核心離不開三個(gè)閉環(huán)環(huán)節(jié):驅(qū)動(dòng)正確編譯進(jìn)內(nèi)核、設(shè)備樹硬件資源無沖突配置、顯示時(shí)序與屏幕參數(shù)完全匹配。
在動(dòng)手修改前,我先通過編譯環(huán)境命令確認(rèn)了內(nèi)核配置的分層規(guī)則:OK3588-Android14的內(nèi)核配置由rockchip_defconfig(芯片級(jí))、android-14.config(系統(tǒng)級(jí))、OK3588-C-Android.config(板級(jí))三個(gè)文件組成。所有板級(jí)自定義配置必須放在第三個(gè)文件中,避免后續(xù)SDK升級(jí)時(shí)配置被覆蓋,這是工業(yè)級(jí)開發(fā)必須遵守的版本兼容規(guī)則。
具體適配實(shí)施步驟
一、驅(qū)動(dòng)層部署
1. LT9211驅(qū)動(dòng)文件與Makefile配置
LT9211是龍訊的MIPI轉(zhuǎn)LVDS橋接芯片,屬于DRM bridge類驅(qū)動(dòng),必須放在對(duì)應(yīng)驅(qū)動(dòng)目錄下才能被框架正確識(shí)別。
將lt9211.c驅(qū)動(dòng)文件拷貝到kernel-6.1/drivers/gpu/drm/bridge目錄下,修改同目錄的Makefile文件,在文件末尾添加編譯配置,確保驅(qū)動(dòng)被編譯進(jìn)內(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ū)動(dòng)。按照之前確認(rèn)的配置分層規(guī)則,修改板級(jí)配置文件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
二、設(shè)備樹硬件資源配置
設(shè)備樹修改路徑為kernel-6.1/arch/arm64/boot/dts/rockchip/OK3588-C-Common.dtsi,本次適配以MIPI0通道為例。所有原有沖突配置均采用注釋方式保留,不直接刪除,方便后續(xù)回滾與排查。
1. 新增觸控引腳節(jié)點(diǎn)定義
原設(shè)備樹中ft5x06觸控節(jié)點(diǎn)占用了本次GT911所需的GPIO引腳,先注釋原有節(jié)點(diǎn),新增GT911的中斷、復(fù)位引腳復(fù)用配置,避免引腳資源沖突。
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é)點(diǎn)注釋,避免引腳沖突 */
/*
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é)點(diǎn)新增設(shè)備配置
LT9211與GT911均掛在I2C2總線上,在&i2c2節(jié)點(diǎn)下新增兩個(gè)設(shè)備的節(jié)點(diǎn)配置,同時(shí)注釋原有沖突的ft5x06設(shè)備節(jié)點(diǎn)。
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é)點(diǎn)注釋,保留作為參考 */
/*
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橋接芯片設(shè)備節(jié)點(diǎn) */
lt9211: lt9211@2d {
compatible = "lontium,lt9211";
reg =;
// reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
status = "okay";
};
/* GT911觸摸屏設(shè)備節(jié)點(diǎn) */
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é)點(diǎn)屏參修改
替換&dsi0節(jié)點(diǎn)原有的1024×600時(shí)序配置,適配本次1280×800分辨率LVDS屏幕的時(shí)序參數(shù),所有參數(shù)需要嚴(yán)格對(duì)應(yīng)屏幕規(guī)格書,避免出現(xiàn)黑屏、花屏問題。
Plain Text
/* 原有1024×600時(shí)序配置注釋,保留參考 */
/*
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屏對(duì)應(yīng)時(shí)序配置 */
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)核編譯與燒錄
為提高驗(yàn)證效率,無需全量編譯Android系統(tǒng),使用命令單獨(dú)編譯內(nèi)核,編譯完成后生成的boot.img鏡像位于rockdev/Image-ok3588_c/目錄下,單獨(dú)燒錄該鏡像即可完成適配。
Bash # 進(jìn)入SDK根目錄 cd /home/forlinx/work/OK3588-android14-source/ # 加載編譯環(huán)境,選擇對(duì)應(yīng)產(chǎn)品分支 source build/envsetup.sh;lunch ok3588_c-userdebug # 單獨(dú)編譯內(nèi)核并生成boot鏡像 ./build.sh -Ku
驗(yàn)證與經(jīng)驗(yàn)總結(jié)
按照上述步驟完成修改與編譯后,將生成的boot.img燒錄至飛凌嵌入式RK3588開發(fā)板,上電后可正常點(diǎn)亮1280×800分辨率的LVDS屏幕,Android14系統(tǒng)桌面完整顯示,GT911觸摸屏觸摸響應(yīng)正常,無漂移、斷觸現(xiàn)象,連續(xù)72小時(shí)開機(jī)測(cè)試無顯示異常。
這次適配的核心經(jīng)驗(yàn),在于瑞芯微平臺(tái)Android高版本的DRM顯示框架適配,必須嚴(yán)格遵循SDK的配置分層規(guī)則,板級(jí)自定義配置不能侵入芯片級(jí)與系統(tǒng)級(jí)配置文件,這是保證后續(xù)SDK可升級(jí)、方案可維護(hù)的核心;同時(shí)MIPI轉(zhuǎn)LVDS橋接芯片的適配,驅(qū)動(dòng)、設(shè)備樹、時(shí)序三個(gè)環(huán)節(jié)必須形成閉環(huán),任何一個(gè)參數(shù)的偏差都可能導(dǎo)致顯示異常。工業(yè)級(jí)產(chǎn)品的開發(fā),從來不是能點(diǎn)亮就結(jié)束,保留完整的參考配置、做好版本兼容、保證長(zhǎng)期穩(wěn)定性,才是嵌入式開發(fā)的根本。
咨詢立即獲得專屬報(bào)價(jià)
華北區(qū)負(fù)責(zé)人
華東區(qū)負(fù)責(zé)人
華南區(qū)負(fù)責(zé)人
中西區(qū)負(fù)責(zé)人
相關(guān)產(chǎn)品 >
-
FET3588-C核心板
RK3588芯片系列是Rockchip推出的旗艦級(jí)工業(yè)級(jí)產(chǎn)品,采用先進(jìn)的8nm制程工藝,集成4核Cortex-A76+4核Cortex-A55架構(gòu),A76主頻高達(dá)2.4GHz,A55核主頻高達(dá)1.8GHz,能夠提供強(qiáng)大的性能支撐。飛凌FET3588-C核心板經(jīng)過了嚴(yán)苛的環(huán)境溫度測(cè)試和壓力測(cè)試,確保在高端應(yīng)用中能夠穩(wěn)定運(yùn)行。您可以通過飛凌提供的rk3588開發(fā)套件充分評(píng)估和驗(yàn)證其性能。
了解詳情
-
OK3588-C開發(fā)板
rk3588系列板卡是飛凌嵌入式基于國(guó)產(chǎn)瑞芯微旗艦級(jí) RK3588處理器開發(fā)設(shè)計(jì),集成了四核Cortex-A76和四核Cortex-A55,性能強(qiáng)大,可通過rk3588開發(fā)板產(chǎn)品簡(jiǎn)介了解了rk3588功能特點(diǎn),評(píng)估芯片性能參數(shù),飛凌為RK3588提供了豐富的參考資料,包括rk3588原理圖、使用手冊(cè)、應(yīng)用筆記等,為便于客戶對(duì)開發(fā)套件的參考,rk3588開發(fā)板做了多重防護(hù)設(shè)計(jì),像靜電、浪涌、脈沖群等,產(chǎn)品穩(wěn)定可靠,值得推薦。
了解詳情
-
FET3576-C核心板
飛凌嵌入式RK3576核心板集成了強(qiáng)大的處理器和豐富的接口,提供出色的計(jì)算能力和擴(kuò)展性。RK3576核心板以其卓越的性能、低功耗和穩(wěn)定性,成為工業(yè)、AIoT、邊緣計(jì)算、智能移動(dòng)終端等領(lǐng)域的理想選擇。無論是數(shù)據(jù)處理還是邊緣計(jì)算,RK3576都能為項(xiàng)目提供強(qiáng)大的硬件支持。核心板推薦選擇飛凌嵌入式瑞芯微系列RK3576J業(yè)級(jí)核心板、RK3576高性能核心板。 了解詳情
-
OK3576-C開發(fā)板
RK3576開發(fā)板CPU選用瑞芯微RK3576,采用核心板+底板分體式設(shè)計(jì),采用4個(gè)100Pin板對(duì)板連接器的方式將處理器的功能引腳以最便利的方式全部引出,并針對(duì)不同的功能做了深度優(yōu)化,方便用戶二次開發(fā)的同時(shí)簡(jiǎn)化用戶設(shè)計(jì),為您的項(xiàng)目提供良好的評(píng)估及設(shè)計(jì)依據(jù)。RK3576是瑞芯微專為AIoT市場(chǎng)打造的一款高算力、高性能、低功耗的國(guó)產(chǎn)化應(yīng)用處理器,集成了4個(gè)ARM Cortex-A72和4個(gè) ARM Cortex-A53高性能核;內(nèi)置6TOPS超強(qiáng)算力NPU;嵌入式3D GPU加之帶有MMU的專用2D硬件引擎,最大限度提升顯示性能;H.265超清硬解碼,最高支持8K分辨率。 了解詳情

