PCI Express(PCIe)设备的枚举过程是系统在启动时自动发现和配置连接到PCIe总线的设备的过程。以下是PCIe设备的枚举过程的一般步骤:
总线扫描: 当计算机系统启动时,PCIe主机控制器开始对PCIe总线进行扫描,以识别连接到总线上的所有设备。
设备检测: 主机控制器发送特定的PCIe TLP(Transaction Layer Packet)用于检测插槽上是否存在PCIe设备。每个设备都有一个唯一的设备号。
设备初始化: 如果检测到一个设备,主机控制器会为该设备分配一个唯一的设备号,并初始化该设备。这可能包括对设备的一些寄存器进行初始化以及为设备分配资源,如内存地址空间和中断。
功能级枚举: 如果PCIe设备支持多个功能,系统将为每个功能分配唯一的功能号。每个功能都有自己的一组相关的寄存器。
配置空间访问: 系统通过配置事务(Configuration Transactions)访问PCIe设备的配置空间。配置空间包含了设备的重要信息,如设备ID、厂商ID、BAR(Base Address Registers)、中断信息等。
BAR分配: 基地址寄存器(Base Address Registers,BARs)用于告诉系统如何寻址设备的内存和I/O资源。系统将分配适当的地址范围给BAR,确保设备能够在地址空间中正确寻址其资源。
中断分配: 系统可能会为设备分配中断向量,以便设备能够通过中断通知主机系统关于特定事件的发生。
驱动加载: 一旦PCIe设备被枚举和初始化,系统将加载适当的驱动程序,以便与设备进行通信和控制。
总的来说,PCIe设备的枚举过程确保了系统能够发现和有效地与所有连接的设备进行通信。这一过程是由PCIe规范定义的,以确保设备可以被正确地配置和管理。