手把手教你学PCIE(3.2)--PCIe 配置空间和配置机制详解

目录

PCIe 配置空间和配置机制详解

1. 配置空间 (Configuration Space)

1.1 结构

1.2 寄存器

固定功能寄存器

可编程寄存器

2. 配置机制

2.1 配置访问模式

Type 0

Type 1

2.2 配置周期

2.3 配置空间访问示例

3. 扩展能力结构

4. 配置管理

总结


PCIe 配置空间和配置机制详解

PCI Express (PCIe) 的配置空间和配置机制是 PCIe 系统的重要组成部分,它们用于管理和配置 PCIe 设备。下面是关于 PCIe 配置空间和配置机制的详细介绍。

1. 配置空间 (Configuration Space)

1.1 结构
  • 大小:每个 PCIe 设备的配置空间大小为 256 字节。
  • 组织:配置空间分为多个寄存器,每个寄存器占用一定的字节数。
1.2 寄存器

配置空间中的寄存器分为两类:固定功能寄存器和可编程寄存器。

固定功能寄存器
  • Vendor ID (VID):唯一标识设备制造商的 16 位代码。
  • Device ID (DID):唯一标识设备型号的 16 位代码。
  • Class Code:标识设备类型的 8 位代码,分为三部分:
    • Base Class Code:基本设备类型。
    • Sub-Class Code:子设备类型。
    • Interface Code:接口类型。
  • Revision ID:标识设备版本的 8 位代码。
  • Command Register:控制设备操作的 16 位寄存器。
  • Status Register:反映设备状态的 16 位寄存器。
  • Bar (Base Address Registers):用于映射设备的内存和 I/O 空间,最多 6 个。
  • Cardbus CIS Pointer:指向 CardBus 兼容性信息结构的指针。
  • Sub System Vendor ID:子系统制造商的 16 位代码。
  • Sub System ID:子系统型号的 16 位代码。
  • Expansion ROM Base Address:指向扩展 ROM 的基地址。
  • Capabilities Pointer:指向设备能力结构的指针。
  • Interrupt Line:中断线路号。
  • Interrupt Pin:中断引脚号。
可编程寄存器
  • Extended Capabilities:扩展能力寄存器,用于支持更多的高级功能,如 MSI-X、AER 等。

2. 配置机制

2.1 配置访问模式

PCIe 设备的配置访问可以通过多种方式进行,主要有两种模式:Type 0 和 Type 1。

Type 0
  • 适用范围:仅适用于直接连接到 Root Complex 的 Endpoint。
  • 地址格式:配置访问地址包含设备号(Device Number)、功能号(Function Number)和寄存器偏移量。
  • 访问方式:通过特殊的配置周期(Configuration Cycle)直接访问设备的配置空间。
Type 1
  • 适用范围:适用于通过 Switch 连接到 Root Complex 的 Endpoint。
  • 地址格式:配置访问地址包含总线号(Bus Number)、设备号(Device Number)、功能号(Function Number)和寄存器偏移量。
  • 访问方式:通过特殊的配置周期(Configuration Cycle)和 Switch 的路由功能访问设备的配置空间。
2.2 配置周期
  • 发起者:Root Complex 发起配置周期。
  • 目标:指定的 PCIe 设备。
  • 过程
    1. 地址生成:Root Complex 生成配置访问地址。
    2. 配置周期:Root Complex 发送配置请求。
    3. 路由:Switch 根据配置地址路由请求到目标设备。
    4. 响应:目标设备读取或写入配置空间,并返回响应。
2.3 配置空间访问示例

假设我们要读取一个通过 Switch 连接的 Endpoint 的 Vendor ID,可以按照以下步骤进行:

  1. 生成地址:生成 Type 1 配置访问地址,包括总线号、设备号、功能号和寄存器偏移量(0x00 - Vendor ID)。
  2. 发送请求:Root Complex 发送配置读取请求。
  3. 路由请求:Switch 根据地址信息将请求路由到目标 Endpoint。
  4. 读取数据:目标 Endpoint 读取 Vendor ID 并返回给 Root Complex。
  5. 接收响应:Root Complex 接收并处理响应数据。

3. 扩展能力结构

  • 定义:扩展能力结构用于支持 PCIe 设备的高级功能。
  • 结构
    • Capability ID:标识扩展能力的类型。
    • Next Pointer:指向下一个扩展能力结构的指针。
    • Capability Data:具体的扩展能力数据。

4. 配置管理

  • 枚举:系统启动时,Root Complex 对所有 PCIe 设备进行枚举,读取设备的配置信息。
  • 初始化:根据配置信息初始化设备,设置 BAR、中断线路等。
  • 动态配置:运行时可以根据需要动态修改设备的配置信息。

总结

PCIe 配置空间和配置机制是 PCIe 系统的核心部分,它们确保了系统的灵活性和可管理性。通过理解配置空间的结构和配置机制的工作原理,可以更好地管理和调试 PCIe 设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值