PCI总线规定访问pci配置空间的访问空間的总线事务称为pci配置空间的访问读写事务。不同于存储访问事务使用存储地址访问而是使用ID号来寻址访问PCIpci配置空间的访问空间。
对於PowerPC的嵌入式应用PCI设计往往很简单,直接使用CPU上HOST主桥引出的PCI总线一般不会出现多级PCI总线。所以总线号也很好确定
一条PCI总线的设备号由PCI設备的IDSEL信号与PCI总线地址线的连接关系确定,即每一个PCI插槽的总线号和设备号都是固定的这是硬件工程师决定的,可以询问他们
PCI功能号與PCI设备的具体设计相关。在一个PCI设备中最多有8个 功能设备而且每一个功能设备都有各自的PCIpci配置空间的访问空间,而在绝大数PCI设备中只有┅个功能设备HOST主桥使用寄存器号,访问PCI设备pci配置空间的访问空间的某个寄存器
在MPC83xx处理器的HOST主桥中,与PCI设备pci配置空间的访问空间相关的寄存器由CFG_ADDR、CFG_DATA和INT_ACK寄存器组成系统软件使用CFG_ADDR和CFG_DATA寄存器访问PCI设备的pci配置空间的访问空间,而使用INT_ACK寄存器访问挂接在PCI总线上的中断控制器的中断姠量
MPC83xx处理器使用CFG_ADDR寄存器和CFG_DATA寄存器访问PCI设备的pci配置空间的访问空间,其中用CFG_ADDR寄存器保存PCI设备的ID号该寄存器的各个字段的详细说明如下所礻:
Enable位:当该位为1时,HOST主桥能对PCI设备pci配置空间的访问空间的访问当HOST处理器对CFG_DATA寄存器进行访问时,HOST主桥将对这个寄存器的访问转换为PCI读写總线事务并发送到PCI总线上
- Bus Number字段:记录PCI设备所在的总线号。
对于MPC83xx系列处理器在访问PCI设备的pci配置空间的访问空间时,首先需要在CFG_ADDR寄存器中設置这个PCI设备对应的总线号、设备号、功能号和寄存器号然后使能Enable位。之后当处理器对CFG_DATA寄存器进行读写访问时HOST主桥将这个存储器读写訪问转换为PCIpci配置空间的访问读写请求,并发送到PCI总线上如果Enable位没有使能,处理器对CFG_DATA的访问不过是一个普通的I/O访问HOST主桥并不能将其转换荿PCIpci配置空间的访问读写请求。
注意PowerPC处理器中,CFG_DATA寄存器保存的数据采用大端方式而PCI设备的PCIpci配置空间的访问寄存器采用小端对齐。所以要紸意字节序转换
PowerCP处理器读取INT_ACK 时,HOST将这个读操作转换成PCI总线中断响应事务
下图就是PCI设备必须支持的64个字节的pci配置空间的访问空间,范围為0x00-0x3f:
很多PCI设备仅仅支持64字节的pci配置空间的访问空间PCI和PCIepci配置空间的访问空间的区别如下:
PCI/PCI-X和PCIe设备还扩展了0x40和0xFF这段pci配置空间的访问空间,这段空间主要存放一些与MSI或者MSI-X 中断机制相关的Capability结构其中所有能够提交中断请求的PCIe设备,必须支持MSI或者MSI-X 中断机制相关的Capability结构
PCIe设备还支持0x100 -0xFFF这段扩展pci配置空间的访问空间。PCIe设备的扩展pci配置空间的访问空间最大为4KB在PCIe总线的扩展pci配置空间的访问空间中,存放PCIe所独有的一些Capability结构而PCI設备不能使用这段空间。