PCI子系统(一) - 协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luckywang1103/article/details/85934044

协议来自PCI Express Base Specification Revision 3.0


7.1 PCI Express Configuration Mechanisms

在这里插入图片描述
PCI Compatible Configuration Space Header,范围是[0, 0x3F],查看7.5节
PCI Express Capability Structure,范围是[0x40, 0xFF],(注:图中灰色的部分PCI Express Capability Structure只是众多PCI Capability Structure中的一个),查看7.7节
PCI Express Extended Capability Structure,范围是[0x100, 0xFFFF]

PCI Express Capability Structure
PCI Express Capability List位于[0x40, 0xFF]区间
他可以被看作是一个由Capability Item组成的链表,链表的头指针保存在PCI compatible configuration register的0x34位置的Capability Pointer中。每个Capability Item的大小长度范围是不同的,但是都遵循一个标准化的Capibility Header,如下:
在这里插入图片描述


7.5 PCI compatible configuration register

这是type 0型的头部结构,一般用于PCI设备,还有个type 1型的头部结构,用于PCI桥。
在这里插入图片描述


7.7 MSI and MSI-X Capability structures

MSI(Message Signaled Interrupts)是一种中断方式,从PCI2.2开始只是,在PCI3.0中得到扩展,支持更多中断以及拥有独立配置各个中断能力的MSI-X。
MSI的原理:PCI有一个特殊的寄存器,往这个寄存器里面写数据,就会触发CPU中断
这个寄存器就来自PCI提供的MSI/MSI-X Capability结构里的Message Address
在这里插入图片描述

INTx,MSI,MSI-X区别:
INTx:
在PCI总线里面INTx中断是由四条可选的中断线决定的,这种中断方式是共享的,所有的PCI设备把中断信号在一条中断线上相与,再上报给CPU,CPU收到中断后再查询具体是哪个设备产生了中断。
MSI:
在PCIe总线里已经没有实体的INTx物理总线了,PCIe使用专门的Message事物包来实现INTx中断,这是为了兼容以前的PCI软件。MSI中断是往CPU中断寄存器中进行memory写操作来产生中断。
MSI-X:
MSI支持的中断数据比较有限,而且如果有一组中断的话,必须要求中断号连续,而MSI可以支持很多的中断,并且一组中断中中断号也不需要连续。


参考文章

  1. PCI Express Base Specification Revision 3.0
  2. PCI Express体系结构导读

猜你喜欢

转载自blog.csdn.net/luckywang1103/article/details/85934044