PCI介绍
PCI总线有自己的I/O空间(32位)和内存空间(32/64位),CPU访问PCI空间需要映射,硬上电自动完成将不同的外设映射到不同的CPU地址空间上。PCI设备的使用模型是这样的,外设可以抽象成一片内存或者一排连续的端口,具体而言每个功能256字节的配置内存。它们可以被排布在PCI总线地址空间上,然后映射到host CPU的地址空间里。每个PCI插槽有4个中断引脚,每个功能可以使用其中一个。每个PCI外设由domain(16位)、bus(8位)、device(5位)以及function(3位)组成的编号来标识。每个domain可以有最多256个bus,每个bus上最多可以有32个device,每个divece上最多可以有8中function。查看当前环境PCI信息可以用下面几种命令
1 | lspci |
PCI设备暴露出的256字节的配置内存,前64字节是标准化的,PCI设备始终使用小端字节序。通常来说,在这256个配置寄存器中由几个只读寄存器,由厂商设定,用于识别设备
名称 | 描述 | 是否常用 |
---|---|---|
vendorID | 厂商标识信息,生产PCI设备的厂商需要注册 | 是 |
deviceID | 设备标识信息,不需要注册,但是厂商需要指定 | 是 |
class | 类型标识 | 是 |
subsystem vendorID | 细分标识 | 否 |
subsystem deviceID | 细分标识 | 否 |