RK平台显示排障系统化:黑屏、MIPI、HDMI 到信号质量一条链路

电子说

1.4w人已加入

描述

显示问题的本质是"画面从 VOP2 合成 → 输出接口 → 屏/显示器"这条链路在哪一段断了、或时序/信号不对。本文把显示链路讲透:先定位黑屏/无信号,再逐个接口(MIPI DSI、HDMI)排查,最后是花屏/撕裂与信号质量。

HDMI

排障从"画面到哪一步就没了"入手:应用层能设置吗(modetest)、内核接口起来了没(dmesg)、屏/显示器本身通不通(背光/EDID)。下面六个问题域覆盖显示排障的主要场景。

一、黑屏 / 无信号:从哪一段断起

黑屏先分清"是完全没信号,还是有信号没画面"。"没信号"大多在输出接口→屏这一段(接口没使能、屏没上电、线缆/时序);"有信号但黑"在VOP2→应用这一段(图层/帧缓冲没提交)。

怎么确认 常见原因
应用/DRM modetest -p 能看到 connector/mode、modetest -s 能出画面 应用没开 CRTC/plane、没有提交帧缓冲
内核接口 dmesg | grep -i drm 看 rockchip-drm/vop2/接口 probe、/sys/kernel/debug/dri/* dts 里接口 status 没开、接口没连到 VP
屏/显示器 背光亮不亮、面板 reset 时序、HDMI 显示器能否识别 背光没开、屏没上电、线缆/信号

接口在 dts 里的开关是"黑屏"高发原因:本板 MIPI/HDMI 就是靠 #define HDMI 0/1 切换 &dsi/&hdmi 的 status。

二、MIPI DSI 屏点不亮:时序、背光、初始化序列

本板 MIPI 屏(1200x1920)的配置在 kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7608-v1a-mipi.dtsi,是排查"点不亮"的对照依据。点不亮按"背光 → reset → 初始化序列 → 时序 → lane"顺序查:

检查项 本板配置(dts) 出问题表现
背光 pwm-backlight(pwm1_6ch_5),默认亮度 200 屏发亮但全黑/偏暗——先分"背光亮没亮"
reset reset-gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_LOW>,reset 10ms 复位时序不对,面板不初始化
初始化序列 panel-init-sequence = [05 78 01 11 / 05 14 01 29](sleep out → display on) 序列错/缺,屏不出图
时序 1200x1920,clock 150MHz,porch 见 display-timings 时序错 → 花屏/闪屏/无图
lane / 速率 dsi,lanes = <4>,RGB888,video burst,可选 rockchip,lane-rate lane 数与屏不符、速率不够 → 无图或花屏

MIPI DSI 控制器驱动是 drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c。排查时可先用 modetest 确认 dsi connector 是否 probe 出来、分辨率是否正确,再回头逐项对 dts。

三、HDMI 输出排障:EDID、分辨率与 CEC

RK3576 HDMI 驱动是 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c。HDMI 问题大多围绕 EDID(显示器告诉内核支持什么分辨率)和输出是否协商到

现象 根因 处理
有信号但分辨率不对/拉伸 EDID 没读到或协商的分辨率与屏不符 modetest -p 看 modes;用 -s 强制分辨率
没信号/显示器不识别 hdmi 节点 status 关、EDID 读不到、DDC 线路 确认 dts hdmi 使能;查 DDC/EDID 读取日志
HDMI-CEC 控制无效 CEC 功能/物理地址 按官方 HDMI-CEC 文档核对 CEC 配置

判断链路最快的方式仍是 modetest:能列出 HDMI connector 和 modes,说明接口与 EDID 基本正常;列不出来,问题在接口/EDID/物理链路。

四、花屏 / 撕裂 / vsync

花屏和撕裂的根因不同:

花屏 :多因接口带宽不够、时序参数错、信号质量差(MIPI lane 速率/HDMI 时序),或 VOP2 图层配置乱;

撕裂(tearing) :刷屏过程中换了帧缓冲,VOP2 的 vsync 没有把 swap 同步到帧边界。应用层用带 DRM_MODE_PAGE_FLIP_ASYNC 或不等待 vblank 提交时最容易撕裂;

vsync :VOP2 的 vsync 决定刷屏节奏,rockchip_drm_vop2.c 里管理和上报,可看 /sys/kernel/debug/dri 的 vblank 计数。

先用 modetest -s 出静态画面排除应用因素;若静态也花,回查时序/带宽/信号;只有动态撕裂,多半是 vsync/页翻转同步问题。

五、modetest 与 DRM 直接显示

验证显示链路,modetest(libdrm 自带)是最快的工具:

 

modetest -p                    # 列 connector / modes / encodermodetest -c                    # 列出所有 connector 状态modetest -s 32:1920x1080@60    # 在 connector 32 上强制出一帧(验证输出)# 直接显示 API(RK 提供,绕开合成,直接送帧)# kernel-6.1/drivers/gpu/drm/rockchip/rockchip_drm_direct_show.c

 

RK 的 rockchip_drm_direct_show(alloc buffer → get plane/crtc → commit)用于在带显示的调试里直接送帧,配合官方 DRM_Direct_Show 文档可作为"绕过应用层"的验证手段。

六、信号质量:DP 眼图 SI 测试等

画面"时好时坏"、特定速率才花屏,多半是信号完整性问题。这类要靠仪器:示波器/眼图看 MIPI/HDMI/DP 的信号质量,按官方 SI 测试指南测量与判据(如 DP 的 Rockchip_DisplayPort_SI_Test_Guide_CN.pdf)。软件侧能做的:降速率/降分辨率验证、查 lane 数配置、确认线缆与连接器。

本节涉及示波器/眼图等仪器,需硬件实验室配合;软件侧结论以"降参验证 + dts 配置核对"为主。

显示排障按链路走:黑屏先分段定位(应用/接口/屏)→ MIPI 屏按 背光/reset/序列/时序/lane 逐项 → HDMI 看 EDID/协商 → 花屏撕裂分静态动态 → modetest/直接显示做快速验证 → 信号问题上仪器。链路每一段都有 dts 配置、dmesg、modetest 三层证据可查。

官方文档依据:

 

docs/cn/Common/DISPLAY/DRM/Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf、DRM_Direct_Show_CN.pdf、HDMI_CN.pdf、HDMI-CEC_CN.pdf、MIPI_DSI2_CN.pdf、eDP_CN.pdf、LVDS_CN.pdf、DP/DisplayPort_CN.pdf、DP/DisplayPort_SI_Test_Guide_CN.pdf、docs/cn/Linux/Graphics/Rockchip_Developer_Guide_Linux_Graphics_CN.pdf

 

SDK 源码依据:

 

kernel-6.1/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c、rockchip_drm_vop2_reg.c、dw-mipi-dsi2-rockchip.c、dw_hdmi-rockchip.c、rockchip_lvds.c、rockchip_rgb.c、rockchip_drm_direct_show.c、kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7608-v1a-mipi.dtsi(1200x1920 屏/背光/初始化序列/时序)、ido-evb7609-v1a-mipi.dts(#define HDMI 切换)、kernel-6.1/arch/arm64/configs/rockchip_linux_rk3576_defconfig(CONFIG_DRM_ROCKCHIP=y)

 

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分