i.MX8MP LVDS 显示子系统全解析:设备树配置与 DRM 架构详解


🔥 推荐:《Yocto项目实战教程:高效定制嵌入式Linux系统》
京东正版促销,欢迎支持原创!
链接:https://item.jd.com/15020438.html



i.MX8MP LVDS 显示子系统全解析:设备树配置与 DRM 架构详解

在基于 NXP i.MX8MP 平台进行 LVDS 显示屏适配时,理解 Linux DRM 框架与设备树之间的映射关系至关重要。本文结合完整的设备树节点与实际显示路径,系统梳理 CRTC → LDB Bridge → LVDS Panel 的逻辑链路,并说明每一部分在 Linux 内核中的定位与作用,助你精准调试和配置 LVDS 显示。


一、背景概览:什么是 LVDS 显示链路?

LVDS(Low Voltage Differential Signaling)是一种用于中短距离高速图像信号传输的电气协议,常用于工业和嵌入式系统中的平板液晶屏。相比 HDMI、MIPI,它更强调稳定性和 EMI 抑制,适合固定分辨率的定制化显示屏。

在 Linux DRM 框架中,LVDS 并非单独的子系统,而是由多个组件协同完成显示功能:

  • CRTC(显示控制器):负责产生时序信号与像素流
  • Bridge(桥):将标准 RGB 像素信号转换为 LVDS 协议
  • Panel(面板):最终接收信号并显示内容

二、完整设备树配置解析

以下为实际项目中使用的 i.MX8MP + AUO LVDS 屏的完整设备树配置,分为三部分讲解:

1. /lcdif2:显示控制器(CRTC)

lcdif2: lcd-controller@32e90000 {
    compatible = "fsl,imx8mp-lcdif2";
    ...
    lcdif2_disp: port@0 {
        lcdif2_disp_ldb_ch0: endpoint@0 {
            remote-endpoint = <&ldb_ch0>;
        };
        lcdif2_disp_ldb_ch1: endpoint@1 {
            remote-endpoint = <&ldb_ch1>;
        };
    };
};
  • lcdif2 是图像源(CRTC),输出像素流
  • endpoint@0/1 与 LDB 通道连接

2. /ldb:LVDS Bridge + Encoder

ldb: ldb@32ec005c {
    compatible = "fsl,imx8mp-ldb";
    fsl,dual-channel;
    ...

    lvds-channel@0 {
        port@0 {
            ldb_ch0: endpoint {
                remote-endpoint = <&lcdif2_disp_ldb_ch0>;
            };
        };
        port@1 {
            lvds_out: endpoint {
                remote-endpoint = <&panel_lvds_in>;
            };
        };
    };

    lvds-channel@1 {
        port@0 {
            ldb_ch1: endpoint {
                remote-endpoint = <&lcdif2_disp_ldb_ch1>;
            };
        };
    };
};
  • ldb 是桥(bridge),也是 encoder 的承载组件
  • lvds-channel@0 承担主输出功能,连接面板
  • lvds-channel@1fsl,dual-channel 模式下协助输出,但不挂 panel

3. /lvds0_panel:显示屏节点(Panel)

lvds0_panel {
    compatible = "auo,g156hat03";
    power-supply = <&reg_lvds_3v3>;
    backlight = <&lvds_backlight>;

    port {
        panel_lvds_in: endpoint {
            remote-endpoint = <&lvds_out>;
        };
    };
};
  • 面板直接挂在 LDB 的输出端(port@1)
  • 无需单独的 connector 节点

三、Linux DRM 架构逻辑图(结合设备树)

+-------------------------------+
|         DRM Framebuffer       |
+-------------------------------+
                |
                v
+-------------------------------+     /lcdif2
|             CRTC              |     → lcd-controller
|     (驱动: imx-lcdif-crtc)    |
+-------------------------------+
                |
                v
+-------------------------------+     非独立节点,封装于 ldb
|            Encoder            |     → drm_encoder
+-------------------------------+
                |
                v
+-------------------------------+     /ldb
|            Bridge             |     → ldb@32ec005c
|   (驱动: imx8mp-ldb.c)        |
+-------------------------------+
                |
                v
+-------------------------------+     /lvds0_panel
|             Panel             |     → auo,g156hat03
|   (驱动: panel-simple)        |
+-------------------------------+
                |
                v
+-------------------------------+
|         实际物理屏幕输出       |
+-------------------------------+

在这里插入图片描述

四、核心概念快速总结

组件类型设备树节点作用说明
Framebuffer图像缓冲区应用写入像素数据
CRTC控制器/lcdif2输出像素与时序
Encoder编码器LDB 内部实现通常由 bridge 封装提供
Bridge显示桥/ldb转换为 LVDS 电气协议信号
Panel面板设备/lvds0_panel接收 LVDS 并显示内容

五、关键源码路径参考

功能源码路径
LCDIF2drivers/gpu/drm/imx/imx-lcdif-crtc.c
LDB Bridgedrivers/gpu/drm/imx/imx8mp-ldb.c
面板驱动drivers/gpu/drm/panel/panel-simple.c

六、常见调试建议

  • 使用 modetestdrm_info 工具查看桥接关系是否注册成功
  • 确保 panelldbremote-endpoint 配对正确
  • dual-channel 模式下只需挂接一个输出端口
  • 若无显示,检查 LVDS PHY 时钟、backlight、电源域是否正确配置

七、结语

本文系统讲解了 i.MX8MP 平台 LVDS 显示路径的设备树配置与内核 DRM 架构映射关系。理解 CRTC → Bridge → Panel 的每一环,对成功点亮屏幕、定制显示链路、调试显示问题具有重要价值。

如果你正在构建自己的 LVDS 显示系统,建议将此架构作为模板,灵活调整设备树与硬件连接即可。

如需更深入的 HDMI、DSI 或多屏支持分析,欢迎关注后续博文更新。


📌 推荐阅读:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值