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

张开发
2026/4/9 10:04:29 15 分钟阅读

分享文章

PCIE子系统RC与EP初始化及时序详解
目录一、PCIE RC驱动初始化流程1.1 获取关键资源1.2 使能硬件资源1.3 建立ATU地址转换1.4 设置为RC模式1.5 驱动解析二、RC与EP初始化时序2.1 要点2.2 时间轴2.3 详细过程讲解三、其他相关链接1、PCIe物理层总结-PCIE专题知识一2、PCIe数据链路层图文总结-PCIe专题知识二3、PCIe物理层链路训练和初始化总结-PCIe专题知识三4、PCIe物理层弹性缓存机制解析-PCIe专题知识四5、PCIe热插拔机制详细总结-PCIe专题知识五6、PCI总线及发展历程总结一、PCIE RC驱动初始化流程PCI子系统初始化 Host Bridge注册 总线扫描 设备枚举1.1 获取关键资源DBI寄存器配置空间ATU地址转换单元IO/MEM窗口IRQMSI / INTx1.2 使能硬件资源clk enablereset deassert把设备从复位状态释放出来”power onPHY初始化对应电平assert通常是 拉低或拉高取决于设计deassert恢复正常电平1.3 建立ATU地址转换RC必须配置 outbound ATUdw_pcie_prog_outbound_atu(…)作用CPU地址 → PCIe地址访问EP配置空间/内存1.4 设置为RC模式dw_pcie_setup_rc(pp);主要做设置 class codePCI_CLASS_BRIDGE_PCI配置 BAR0DBI打开 LTSSM链路训练1.5 驱动解析PCIe扫描EP设备流程核心总流程pci_scan_root_bus_bridge└── pci_scan_child_bus└── pci_scan_slot└── pci_scan_single_device└── pci_bus_read_configRC probe├── 硬件初始化clk/reset/phy├── 配置ATU├── 建立Host Bridge├── 启动链路LTSSM└── pci_scan_root_bus├── 枚举Bus├── 读取Vendor ID├── 创建pci_dev├── 解析BAR├── 分配资源└── 驱动匹配二、RC与EP初始化时序2.1 要点REFCLK 和 电源必须先稳定PERST# 必须先保持 AssertEP处于复位RC 初始化完成后再释放 PERST#EP 启动后RC 才能开始 LTSSM 建链RC准备好 → 放开EPPERST#→ 双方PHY开始训练2.2 时间轴电源 ────────────────稳定────────────────────REFCLK ────────────────稳定────────────────────PERST# ────────0───────────────┐↓释放(1)RC 初始化中 ───────────→ ReadyEP Reset状态 ───────→ 启动 → ReadyLTSSM Detect → L0扫描 pci scan2.3 详细过程讲解上电阶段t0: 电源稳定VDDt1: REFCLK稳定t2: PERST# 0保持复位此时EP不工作RC可以初始化自己RC初始化阶段RC做初始化控制器初始化 PHY配置 ATU准备好 LTSSM释放 PERST#关键点t3: PERST# 从 0 → 1deassert要求REFCLK稳定后至少100ms典型值EP启动阶段PERST#释放后EP开始内部初始化配置空间可访问PHY ready链路训练LTSSMDetect → Polling → Config → L0这时RC PHY - EP PHY 开始通信枚举阶段RC开始pci_scan_root_bus()三、其他相关链接1、PCIe物理层总结-PCIE专题知识一2、PCIe数据链路层图文总结-PCIe专题知识二3、PCIe物理层链路训练和初始化总结-PCIe专题知识三4、PCIe物理层弹性缓存机制解析-PCIe专题知识四5、PCIe热插拔机制详细总结-PCIe专题知识五6、PCI总线及发展历程总结

更多文章