1.基本介绍
其实PCI设备的配置空间就是配置PCI设备的那些寄存器集合。PCI通常将PCI配置信息存放在E2PROM中,PCI设备上电初始化时,将E2PROM中的信息读到PCI设备的配置空间中作为初始值。这个过程由硬件逻辑完成,绝大多数PCI设备使用这种方式初始化其配置空间。系统加电时,BIOS检测PCI总线,确定所有连接在PCI总线上的设备以及它们的配置要求,并进行系统配置。所以,所有的PCI设备必须实现配置空间,从而能够实现参数的自动配置。
PCI总线规范定义的配置空间总长度为256个字节,配置信息按一定的顺序和大小依次存放。前64个字节的配置空间称为配置头,对于所有的设备都一样,配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式(I/O访问或者存储器访问,还有中断信息)。其余的192个字节称为本地配置空间,主要定义卡上局部总线的特性、本地空间基地址及范围等。
一般我们需要关心配置空间中配置头的信息。

2.配置空间中配置头信息

(1)Device ID和Vendor ID寄存器,这两个寄存器的值由PCISIG分配,只读。其中Vendor ID代表PCI设备的生产厂商,而Device ID代表这个厂商所生产的具体设备。如intel公司的基于82571EB芯片的系列网卡,其Vendor ID为0x8086,而Device ID为0x105E。
(2)Revision ID和Class Code寄存器,这两个寄存器只读。其中Revision ID寄存器记载PCI设备的版本号,该寄存器可以被认为是Device ID寄存器的扩展。而Class Code寄存器记载PCI设备的分类。
(3)Header Type寄存器,改寄存器只读,第7位表示当前设备是多功能还是单功能设备。第0~6位表示当前配置空间的类型,系统软件使用该寄存器区分不同类型的PCI配置空间。如普通PCI设备、PCI桥、CardBUS设备。
(4)Subsystem ID和Subsystem Vendor ID寄存器,这两个寄存器和Device ID及Vendor ID类似,也是记录PCI设备的生产厂商和设备名称。
(5)Expansion ROM base address寄存器,有些PCI设备在处理器还没有运行操作系统之前,就需要完成基本的初始化设置,比如显卡、键盘和硬盘等设备。为了实现这个“预先执行”功能,PCI设备需要提供一段ROM程序,而处理器在初始化过程中将运行这段ROM程序,初始化这些PCI设备。
(6)Expansion ROM base address记载这段ROM程序的基地址。
Interrupt Line寄存器,这个寄存器是系统软件对PCI设备进行配置时写入的,该寄存器记录当前PCI设备使用的中断向量号,设备驱动可以通过这个寄存器,判断当前PCI设备使用处理器系统中哪个中断向量号,并将驱动程序的中断服务例程注册到操作系统中。不过目前在绝大多数处理器系统中,并没有使用该寄存器存放PCI设备使用的中断向量号。
(7)Interrupt Pin寄存器,这个寄存器保存PCI设备使用的中断引脚。为1时表示使用INTA#引脚作为中断引脚,2时表示使用INTB#引脚作为中断引脚,依次类推。
(8)Base Address Register0~5寄存器,该组寄存器简称为BAR寄存器,BAR寄存器保存PCI设备使用的地址空间的基地址,注意,该基地址是指PCI设备的PCI总线地址,并不是在CPU地址空间中的地址。其中每一个设备最多可以有6个基地址空间,但多数设备不会使用这么多组地址空间。
在PCI设备复位之后,BAR寄存器存放PCI设备需要使用的基址空间大小,这段空间可以是IO空间,也可以是存储器空间。系统软件对PCI总线进行配置时,首先获得BAR寄存器中的初始化信息,之后根据处理器系统的配置,将合理的基地址写入相应的BAR寄存器中。系统软件还可以使用该寄存器,获得PCI设备使用的BAR空间的长度,其方法是向BAR寄存器写入0xFFFF-FFFF,之后再读取该寄存器。

处理器访问PCI设备的BAR空间时,需要使用BAR寄存器提供的基地址。值得注意的是,处理器使用的是CPU地址空间的地址,而BAR寄存器存放的是PCI总线地址。因此处理器系统需要将PCI总线地址转换为CPU地址空间的地址。在许多处理器系统中,如Alpha和PowerPC处理器系统,PCI总线地址与CPU地址空间地址并不相等。但是在x86系统中,这两个地址的值是一样的,也就是它们之间的关系是一一映射的。但是,即使这两个地址的值是一样的,也需要明白这两个地址是不同地址空间中的地址。同时这个CPU地址空间的地址表示的是物理地址,需要使用ioremap这类接口映射为虚拟地址后,才能被驱动或内核使用。

最后感谢蛋哥的文章分享。

PCI设备的配置空间相关推荐

  1. PowerPC下PCI、PCI-E设备的配置空间

    PCI总线规定访问配置空间的总线事务,称为配置读写事务.不同于存储访问事务使用存储地址访问,而是使用ID号来寻址访问PCI配置空间. PCI设备的ID号由总线号(BUS NUMBER).设备号(DEV ...

  2. PCI设备与PCI桥的配置空间

    PCI配置空间 HOST主桥通过配置读写事务报文访问设备的配置空间,PCI总线规定了三种类型的PCI配置空间.配置空间中出现的地址都是PCI总线域的地址. (1)Agent设备配置空间 (2)Brid ...

  3. pci配置基地址_PCI/PCIe基础——配置空间

    简介 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地址空间. 映射地址在BIOS/UEFI下指定(如果有的话,对于使用非BIOS启动的OS,不清楚),它有两种类型,一种是MM ...

  4. 对PCIE设备访问及其配置空间的一点理解

    讲讲对PCIE总线协议的一点理解吧.感觉每一年又会多一点理解,但不懂得地方仍很多. PCI总线是拓扑结构,PCI总线从0开始,不超过256(但一般不会一层一层挂太多).Device不超过32,Func ...

  5. pci配置基地址_PCI配置空间简介

    配置空间 操作系统 PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能力.但是PCI总线的编程技术,也就是对 ...

  6. PCIE设备访问及其配置空间

    早期的PCI时期,系统为每个PCI设备分配的内存大小仅有256个Bytes.到后来的PCIE时期,随着设备性能增强,PCIE设备的配置空间扩展至4K个Bytes.在这里需要注意: PCIE一共支持25 ...

  7. PCI设备BAR空间的初始化

    在PCI Agent设备进行数据传送之前,系统软件需要初始化PCI Agent设备的BAR0~5寄存器和PCI桥的Base.Limit寄存器.系统软件使用DFS算法对PCI总线进行遍历时,完成这些寄存 ...

  8. 使用 setpci 配置 PCI 设备

    下面快速记录一下使用 setpci命令配置 PCI设备的步骤. 首先,简单看一下 setpci的使用方法: $ setpci --help Usage: setpci [<options> ...

  9. [转]PCI配置空间简介

    PCI配置空间简介  作者:敏行 PCI有三个相互独立的物理地址空间: 设备存储器地址空间. I/O地址空间和 配置空间. 配置空间是PCI所特有的一个物理空间.由于PCI支持设备即插即用,所以PCI ...

最新文章

  1. usaco shuttle puzzle(dfs剪枝)
  2. apache 2.4.12 + tomcat 7.0.61 + jk connectors 1.2.40实现tomcat负载均衡集群
  3. javascript正则表达式小结
  4. /etc/shadow 文件详解
  5. Python基础-3内建函数 type() cmp()
  6. 10.7 csp-s模拟测试63 Median+Game+Park
  7. ListView.setOnItemClickListener 点击无效
  8. L1-009. N个数求和-PAT团体程序设计天梯赛GPLT
  9. android最简单的更换主题,教你更换Android手机主题
  10. mysql 给表填充数据库_mysql---为测试数据库填充大量数据
  11. unity蛮牛游戏API
  12. sdut 1299 最长上升子序列
  13. python IMAP4命令详解
  14. 儿童学写字.exe.CR.rar.eml
  15. swiper使用教程
  16. 为什么有那么多编码员音乐家?
  17. 【iOS】应用跳转到系统应用
  18. Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑
  19. ae制h5文字动画_7款超华丽的HTML5 Canvas文字动画特效
  20. 软件工程与计算机科学的区别

热门文章

  1. 牛客网面试高频题top100(1~10)
  2. MVC(Model View Controller)框架
  3. [unreal] 寻路:随机漫游的实现
  4. 高等代数 线性映射(第9章)5 有理标准形
  5. 无可用下载链接_【PC】 文明6集成最新巴比伦DLC中文版下载
  6. 企业标准的分类,企业标准有几种
  7. Synopsys Sentaurus TCAD系列教程之-- Sdevice《3》Electrode模块
  8. 手机+笔记本(台式机)无线上网全攻略
  9. 使用 Web Services 整合 IBM FileNet P8 BPM 与 IBM WebSphere ILOG JRules
  10. 各种电子图书馆文章(PDF、PDG、CAJ)转为Word文档的方法