designware PCIE
1. PCIE RC 驱动流程
- 开启时钟,初始化PCIE PHY 的状态,打开训练状态,若是训练完成,和EP建立了链接, (在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM(Link Training and Status State Machine))LTSSM将会进入L0状态。
- 接下来可以对EP的配置空间进行访问(前置知识,你需要了解PCIE的配置空间,mem空间,io空间),以深度优先的方式开始进行不同的设备的枚举。(不同的PCIE的控制器有不同的配置空间访问的实现方法:1.在CPU地址空间中专门划分出来256MB的空间用作配置空间的访问。2.将EP设备的PCI总线地址配置特殊寄存器来指定要访问的设备。3.和1相似,但是不需要256MB的地址空间,实现方式是每次在访问EP设备的配置空间,都需要去改iATU的映射规则(前置知识,了解iATU是什么,地址映射是什么),这样可以将同样的CPU的地址映射到不同的PCI总线的地址)
- 读到配置和地址空间 (ssdfans.com)VID和DID不为0xFFFF,说明有设备,然后进行读取设备精确信息,配置设备在PCIE总线上的mem地址。