1.1 PCI&PCIE 配置寄存器访问

1.1 PCI&PCIE 配置寄存器访问1、PCIE寄存器的总体结构:PCI的配置寄存器空间为256个字节大小。PCIE扩展了配置寄存器空间,大小为4096的字节。PCIE配置寄存器的整体分布如下图所示:从上图可见,整个PCIE配置空间被分成了3部分,其中0-FF为PCI兼容的配置空间,100-FFF为PCIE扩展的空间。每部分的作用大概如下:a、0-3F:这部分的配置空间是标准的PCI配置空间头,是每个PCI/PCIE设备都必

大家好,又见面了,我是你们的朋友全栈君。

1、PCIE 寄存器的总体结构:

PCI的配置寄存器空间为256个字节大小。PCIE扩展了配置寄存器空间,大小为4096的字节。PCIE配置寄存器的整体分布如下图所示:

这里写图片描述

从上图可见,整个PCIE配置空间被分成了3部分,其中0-FF为PCI兼容的配置空间,100-FFF为PCIE扩展的空间。每部分的作用大概如下:

  • a、0-3F :这部分的配置空间是标准的PCI配置空间头,是每个PCI/PCIE设备都必须遵循的。目前一共有3种标准头格式,00是PCI DEVICE头,01是PCI-PCI bridge头,02是Cardbus bridge头。头类型由Header Type寄存器定义。
  • b、40-FF :这部分定义PCI扩展功能寄存器。0-3F定义的寄存器是每个PCI设备都必须实现的,而PCI的一些扩展功能,不是每个设备都必须实现的,可以根据自己的需要来实现其中一部分特性。重点注意的是这部分寄存器的组织结构,每一个可选的特性被组织成一个标准的Capability Struct,设备选用的多个Capabilities用链表的方式组织起来,称为Capabilities List。PCIE即在PCI原有的Capabilities当中新增了一种ID,即PCIE Capability Struct。这样可以实现对老的PCI驱动的兼容。
  • c、100-FFF:这部分定义PCIE扩展功能寄存器。实现PCIE的可选特性,也是采取Capabilities List结构组织起来的。

2、PCI Capabilities List(40 – FF)的组织方法:

40-FF区域用来实现可选的PCI特性,每个特性对应一个Capability Struct,所有实现的特性用链表的方式组织起来,称为Capabilities List。组织形式如下图所示:

这里写图片描述

在标准PCI头的寄存器中,”status”(06h)寄存器bit4定义了本设备是否有Capabilities List,”Capabilities Pointer”(34h)寄存器定义了Capabilities List链表头指针。如下图所示:

这里写图片描述

需要特别注意注意的是,PCI配置寄存器是不能随意增加的。寄存器需要根据特性组织成Capabilities Struct,对Capabilities Struct是有统一规定的,包括标准特性和自定义特性。
现在协议规定的Capabilities ID有下列特性:

这里写图片描述

3、PCIE Capabilities List(100 – FFF)的组织方法:

100-FFF区域用来实现PCIE独有可选的PCI特性,也都是使用Capabilities List的形式来组织的,只是具体的Capbalities Struct结构有些扩展。

这里写图片描述

4、实例:

以系统A的PCIE配置空间为例来说明Capabilities List的组织方法:

这里写图片描述

5、参考资料:

  • PCI Local Bus Specification Revision 2.3
  • PCI Express Base Specification Revision 1.1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151807.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月21日 下午4:36
下一篇 2022年6月21日 下午4:36


相关推荐

  • GlusterFS 应用

    GlusterFS 应用GlusterFS 应用 1 glusterfs 简介 2 glusterfs 部署 1 介绍 2 安装 glusterfs 前的环境准备 3 操作 3 glustefs 分布式存储优化 4 glusterfs 在企业中应用场景 1 glusterfs 简介 Glusterfs 是一个开源的分布式文件系统 是 Scale 存储的核心 能够处理千数量级的客户端 是整合了许多存储块 server 通过 InfinibandRD 或者 Tcp Ip 方式互联的一个并行的网络文件系统 2 特征容量可

    2026年3月18日
    2
  • linux libaio介绍

    linux libaio介绍Linux 的 I O 机制经历了一下几个阶段的演进 1 同步阻塞 I O 用户进程进行 I O 操作 一直阻塞到 I O 操作完成为止 2 同步非阻塞 I O 用户程序可以通过设置文件描述符的属性 O NONBLOCK I O 操作可以立即返回 但是并不保证 I O 操作成功 3 异步事件阻塞 I O 用户进程可以对 I O 事件进行阻塞 但是 I O 操作并不阻塞 通过 select poll epoll 等函数调用来达到此目的 4 异步时间非阻塞 I O 也叫做异步 I O AIO 用户程序可以通过向内核发出 I O 请求

    2026年3月17日
    2
  • pycharm中的代理,GitHub,Git配置

    pycharm中的代理,GitHub,Git配置1 pycharm 代理设置 首先 File gt Settings 搜索框输入 http 然后在 Manualproxyc 手动代理配置 中进行配置最后进行 Checkconnect 检查连接测试 测试没问题 点击 Apply OK 保存退出 代理设置完毕 2 pycharm 中绑定 GitHub 账号首先要注册 GitHub 写的停好的教程 1 教程 2 然后 File gt Settings 搜索框输入 github 最后点击 Lo

    2026年3月27日
    2
  • linux系统对硬盘分区_centos怎么分区

    linux系统对硬盘分区_centos怎么分区Linux操作系统磁盘分区操作及原理,Linux系统网络环境的配置方法。

    2025年11月22日
    3
  • pytest报错_eclipse提交代码到git

    pytest报错_eclipse提交代码到git前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月29日
    8
  • JLink、STLink、DAPLink、CMSIS DAP使用区别

    JLink、STLink、DAPLink、CMSIS DAP使用区别先上张全家福 都是工作时大家常用的几款下载器 手边就这几个 另还有几个打冷宫里了 挨个给大家说说作参考 不讲参数 整那虚的没卵用 实际的使用感受更实际 J Link 大名鼎鼎 各种版本 各种款式 号称支持芯片量最多 优点 快 稳 常用的几种下载器 实测 JLink 最快 STM32F407 芯片 109K 代码实测 8 秒搞掂烧录 缺点 最贵 大多数 JLink 不支持 STM8 听说 STM8

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号