PCIe配置空间
PCIe将PCI的256Bytes配置空间扩展为4096bytes。PCIe配置空间可以分为两个部分:256bytes的PCI兼容部分配置空间和PCIe扩展配置空间。
而PCIe的Capabilities List也分为两个部分:PCI兼容部分和PCIe扩展部分Capabilities List。
PCI Capabilities List
在PCI2.1后增加一些能力,协议按照链表来添加,这个管理Capabilities的链表被称为Capabilities;
存不存在这个链表可以通过PCI Status Register的bit4(Capabilities List)指示,当其为1表示存在;否则则不存在;0x34h指示第一个Capabilities的指针;
每个表中Capability包括8bit ID域,ID由PCI SIG分配;8bit的指针,指向表中下一个Capabilities的位置(当其值为0x00h则表示链表结束);以及一些其他寄存器来执行相关Capabilities,这些寄存器紧接着前面的寄存器;
上面的例子构造了一个简单的Capabilities List。0x34h指向第一个Capabilities的位置,指向了0xA4h,其存在一个ID,下一个Capabilities指针指向了0x5Ch,并且包含了相关其他寄存器;
0xA4h指向了0x5Ch;0x5Ch指向0xE0h;0xE0h指向0x0表示链表结束了。
PCIe Extended Capabilities List
PCIe Extended Capabilities List和PCI的不同;其相关寄存器都放在0x100及更高的地址位置;第一个PCIe Extended Capabilities寄存器固定放在0x100位置,包括16bit的Capabilities ID、4bit Capabilities Version Number和12bit Next Capabilities Offset;其他形式与前文类似;