PCI/PCIE 配置空间导读(1)

PCI/PCIE配置空间按照寄存器的范围可以划分为两大部分。

1、PCI ConfigurationSpace

在PCI规范中,这部分的寄存器范围是从偏移量[0-255],共256字节。

PCI Configuration Space的寄存器,又可细分为以下两种类型,

1、PCI ConfigurationSpace Header:

PCI ConfigurationSpace Header的范围是头64字节[0,63]。

PCI ConfigurationSpace Header分为type 0和type 1,type 1是专门给桥设备用的,type 0是给其它设备用的。两种类型首部的寄存器定义有相同的部分,规范中称之为Common Header,也有各自相区别的部分,详细内容请参考规范。不论是那种类型,只要确定了,那么它的格式就是确定的,是严格按照规范定义了的。

2、PCI Capability List:

PCI CapabilityList位于[64-255]区间范围。

它可以被看做是一个由PCI CapabilityItem组成的一个链表。链表的头指针就存在了PCI ConfigurationSpace Header的0x34的一字节的寄存器里。有了这个指针,就可以知道链表的第一个Capability Item存在于[64-255]区间的哪个位置。每个Capability Iteam的大小长度范围不都是一样的,但所有Capability Iteam都定义了一个标准化的Cap Header。例如,PCI规范中对Capability Iteam的类型做了严格定义,都给出了Capability的ID号,这个Cap ID就存放在这个Header里。Header里另一个重要的内容就是下一个Capability Iteam的偏移量,以便形成链表。在PCI CapabilityList的所有存放指针的寄存器都是8位的,因为8位足够在256字节范围内定位了。

具体的Capability类型的定义可能存在于不同的规范中,PCI的基本规范并没有全部覆盖。如果设备自定义Capability只能属于Vendor Specific的类型。标准化了的Capability Item的格式长度是可知的,可以参考相关规范。但对于Vendor Specific类型,由于格式是自定义的,所以规范中给出了求得长度的方法,就是利用存放下一个Capalibity Iteam的寄存器来存放长度。

2、 PCIEExtended Configuration Space

在后续的PCIX和PCIE规范中,引入了ExtenedConfiguration Space[256-4095],使得配置空间的范围最大达到4K字节。

在PCIE规范中,扩展的配置空间用于存放PCIE EnhancedCapability List。这个List是一个和PCI Capability List逻辑上类似的一个链表结构,不同的是,链表的第一个Iteam就位于0x100,即从256字节起始。

EnhancedCapability List Iteam也有一个标准化了的Cap Header, 格式也略有变化,除了Cap ID之外,还有几个bit存放版本号。另外,在Cap header里,存放下一个Cap Iteam的位置的寄存器是12位的,以便能在4K范围内定位。因为PCIE EnhancedCapability List和PCI Capability List在空间上是保证隔离的,因此他们的Cap ID定义不需要考虑编码冲突,不同的Cap Item即可能使用相同的Cap ID的值。

同样的,EnhancedCapability List Iteam也有Vendor Specifc的Iteam用于设备存放自定义的寄存器,其长度值被要求存在指定的寄存器中。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值