热度 19
2013-6-20 09:24
2257 次阅读|
0 个评论
本书在第2.3.2节讲述了PCI设备使用的基本配置空间。这个基本配置空间共由64个字节组成,其地址范围为0x00~0x3F,这64个字节是所有PCI设备必须支持的。事实上,许多PCI设备也仅支持这64个配置寄存器。 此外PCI/PCI-X和PCIe设备还扩展了0x40~0xFF这段配置空间,在这段空间主要存放一些与MSI或者MSI-X中断机制和电源管理相关的Capability结构。其中所有能够提交中断请求的PCIe设备,必须支持MSI或者MSI-X Capability结构。 PCIe设备还支持0x100~0xFFF这段扩展配置空间。PCIe设备使用的扩展配置空间最大为4KB,在PCIe总线的扩展配置空间中,存放PCIe设备所独有的一些Capability结构,而PCI设备不能使用这段空间。 在x86处理器中,使用CONFIG_ADDRESS寄存器与CONFIG_DATA寄存器访问PCIe配置空间的0x00~0xFF,而使用ECAM方式访问0x000~0xFFF这段空间;而在PowerPC处理器中,可以使用CFG_ADDR和CFG_DATA寄存器访问0x000~0xFFF,详见第2.2节。 PCI-X和PCIe总线规范要求其设备必须支持Capabilities结构。在PCI总线的基本配置空间中,包含一个Capabilities Pointer寄存器,该寄存器存放Capabilities结构链表的头指针。在一个PCIe设备中,可能含有多个Capability结构,这些寄存器组成一个链表,其结构如图4‑14所示。 其中每一个Capability结构都有唯一的ID号,每一个Capability寄存器都有一个指针,这个指针指向下一个Capability结构,从而组成一个单向链表结构,这个链表的最后一个Capability结构的指针为0。 一个PCIe设备可以包含多个Capability结构,包括与电源管理相关、与PCIe总线相关的结构、与中断请求相关的Capability结构、PCIe Capability结构和PCIe扩展的Capability结构。在本书的其他章节也将讲述这些Capability结构,读者在继续其他章节的学习之前,需要简单了解这些Capability结构的寄存器组成和使用方法。 其中读者需要重点关注的是MSI/MSI-X Capability结构本篇在第6章详细将讨论MSI/MSI-X Capability结构。在PCIe总线规范中,定义了较多的Capability结构,这些结构适用于不同的应用场合,在一个指定的PCIe设备中,并不一定支持本篇中涉及的所有Capability结构。系统软件程序员也不需要完全掌握PCIe总线规范定义的这些Capability结构。 4.4 小结 本章简要介绍了PCIe总线的各个组成部件,包括RC、Switch和EP等,并介绍了PCIe总线的层次组成结构,和PCIe设备使用的Capability结构。本章是读者了解PCIe体系结构的基础。本篇将在下文逐步对PCIe体系结构进行详细说明。