PCIe 中的Capability 结构的寻址

PCI-X 和PCIe 总线规范要求其设备必须支持Capabilities 结构。在PCI 总线的基本配置空间中,包含一个Capabilities Pointer 寄存器,该寄存器存放Capabilities 结构链表的头指针。在一个PCIe 设备中,可能含有多个Capability 结构,这些寄存器组成一个链表,如下图所示。

 其中每一个Capability 结构都有唯一的ID 号,每一个Capability 寄存器都有一个指针,这个指针指向下一个Capability 结构,从而组成一个单向链表结构,这个链表的最后一个Capability 结构的指针为0。链表开始的指针地址为0x34处的1byte数值,寻址过程如下。

 

 

1. We look at address 34h and see the address of the next capability register set (50h).

Start.jpg

2. We jump to 50h and see a capability ID of 05h (MSI Capability Structure).  We look at the next capability pointer in 51h to find which address to jump to next (78h).

Msi.jpg

3. We jump to 78h and see a capability ID of 01h (Power Management Capability Structure). We look at the next capability pointer in 79h to find which address to jump to the next (80h).

Pm.jpg

4. We jump to 80h and see a capability ID of 10h (PCI Express Capability Structure). We see 00h as the next capability pointer in 81h signifying the end of the linked list.

Pcie.jpg

 

 

参考:http://www.alterawiki.com/wiki/PCI_Configuration_Space

posted @ 2014-08-08 20:22  zhongzhe  阅读(8716)  评论(0编辑  收藏  举报