0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文打通Rockchip DP调试:从原理到实战,覆盖RK3399/RK3576/RK3588全平台

jf_44130326 来源:Linux1024 2026-02-04 16:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发中,DisplayPortDP接口的调试常让工程师头疼——不同芯片特性差异大、Type-C与标准口配置不同、高分辨率输出异常、MST多屏适配难尤其是Rockchip RK3399RK3576RK3588这三款主流芯片,DP功能和调试逻辑各有侧重。

今天从原理配置代码调试排坑,手把手教你搞定全平台DP调试,新手也能快速上手!

一、先懂原理:三大芯片DP核心特性差异

调试前必须明确芯片能力,避免功能不支持却硬调的无用功。先看三款芯片的DP核心参数对比:

特性

RK3399

RK3576

RK3588

DP版本

1.2

1.4a

1.4a

最大分辨率

4K@60HzVOPB

4K@120Hz

8K@30Hz

MST多流模式

不支持

支持(3Stream

不支持

VOP数量/能力

2个(VOPB4KVOPL2.6K

3Video Port(对应3Stream

4Video Port(仅0-2支持DP

PHY类型

Type-C PHY(与USB3.0共用)

USBDP PHY(与USB3.0共用)

USBDP PHY(双PHY

特殊功能

支持PHY信号微调

支持MST菊花链/ HUB

支持双DP拼接(Split Mode

内核版本适配

4.4及以上

6.1

5.10/6.1

关键原理补充

1.VOPDP的连接逻辑

RK3399DP可选择VOPB(高分辨率)或VOPL(低分辨率)作为输入,同一时间仅用1U-PHY01);

RK35761DP控制器+ 3StreamStream-0对应VOP Video Port04K)、Stream-1对应Port12K)、Stream-2对应Port21080P),MST模式需按能力绑定;

RK35882DP控制器(DP0/DP1),各对应1Stream,仅Video Port0-2可输出到DP,不支持MST

1.PHY lane复用规则

三款芯片均与USB3.0共用PHYType-C接口下需通过PD协议协商lane映射(如RK3399支持C/D/E三种映射,RK3576/RK3588支持正反插自动切换),标准口需手动配置lane序号(4 lane/2 lane)。

二、实战配置:分模式+分平台落地

DP配置核心分Type-C Alt ModeType-C接口)和Legacy Mode(标准DP口),不同平台、不同内核版本配置差异较大,直接上可复用的实战方案。

1.通用前提:编译选项与固件准备

无论哪款芯片,先确保内核编译选项开启:

# 必须开启的选项CONFIG_DRM_DP_AUX_CHARDEV=y # 支持DPCD读写CONFIG_DRM_ROCKCHIP=y    # Rockchip DRM核心CONFIG_USB_TYPEC_TCPM=y   # Type-C TCPM框架(5.10+内核)CONFIG_EXTCON_PD_VIRTUAL=y # RK3399 4.19及以下内核需开启(虚拟PD)

特殊固件:RK3399 DP需加载微控制器固件,存放路径为/lib/firmware/rockchip/dptx.bin,缺失会导致驱动加载失败。

2. Type-C Alt Mode配置(主流场景)

Type-C接口需通过PD协议协商laneHPD,核心是配置DP控制器+ PHY+PD芯片,分平台示例:

1RK3399(内核5.10+TCPM架构)

# 1. 使能DP控制器,绑定VOPB(高分辨率)&cdn_dp {  status ="okay";  phys = <&tcphy0_dp>; # 关联PHY0};&dp_in_vopb { status ="okay"; }; # 用VOPB&dp_in_vopl { status ="disabled"; }; # 禁用VOPL# 2. 配置Type-C PHY(TCphy0)&tcphy0{  status ="okay";  svid = <0xff01>; # DP固定SVID  orientation-switch; # 支持正反插  port {   #address-cells = <1>;   #size-cells = <0>;   # 正反插切换端点    tcphy0_orientation_switch: endpoint@0 {      reg = <0>;      remote-endpoint = <&usbc0_orien_sw>;    };   # DP Alt Mode切换端点    tcphy_dp_altmode_switch: endpoint@1 {      reg = <1>;      remote-endpoint = <&dp_mode_sw>;    };  };};# 3. 配置PD芯片(以fusb302为例)&i2c2 {  usbc0: fusb302@22 {    compatible ="fcs,fusb302";    reg = <0x22>;    interrupts = <&gpio3 RK_PB4 IRQ_TYPE_LEVEL_LOW>;    vbus-supply = <&vbus5v0_typec>;    status ="okay";    usb_con: connector {      compatible ="usb-c-connector";      displayport = <&cdn_dp>; # 绑定DP控制器      altmodes {        altmode@0 {          reg = <0>;          svid = <0xff01>; # 对应DP          vdo = <0xffffffff>;        };      };     # 绑定PHY切换端点      ports {        port@1 {          reg = <1>;          dp_mode_sw: endpoint {            remote-endpoint = <&tcphy_dp_altmode_switch>;          };        };      };    };  };};

2RK3576(支持MSTType-C模式)

# 1. 使能DP控制器+Stream-0(MST必须开Stream-0)&dp { status ="okay"; }; # 主DP节点&dp0 { status ="okay"; };# Stream-0(SST/MST都需开)&dp0_in_vp2 { status ="okay"; }; # Stream-0绑定VOP Port2# 2. 配置USBDP PHY&usbdp_phy0 {  status ="okay";  orientation-switch;  svid = <0xff01>; # SBU引脚(AUX_CH复用)  sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;  sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;  port {   # 同RK3399,绑定orientation和altmode端点  };};# 3. PD芯片配置(同RK3399,用fusb302/hub311)

3RK3588(双DPType-C模式)

# 使能DP0+绑定VOP Port2&dp0 { status ="okay"; };&dp0_in_vp2 { status ="okay"; };# 配置USBDP PHY0&usbdp_phy0 {  status ="okay";  orientation-switch;  svid = <0xff01>;  sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;  sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;};# PD芯片配置(同前)

3. Legacy Mode(标准DP口)配置

标准DP口无需PD协商,但需手动配置HPD引脚lane映射,以RK3399(内核5.10+)为例:

# 1. DP控制器配置(用U-PHY0,绑定VOPB)&cdn_dp {  status ="okay";  phys = <&tcphy0_dp>;  pinctrl-names ="default";  pinctrl-0 = <&dp_hpd>; # HPD引脚配置  hpd-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>; # HPD用GPIO4_D1};&dp_in_vopb { status ="okay"; };# 2. PHY lane映射(4 lane模式,按硬件原理图适配)&tcphy0 {  status ="okay";  rockchip,dp-lane-mux = <2 3 0 1>; # DP lane0→PHY2,lane1→PHY3,lane2→PHY0,lane3→PHY1};# 3. 配置HPD引脚&pinctrl {  dp {    dp_hpd: dp-hpd {      rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_down>;    };  };};

注意RK3399内核4.19及以下需打HPD通知补丁extcon-pd-virtual驱动),开启CONFIG_EXTCON_PD_VIRTUAL=y,具体补丁见官方指南2.2.2节。

三、代码路径:快速定位核心文件

调试时需修改驱动或DTS,先记准各平台的核心代码位置:

模块

RK3399

RK3576/RK3588

DP控制器驱动

drivers/gpu/drm/rockchip/cdn-dp-*.c

drivers/gpu/drm/rockchip/dw-dp.c

PHY驱动

drivers/phy/rockchip/phy-rockchip-typec.c

drivers/phy/rockchip/phy-rockchip-usbdp.c

参考DTS

arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dtsi

RK3576rk3576-evb1.dtsiRK3588rk3588-evb1-lp4.dtsi

PD芯片驱动

drivers/usb/typec/tcpm/fusb302.c(通用)

drivers/usb/typec/tcpm/fusb302.c

示例:若RK3399 DP Link Training失败,可查看cdn-dp-link-training.c中的cdn_dp_link_train()函数,添加日志打印协商过程;RK3588 PHY异常则查phy-rockchip-usbdp.cudphy_power_on/off()函数。

四、调试方法:6大核心工具+平台特有技巧

DP调试的核心是先看状态,再查日志,最后硬软结合,以下方法覆盖90%场景:

1.基础状态排查:确认DP是否被识别

所有调试从连接状态开始,通过/sys/class/drm节点快速判断:

# 1. 查看所有DRM设备(找DP节点,如card0-DP-1)ls/sys/class/drm/# 2. 查看DP使能/连接状态cat/sys/class/drm/card0-DP-1/enabled # enabled/disabledcat/sys/class/drm/card0-DP-1/status # connected/disconnected# 3. 查看显示器支持的分辨率cat/sys/class/drm/card0-DP-1/modes# 4. 保存EDID(用于分析显示器参数)cat/sys/class/drm/card0-DP-1/edid > /data/dp_edid.bin
wKgZO2kamRqAVoGfAAExWsJSSsQ369.png

解读:若statusdisconnectedType-C口查PD协商,标准口查HPD引脚;若enableddisabled,查驱动加载或DTS绑定。

2.强制控制DP:快速测试硬件是否正常

当怀疑软件使能逻辑有问题时,强制开启/关闭DP验证硬件:

# 强制禁用DPechooff > /sys/class/drm/card0-DP-1/status# 强制使能DPechoon > /sys/class/drm/card0-DP-1/status# 恢复热插拔检测echodetect > /sys/class/drm/card0-DP-1/status

3. DPCD读写:排查AUX_CH通信

AUX_CHDP控制通道,读写DPCDDP配置数据)可判断AUX是否正常:

# 前提:开启CONFIG_DRM_DP_AUX_CHARDEV=y# 读取DPCD(例:读0x00200开始的2个寄存器ddif=/dev/drm_dp_aux0 bs=1 skip=$((0x00200)) count=2 status=none |od-tx1# 写入DPCD(例:向0x100写入0x0a、0x80)echo-e -n"x0ax80"|ddof=/dev/drm_dp_aux0 bs=1 seek=$((0x100)) count=2 status=none

正常标志:读取返回ret=0,异常则返回-110(超时),需查AUX时钟或硬件。

4. Type-C专属调试:PD协商与TCPM日志

Type-C口连接异常(如disconnected),优先查PD芯片和TCPM框架日志:

# 1. 查看PD/TCPM节点(以fusb302为例)ls/sys/kernel/debug/usb/ # 找fusb302-2-0022(PD芯片)、tcpm-2-0022(TCPM框架)# 2. 查看TCPM协商日志(关键看DISCOVER_IDENTITY/ENTER_MODE等阶段)cat/sys/kernel/debug/usb/tcpm-2-0022# 3. 查看Type-C正反插状态cat/sys/class/typec/port0/orientation # normal/reverse# 4. 确认DP Alt Mode是否识别(svid=0xff01为DP)cat/sys/class/typec/port0-partner/port0-partner.0/svid

正常流程:日志需包含

DISCOVER_IDENTITYDISCOVER_SVIDSDFP_TO_UFP_ENTER_MODEATTENTION,缺失则查PD芯片供电或I2C通信。

5.平台特有调试技巧

1RK3399PHY信号微调

DP输出花屏、闪屏,可能是PHY信号幅值/加重不足,需调整寄存器(UPHY0基地址0xff7c0000):

# 1. 电压幅值调整(lane0,0x00最大,0x36最小)io-40xff7d01400x2a # 中等幅值# 2. 预加重调整(lane0,0xff最大,0x00最小)io-40xff7d01300x15 # 中等加重# 3. boost使能(增强信号,lane0)io-40xff7d07840x700 # 最大boost

2RK3576MST多屏信息查看

MST模式下需确认拓扑和带宽分配,通过以下命令排查:

# 查看MST拓扑、带宽、连接器路径cat/sys/kernel/debug/dri/0/DP-1/dp_mst_info

重点看MST Port Info(设备连接是否正确)和Atomic state info(带宽是否超限)。

3RK3588:高分辨率配置验证

4K@120Hz输出需提高VOP ACLK,验证是否生效:

# 查看VOP ACLK(需为800MHz)cat/sys/kernel/debug/clk/clk_summary | grep"aclk_vop"

6.日志增强:调整DRM打印等级

当需要更详细的调试信息(如ATOMIC提交、DP Link Training),动态开启日志:

# DRM日志等级:0x10=ATOMIC,0x100=DP相关echo0x110 > /sys/module/drm/parameters/debug # 同时开启ATOMIC和DP日志# 查看日志dmesg | grep -i"dp"

五、问题解决:5类高频异常实战排坑

结合官方FAQ和实际项目经验,整理最常遇到的问题及解决方案:

1.插入DP无显示,但Link Training成功

现象:日志有clock recovery succeeded+channel equalization succeeded,但显示器无图像。

原因&解决

dclk分配错误:日志中set dclk_vop2 to XXX, get YYY(请求值实际值),需查时钟树配置(cat /sys/kernel/debug/clk/clk_summary),联系FAE确认分频参数;

未分配图层:执行cat /sys/kernel/debug/dri/0/summary,若无Esmartx-win0: ACTIVE,需用户空间分配显示缓冲区(如调用DRM接口创建图层)。

wKgZO2kamRqANfyZAAFmORchI2c572.png

2. Type-CDP始终disconnected

现象statusdisconnectedTCPM日志无协商流程。

解决步骤

1.PD芯片供电:确认vbus5v0_typec是否正常(用万用表测电压);

2.提高I2C速率:在PD芯片节点添加clock-frequency = <400000>(默认100K,提至400K);

3.认证Type-C线:部分线材不支持DP Alt Mode,优先用原装线;

4.RK3399内核4.19及以下:确认extcon-pd-virtual驱动已加载(lsmod | grep extcon_pd_virtual)。

3. AUX_CH异常(ret=-110

现象DPCD读写超时,日志有failed to probe DP link: -110

解决方向

aux16m时钟异常RK3576/RK3588默认clk_aux16m15.84MHz,查cat /sys/kernel/debug/clk/clk_summary | grep "aux16m",异常则恢复GPLL1188MHz

DP dual mode转接线RK3588不支持dual modeDP+HDMI TMDS),若用“DPHDMI”线,需换HDMI2.0及以上版本线材;

信号干扰Type-C直连时,断开USB DP/DM引脚测试,换屏蔽性好的线材。

4. RK3399标准DPHPD无响应

现象:标准DP口插入显示器,status仍为disconnected

解决

内核5.10+:确认DTShpd-gpios配置正确,引脚电平是否随插拔变化(用gpiod_get_value命令);

内核4.19及以下:打HPD通知补丁(extcon-pd-virtual驱动),开启CONFIG_EXTCON_PD_VIRTUAL=yDTS添加虚拟PD节点(见官方指南2.2.3节)。

5. RK3576 MST多屏输出部分无显示

现象3Stream中某路无图像,dp_mst_info显示带宽充足。

解决

检查StreamVOP绑定:必须按能力匹配绑定(Video Port0→Stream-0Port1→Stream-1Port2→Stream-2),DTS中禁用不匹配的endpoint

分辨率过滤:Stream-2最大支持1080P,若接2K显示器会被过滤,需限制用户空间输出分辨率。

六、总结:全平台调试关键点

1.RK3399:关注内核版本适配(TCPM/EXTCON)、PHY信号微调、HPD引脚配置;

2.RK3576MST模式需算带宽(总带宽≤7.97Gbps)、Stream-VOP严格绑定、AUX时钟检查;

3.RK3588:双DP配置区分DP0/DP14K@120Hz需提VOP ACLK、避免dual mode转接线。

最后给个通用调试流程:先看连接状态再查驱动日志硬件测信号(PHY/AUX软件调配置(DTS /时钟),按层排查,DP问题很快就能定位!

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

    关注

    5209

    文章

    20656

    浏览量

    337026
  • Rockchip
    +关注

    关注

    0

    文章

    92

    浏览量

    19654
  • RK3588
    +关注

    关注

    8

    文章

    588

    浏览量

    7556
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞芯微RK3588RK3576技术参数详解

    电子发烧友网报道(/李弯弯)瑞芯微不久前表示,2025年上半年AIoT市场延续蓬勃发展趋势,因应AI在端侧应用发展需求,公司旗舰产品RK3588、次新产品RK3576等带领AIoT各产品线继续
    的头像 发表于 09-23 08:20 9152次阅读
    瑞芯微<b class='flag-5'>RK3588</b>与<b class='flag-5'>RK3576</b>技术参数详解

    米尔RK3576RK3588怎么选?-看这篇就够了

    /H.265。解码能力RK3588支持最高8K@60fps H.265,RK3576最高支持8K@30fps。两者都具备很强的视频编解码能力,在8K的视频编解码能力上RK3588更胜
    发表于 12-27 11:44

    性能到成本,深度剖析 RK3588RK3576 怎么选

    RK3588支持最高8K@60fps H.265,RK3576最高支持8K@30fps。两者都具备很强的视频编解码能力,在8K的视频编解码能力上RK3588更胜筹。 支持多屏异显两者
    发表于 02-09 09:10

    RK3576 vs RK3588:为何越来越多的开发者转向RK3576

    瑞芯微(Rockchip)最新发布的 RK3576 经推出,就吸引了大量原本关注 RK3588 的开发者。RK3588 作为旗舰级芯片,性
    发表于 05-30 08:46

    RK这2款旗舰芯片RK3588 PK RK3576,谁是最优选

    定性能的基础上,具有较高的性价比。新创云智能科技 展现出这2款主流平台代表作,第款:RK3588核心板第二款:RK3576开发板附:RK3576
    发表于 07-10 18:24

    rk3588rk3588s的区别

    rk3588rk3588s的区别 Rockchip家专业的半导体公司,成立于2001年,总部位于中国深圳,主要从事集成电路的设计、开发和销售。他们的热门产品
    的头像 发表于 08-15 16:44 2.1w次阅读

    rk3588rk3399的区别

    rk3588rk3399的区别 Rockchip家位于中国深圳的芯片设计公司,已经发布了系列的处理器芯片。其中,
    的头像 发表于 08-15 16:44 6092次阅读

    RK3588RK3399的区别

    RK3588RK3399的区别 RK3588RK3399是两款常用的ARM架构芯片,它们有着各自的特点和应用场景。本文将详细介绍这两款芯片的不同之处。
    的头像 发表于 08-15 17:04 1w次阅读

    RK3588RK3399强在哪里?如何选择

    的是RK3399,那么这两款SoC,大家应该如何选择呢?现在我们就一起来看一下。CPU我们可以看到,两款产品在CPU差异上,RK3588采用8核64位架构,主频可达2.4G
    的头像 发表于 10-09 13:48 8196次阅读
    <b class='flag-5'>RK3588</b>比<b class='flag-5'>RK3399</b>强在哪里?如何选择

    新品体验 | RK3576开发板

    RK3399RK3566、RK3568、RK3588RK3576等型号的核心板与评估板。鉴于RK3
    的头像 发表于 11-01 08:08 3408次阅读
    新品体验 | <b class='flag-5'>RK3576</b>开发板

    RK3588RK3576芯片对比

    在AIoT领域,瑞芯微的RK3588RK3576都是备受瞩目的处理器。以下将从多个方面对它们进行详细对比。
    的头像 发表于 11-04 15:55 5762次阅读
    <b class='flag-5'>RK3588</b>与<b class='flag-5'>RK3576</b>芯片对比

    RK3576单板发布倒计时:RK3399RK3576对比

    好多人说RK3576RK3399的升级版,某种程度上也可以这么说,RK3576在强大的多媒体功能的基础上,性能和接口都进行了升级 、工艺 性能
    的头像 发表于 12-03 16:59 2784次阅读
    <b class='flag-5'>RK3576</b>单板发布倒计时:<b class='flag-5'>RK3399</b>与<b class='flag-5'>RK3576</b>对比

    RK3588RK3576区别解析

    以下是RK3576RK3588对比: 电鱼电子SBC-RK3576单板 核心性能:RK3576为四核A72@2.2GHz + 四核A53@1.8GHz + M0协处理器,算力 58K
    的头像 发表于 12-17 14:03 4420次阅读
    <b class='flag-5'>RK3588</b>与<b class='flag-5'>RK3576</b>区别解析

    RK3588RK3576怎么选?

    在中国半导体产业的版图中,瑞芯微作为国内SoC芯片领跑者,凭借其在处理器芯片设计领域的深厚积累和持续创新,推出很多智能应用处理器芯片,在嵌入式系统领域得到大规模的应用。RK3588RK3576系列
    的头像 发表于 12-26 08:04 4037次阅读
    <b class='flag-5'>RK3588</b>和<b class='flag-5'>RK3576</b>怎么选?

    迅为RK3588 vs RK3576开发板旗舰与次旗舰的终极对决

    迅为RK3588 vs RK3576开发板旗舰与次旗舰的终极对决
    的头像 发表于 03-24 14:09 2356次阅读
    迅为<b class='flag-5'>RK3588</b> vs <b class='flag-5'>RK3576</b>开发板旗舰与次旗舰的终极对决