From ab700f54ba7ae78600db1965fcc2a0bfa6f866f2 Mon Sep 17 00:00:00 2001 From: lion187 Date: Thu, 6 Dec 2018 12:02:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6=20Hardware?= =?UTF-8?q?/Bus/PCI/PCIe=5F=E4=B8=AD=E7=9A=84=5FCapability=5F=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E7=9A=84=E5=AF=BB=E5=9D=80.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PCI/PCIe_中的_Capability_结构的寻址.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Hardware/Bus/PCI/PCIe_中的_Capability_结构的寻址.md diff --git a/Hardware/Bus/PCI/PCIe_中的_Capability_结构的寻址.md b/Hardware/Bus/PCI/PCIe_中的_Capability_结构的寻址.md new file mode 100644 index 0000000..62af9fe --- /dev/null +++ b/Hardware/Bus/PCI/PCIe_中的_Capability_结构的寻址.md @@ -0,0 +1,25 @@ +# [PCIe 中的 Capability 结构的寻址](http://www.cnblogs.com/zhongzhe/p/3900111.html) + +PCI-X 和PCIe 总线规范要求其设备必须支持 Capabilities 结构。在PCI 总线的基本配置空间中,包含一个 Capabilities Pointer 寄存器,该寄存器存放 Capabilities 结构链表的头指针。在一个PCIe 设备中,可能含有多个 Capability 结构,这些寄存器组成一个链表,如下图所示。 + +![PCIe 总线 Capability 结构的组成](imgs/PCIe_中的_Capability_结构的寻址/01.jpg) + +其中每一个 Capability 结构都有唯一的 ID 号,每一个 Capability 寄存器都有一个指针,这个指针指向下一个 Capability 结构,从而组成一个单向链表结构,这个链表的最后一个 Capability 结构的指针为 0。链表开始的指针地址为 0x34 处的 1byte 数值,寻址过程如下。 + +![PCIe Config 空间 Capability 指针](imgs/PCIe_中的_Capability_结构的寻址/02.jpg) + +1. We look at address 34h and see the address of the next capability register set (50h). + +![查找 Capability 寄存器](imgs/PCIe_中的_Capability_结构的寻址/03.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). + +![查找 Capability 寄存器](imgs/PCIe_中的_Capability_结构的寻址/04.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). + +![查找 Capability 寄存器](imgs/PCIe_中的_Capability_结构的寻址/05.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. + +![查找 Capability 寄存器](imgs/PCIe_中的_Capability_结构的寻址/06.jpg)