4. 连接器(Connector)信息解析:Connector类型、状态、物理尺寸、EDID解析

连接器(Connector)是 DRM 子系统中连接 GPU 与显示设备的物理或逻辑接口。在 drm_info 输出中,Connector 信息是判断显示链路是否建立、分辨率是否匹配、物理连接是否正常的关键入口。本节将深入解析 Connector 的核心属性:类型、状态、物理尺寸以及 EDID 数据。

4.1 Connector 类型与枚举

DRM 框架定义了多种 Connector 类型,用于标识不同的物理接口标准。常见类型如下表所示:

枚举值 类型名称 物理接口 典型应用
1 VGA DB-15 老式显示器、投影仪
2 DVI-I DVI 集成模拟/数字 桌面显示器
3 DVI-D DVI 纯数字 数字显示器
4 DVI-A DVI 纯模拟 极少见
5 Composite RCA 复合视频 老式电视
6 S-Video 分离视频 老式电视
7 LVDS 低压差分信号 笔记本内置屏
8 Component 色差分量 老式高清设备
9 DIN 9 针 DIN 专业设备
10 DisplayPort DP 标准接口 现代显示器、笔记本
11 HDMI-A HDMI Type A 电视、显示器
12 HDMI-B HDMI Type B 双链路 HDMI
13 TV 电视调谐器 电视卡
14 eDP 嵌入式 DisplayPort 笔记本内置屏
15 Virtual 虚拟连接器 虚拟机、远程桌面
16 DSI MIPI DSI 手机、平板
调试提示:在 drm_info 输出中,Connector 类型通常以数字枚举值显示。例如 Connector 10 (DP-1) 表示 DisplayPort 接口。如果看到 Connector 0 (Unknown),说明驱动未正确初始化连接器类型,需要检查硬件或驱动兼容性。

4.2 Connector 状态机

每个 Connector 在 DRM 内部维护一个状态机,决定当前是否可用于显示输出。状态转换关系如下图所示:

Connector 状态转换图 unknown connected disconnected status unknown 状态转换由热插拔检测(HPD)中断或轮询触发,驱动自动更新

状态含义:

  • unknown:初始状态,驱动尚未检测到连接器上的设备。
  • connected:检测到显示器已连接,EDID 可读取,可进行模式设置。
  • disconnected:未检测到显示器,或 HPD 信号为低电平。
  • status unknown:检测过程出错,可能是 I2C 通信失败或 EDID 损坏。

4.3 物理尺寸与 DPI 计算

Connector 的物理尺寸(Physical Size)以毫米为单位,表示显示器的实际可视区域。该信息来自 EDID 中的 Display Descriptor。通过物理尺寸和当前分辨率,可以计算 DPI(每英寸像素数):

DPI_X = (horiz_resolution * 25.4) / physical_width_mm
DPI_Y = (vert_resolution * 25.4) / physical_height_mm
性能优化要点:DPI 值影响字体渲染和 UI 缩放策略。在 drm_info 中,如果物理尺寸显示为 0x0,说明 EDID 未提供尺寸信息,系统将使用默认 DPI(通常为 96),可能导致 HiDPI 屏幕显示模糊或过小。

物理尺寸的典型值参考:

屏幕尺寸(英寸) 物理宽度(mm) 物理高度(mm) 典型分辨率 DPI
13.3" 293 165 1920x1080 166
15.6" 344 194 1920x1080 141
24" 531 299 1920x1080 92
27" 597 336 2560x1440 109

4.4 EDID 解析:显示器的身份证

EDID(Extended Display Identification Data)是显示器通过 I2C 总线(DDC 通道)向显卡发送的 128 字节(或扩展 256 字节)数据块。它包含了显示器的所有能力信息。

EDID 数据结构主要块:

  • Header(8 字节):固定标识 00 FF FF FF FF FF FF 00,用于校验是否为有效 EDID。
  • Vendor/Product ID(10 字节):制造商 ID、产品代码、序列号。
  • EDID Version(2 字节):版本号,常见为 1.3 或 1.4。
  • Basic Display Parameters(5 字节):模拟/数字接口、色深、支持的标准。
  • Chromaticity(10 字节):色度坐标,用于色彩管理。
  • Established Timings(3 字节):标准分辨率列表。
  • Standard Timings(16 字节):8 组标准时序。
  • Detailed Timings(72 字节):4 组详细时序描述符,包含分辨率、刷新率、物理尺寸等。
  • Extension Flag(1 字节):是否有扩展块(如 CEA-861 用于 HDMI 音频)。
  • Checksum(1 字节):校验和,确保数据完整性。

EDID 解析流程如下图所示:

EDID 解析流程 读取原始 EDID 校验 Header & Checksum 解析详细时序描述符 生成可用模式列表 校验失败,回退模式 EDID 校验失败时,DRM 会使用 VESA 标准模式作为回退,但可能无法达到最佳分辨率

4.5 使用 drm_info 查看 Connector 信息

执行 drm_info 命令后,Connector 部分的典型输出如下:

Connector 10 (DP-1)
  Type: DisplayPort (10)
  Status: connected
  Physical size: 597 x 336 mm
  Subpixel: unknown
  EDID:
    EDID version: 1.4
    Manufacturer: DEL
    Product: DELL U2719D
    Serial: ABC123
    Manufacture week: 12
    Manufacture year: 2022
    EDID blocks: 2
  Modes:
    Mode 0: 2560x1440@60.00 (preferred)
    Mode 1: 1920x1080@60.00
    Mode 2: 1280x720@60.00
    Mode 3: 1024x768@60.00
  Props:
    DPMS: On
    link-status: Good
    non-desktop: 0
    TILE: 0 0 0 0 0 0 0
常见问题:如果 Status: disconnected 但显示器已物理连接,请检查:
1. 线缆是否松动或损坏。
2. 显示器电源是否开启。
3. 内核是否加载了对应的 DRM 驱动模块(如 i915、amdgpu、nouveau)。
4. 使用 cat /sys/kernel/debug/dri/0/connector_list 查看内核级连接器状态。

4.6 性能计数器与 Connector 关联

Connector 层面的性能计数器可以帮助定位显示链路瓶颈:

计数器名称 来源 说明
HPD IRQ 计数 /sys/kernel/debug/dri/*/connector_stats 热插拔中断次数,异常频繁可能表示接触不良
EDID 读取失败次数 dmesg | grep EDID EDID 读取失败会导致无法设置最佳分辨率
Link Training 失败次数 DP 专用调试接口 DP 链路训练失败会导致闪屏或黑屏
Mode Set 计数 drm_state 跟踪点 频繁 Mode Set 可能表示应用程序或窗口管理器异常
调试技巧:使用 watch -n 1 'cat /sys/kernel/debug/dri/0/connector_stats' 实时监控 Connector 状态变化。如果 HPD 计数在短时间内快速增长,应优先检查物理连接和线缆屏蔽。

4.7 本章小结

Connector 信息是显示调试的第一道关卡。通过 drm_info 可以快速获取:

  • 接口类型(DP、HDMI、eDP 等)
  • 连接状态(connected/disconnected)
  • 物理尺寸(用于 DPI 计算)
  • EDID 数据(显示器能力、支持的模式)

掌握这些信息后,开发者可以迅速定位显示输出异常的根本原因,为后续的 CRTC 和 Plane 调试打下基础。