PCIE子系统RC与EP初始化及时序详解

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

一、PCIE RC驱动初始化流程

PCI子系统初始化 + Host Bridge注册 + 总线扫描 + 设备枚举

1.1 获取关键资源

DBI寄存器(配置空间)
ATU(地址转换单元)
IO/MEM窗口
IRQ(MSI / INTx)

1.2 使能硬件资源

clk enable
reset deassert:把设备从复位状态释放出来”
power on
PHY初始化

对应电平:
assert:通常是 拉低(或拉高,取决于设计)
deassert:恢复正常电平

1.3 建立ATU(地址转换)

RC必须配置 outbound ATU:
dw_pcie_prog_outbound_atu(…)
作用:
CPU地址 → PCIe地址(访问EP配置空间/内存)

1.4 设置为RC模式

dw_pcie_setup_rc(pp);

主要做:
设置 class code(PCI_CLASS_BRIDGE_PCI)
配置 BAR0(DBI)
打开 LTSSM(链路训练)

1.5 驱动解析

PCIe扫描EP设备流程(核心):
总流程
pci_scan_root_bus_bridge
└── pci_scan_child_bus
└── pci_scan_slot
└── pci_scan_single_device
└── pci_bus_read_config

RC probe
├── 硬件初始化(clk/reset/phy)
├── 配置ATU
├── 建立Host Bridge
├── 启动链路(LTSSM)
└── pci_scan_root_bus
├── 枚举Bus
├── 读取Vendor ID
├── 创建pci_dev
├── 解析BAR
├── 分配资源
└── 驱动匹配

二、RC与EP初始化时序

2.1 要点

  1. REFCLK 和 电源必须先稳定
  2. PERST# 必须先保持 Assert(EP处于复位)
  3. RC 初始化完成后,再释放 PERST#
  4. EP 启动后,RC 才能开始 LTSSM 建链

RC准备好 → 放开EP(PERST#)→ 双方PHY开始训练

2.2 时间轴


电源 ────────────────稳定────────────────────

REFCLK ────────────────稳定────────────────────

PERST# ────────0───────────────┐

释放(1)

RC 初始化中 ───────────→ Ready

EP Reset状态 ───────→ 启动 → Ready

LTSSM Detect → L0

扫描 pci scan

2.3 详细过程讲解

  1. 上电阶段
    t0: 电源稳定(VDD)
    t1: REFCLK稳定
    t2: PERST# = 0(保持复位)
    此时:
    EP不工作
    RC可以初始化自己

  2. RC初始化阶段
    RC做:
    初始化控制器
    初始化 PHY
    配置 ATU
    准备好 LTSSM

  3. 释放 PERST#(关键点)
    t3: PERST# 从 0 → 1(deassert)
    要求:
    REFCLK稳定后至少100ms(典型值)

  4. EP启动阶段
    PERST#释放后:
    EP开始内部初始化
    配置空间可访问
    PHY ready

  5. 链路训练(LTSSM)
    Detect → Polling → Config → L0
    这时:
    RC PHY -> EP PHY 开始通信

  6. 枚举阶段
    RC开始:
    pci_scan_root_bus()

三、其他相关链接

1、PCIe物理层总结-PCIE专题知识(一)

2、PCIe数据链路层图文总结-PCIe专题知识(二)

3、PCIe物理层链路训练和初始化总结-PCIe专题知识(三)

4、PCIe物理层弹性缓存机制解析-PCIe专题知识(四)

5、PCIe热插拔机制(详细)总结-PCIe专题知识(五)

6、PCI总线及发展历程总结

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值