|
@ -2,24 +2,24 @@
|
||||||
|
|
||||||
PCI-X 和PCIe 总线规范要求其设备必须支持 Capabilities 结构。在PCI 总线的基本配置空间中,包含一个 Capabilities Pointer 寄存器,该寄存器存放 Capabilities 结构链表的头指针。在一个PCIe 设备中,可能含有多个 Capability 结构,这些寄存器组成一个链表,如下图所示。
|
PCI-X 和PCIe 总线规范要求其设备必须支持 Capabilities 结构。在PCI 总线的基本配置空间中,包含一个 Capabilities Pointer 寄存器,该寄存器存放 Capabilities 结构链表的头指针。在一个PCIe 设备中,可能含有多个 Capability 结构,这些寄存器组成一个链表,如下图所示。
|
||||||
|
|
||||||
![PCIe 总线 Capability 结构的组成](img/PCIe_中的_Capability_结构的寻址/01.jpg)
|
![PCIe 总线 Capability 结构的组成](img/PCIe_中的_Capability_结构的寻址/001.jpg)
|
||||||
|
|
||||||
其中每一个 Capability 结构都有唯一的 ID 号,每一个 Capability 寄存器都有一个指针,这个指针指向下一个 Capability 结构,从而组成一个单向链表结构,这个链表的最后一个 Capability 结构的指针为 0。链表开始的指针地址为 0x34 处的 1byte 数值,寻址过程如下。
|
其中每一个 Capability 结构都有唯一的 ID 号,每一个 Capability 寄存器都有一个指针,这个指针指向下一个 Capability 结构,从而组成一个单向链表结构,这个链表的最后一个 Capability 结构的指针为 0。链表开始的指针地址为 0x34 处的 1byte 数值,寻址过程如下。
|
||||||
|
|
||||||
![PCIe Config 空间 Capability 指针](img/PCIe_中的_Capability_结构的寻址/02.jpg)
|
![PCIe Config 空间 Capability 指针](img/PCIe_中的_Capability_结构的寻址/002.jpg)
|
||||||
|
|
||||||
1. We look at address 34h and see the address of the next capability register set (50h).
|
1. We look at address 34h and see the address of the next capability register set (50h).
|
||||||
|
|
||||||
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/03.jpg)
|
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/003.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).
|
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).
|
||||||
|
|
||||||
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/04.jpg)
|
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/004.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).
|
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).
|
||||||
|
|
||||||
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/05.jpg)
|
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/005.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.
|
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.
|
||||||
|
|
||||||
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/06.jpg)
|
![查找 Capability 寄存器](img/PCIe_中的_Capability_结构的寻址/006.jpg)
|
||||||
|
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |