PCIe 工作原理与linux驱动器第一篇
配置
为了保持与PCI软件配置机制的兼容性,所有PCI Express元件都具有PCI兼容的配置空间。每个 PCIe 链路源自逻辑 PCI-PCI 桥,并作为该桥的辅助总线映射到配置空间。根端口是一个 PCI-PCI 桥结构,它从 PCI Express 根联合体发起 PCI Express 链路。
PCIe 交换机由多个 PCI-PCI 桥结构表示,将 PCIe 链路连接到内部逻辑 PCI 总线。交换机上行端口是一个 PCI-PCI 桥;该桥的辅助总线代表交换机的内部路由逻辑。交换机下游端口是从内部总线桥接至代表来自 PCIe 交换机的下游 PCIe 链路的总线的 PCI-PCI 桥。只有代表交换机下游端口的 PCI-PCI 桥可以出现在内部总线上。由类型 0 配置空间头表示的端点不允许出现在内部总线上。
PCIe端点作为设备中的单个功能映射到配置空间,该设备可能包含多个功能或仅包含该功能。 PCIe端点和传统端点需要出现在由根联合体发起的层次结构域之一内,这意味着它们出现在以根端口作为头的树的配置空间中。 联合体集成端点和根联合体事件收集器不会出现在由根联合体发起的层次结构域之一内。这些在配置空间中显示为根端口的对等体。
除非另有说明,否则设备的配置空间定义中的要求适用于单功能设备以及多功能设备的每个功能。
PCIe将每个功能的配置空间扩展至4096字节,PCI 本地总线规范允许的配置空间为 256 字节。 PCIe配置空间分为 PCI 3.0 兼容区域(由功能配置空间的前 256 字节组成)和 PCIe扩展配置空间(由剩余配置空间组成)。 PCI 3.0 兼容配置空间可以使用 PCI 本地总线规范中定义的机制或PCIe增强配置访问机制 (ECAM) 进行访问。使用任一访问机制进行的访问是等效的。 PCIe扩展配置空间只能通过使用 ECAM 来访问。
PCIe 配置空间分布