开发者必备,10 分钟搞定 RK3588 PCIE 拆分!

[复制链接]
875|0
gztwdz4379 发表于 2025-11-13 15:30 | 显示全部楼层 |阅读模式
本帖最后由 gztwdz4379 于 2025-11-13 15:35 编辑

前言:

在嵌入式开发中,PCIe 接口的灵活配置直接影响设备扩展能力与性能发挥。RK3588作为旗舰芯片,其 PCIe 拆分机制更是让硬件设计与软件调试拥有了更多可能性。今天这篇技术笔记,就带大家快速吃透 RK3588 PCIE 拆分的核心逻辑、配置步骤与实战技巧,轻松上手!


一、RK3588 PCIE拆分映射关系图


PCIE的拆分机制的核心主要在于对于 PCIE PHY 的灵活拆分,并根据实际拆分情况进行PCIE控制器的匹配,从而实现不同 Lane 组合的扩展方案。

RK3588 PCIe 5 个 Controller 和 5 个 PHY 映射关系图:


RK3588 的 PCIe 资源堪称豪华,这也是拆分能力的基础:

  • 5 个 PCIe 控制器:1 个 4Lane DM 模式(支持 RC/EP)、1 个 2Lane RC 模式、3 个 1Lane RC 模式
  • 两类 PHY 资源:PCIe 3.0 PHY(2 个 Port 共 4 个 Lane,支持拆分)+ 3 个 PCIe 2.0 Combo PHY(可与 SATA/USB 共用)



简单说,拆分的本质就是 “把 4 个PCIE 3.0 Lane 按需求拆成不同组合”,比如 4Lane×1、2Lane×2、2Lane+1Lane+1Lane,或是 1Lane×4,再通过设备树(DTS)配置让控制器与拆分后的 Lane 精准对接。

以PCIE 3.0拆分为示例,常见拆分组合直接套用:

  • 4Lane×1:占用 3.0 PHY Port0+Port1 全通道,对接 4Lane 控制器
  • 2Lane×2:Port0、Port1 各占 2Lane,分别对接 4Lane、2Lane 控制器
  • 2Lane+1Lane+1Lane:Port0 占 2Lane,Port1 拆为两个 1Lane,对接 3 个控制器
  • 1Lane×4:Port0、Port1 各拆为两个 1Lane,对接 4 个控制器


注意事项:拆分后若某组 PCIe 未使用,需将其禁用(disabled),但电源必须持续供电,否则会导致 PCIe 异常!


二、实战配置:DTS 配置详解


拆分的核心操作都在设备树(DTS)中完成,无需修改驱动,关键配置分两类:控制器配置和 PHY 配置。

2.1 控制器常用配置
  • compatible:指定工作模式(RC/EP),RK3588 需配置为 “rockchip,rk3588-pcie”(RC 模式)或 “rockchip,rk3588-pcie-ep”(EP 模式)
  • reset-gpios:必配项!设置 PERST# 复位信号,多 Lane 拆分时每个节点需配置不同引脚
  • num-lanes:Lane 数量,按实际拆分情况配置(如 1、2、4)
  • phys:指定 PHY 引用,Combo PHY 需同时声明工作模式(如<&combphy1_ps PHY_TYPE_PCIE>)



2.2 PHY 配置核心

PCIe 3.0 PHY 的模式配置是关键,直接决定拆分方式:

  1. &pcie30phy {
  2.     rockchip,pcie30-phymode = <PHY_MODE_PCIE_NABIBI>; // 拆分模式
  3.     status = "okay";
  4. };

[color=rgba(0, 0, 0, 0.9)]

不同拆分对应的模式参数:

  • 4Lane×1:PHY_MODE_PCIE_AGGREGATION(4)
  • 2Lane×2:PHY_MODE_PCIE_NANBNB(0)
  • 2Lane+1Lane+1Lane:PHY_MODE_PCIE_NANBBI(1)
  • 1Lane×4:PHY_MODE_PCIE_NABIBI(3)



2.3 典型场景配置示例
场景 1:3.0 4Lane RC + 2 个 2.0 1Lane

  1. // 电源配置
  2. vcc3v3_pcie30: vcc3v3-pcie30 {
  3.     compatible = "regulator-fixed";
  4.     regulator-name = "vcc3v3_pcie30";
  5.     regulator-min-microvolt = <3300000>;
  6.     regulator-max-microvolt = <3300000>;
  7.     enable-active-high;
  8.     gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
  9.     startup-delay-us = <5000>;
  10.     vin-supply = <&vcc12v_dcin>;
  11. };
  12. // Combo PHY使能
  13. &combphy1_ps { status = "okay"; };
  14. &combphy2_psu { status = "okay"; };
  15. // 1Lane控制器配置
  16. &pcie2x1l0 {
  17.     reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
  18.     rockchip,skip-scan-in-resume;
  19.     status = "okay";
  20. };
  21. &pcie2x1l1 {
  22.     reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
  23.     pinctrl-names = "default";
  24.     pinctrl-0 = <&rtl8111_isolate>;
  25.     status = "okay";
  26. };
  27. // 3.0 PHY配置(4Lane模式)
  28. &pcie30phy {
  29.     rockchip,pcie30-phymode = <PHY_MODE_PCIE_AGGREGATION>;
  30.     status = "okay";
  31. };
  32. // 4Lane控制器配置
  33. &pcie3x4 {
  34.     reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
  35.     vpcie3v3-supply = <&vcc3v3_pcie30>;
  36.     status = "okay";
  37. };

场景 2:3.0 拆分为 2 个 2Lane + 3 个 2.0 1Lane

核心修改:PHY 模式改为PHY_MODE_PCIE_NANBNB,4Lane 控制器配置num-lanes = <2>,启用 2Lane 控制器(&pcie3x2)。

场景 3:3.0 拆分为 4 个 1Lane + 1 个 2.0 1Lane

核心修改:PHY 模式改为PHY_MODE_PCIE_NABIBI,4Lane、2Lane 控制器均配置num-lanes = <1>,禁用对应 Combo PHY。


三、硬件设计关键要点


软件配置再完美,硬件不匹配也会功亏一篑,这3点必须注意:

1. 物理链路:确保拆分后的 Lane 与控制器的 TX/RX 信号对应,比如 1Lane×4 时,4 个通道需分别连接 PHY 的不同 Lane;RK3588 可支持多种 PCIe 模式的组合,最多可以 5 种模式同时使用。


2. 时钟配置:3.0 的 REFCLKP/N 仅支持输入,4 个 1Lane 拆分时需为每个通道单独提供时钟;2.0 的 REFCLKP/N 支持输入 / 输出,默认由 RK3588 提供;


3. 复位信号:每个拆分节点的 CLKREQ、WAKEN、PERST# 引脚必须独立配置并对应,否则无法稳定建立链路;



四、总结


由此我们可以看到,在RK3588中其PCIe拆分的核心精髓,在于对PCIe 3.0 PHY物理通道的灵活划分,并与对应的控制器进行精准匹配。

成功拆分配置关键在于:

1、硬件设计:需要保证物理链路、时钟、复位信号与拆分之后的通道配置一一对应。拆分本质上其实就是对于PCIE 3.0 PHY进行Lane通道的拆分,并将其与对应的控制器进行匹配和连接。

2、软件设置:需要通过设备树的配置来精确描述硬件链接,核心在于配置好PCIE PHY的相关模式,以及管理好各个控制器节点的复位信号以及使能状态。

通过理解PCIE的资源分配图,了解控制器以及PHYy之间的映射关系,注意DTS设备树的配置方式,便能够在开发过程中快速实现RK3588 PCIE 高速接口方案。

广州眺望电子科技有限公司专注于嵌入式处理器模组的研发与应用,提供从硬件设计到驱动开发,系统解决方案的全流程技术支持。欢迎关注我们的公众号,获取更多嵌入式项目开发实战经验。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部