PCI总线规定访问配置空间的总线事务,称为配置读写事务。不同于存储访问事务使用存储地址访问,而是使用ID号来寻址访问PCI配置空间。

PCI设备的ID号由总线号(BUS NUMBER)、设备号(DEVICE NUMBER)和功能号(FUNCTION NUMBER)组成。

对于PowerPC的嵌入式应用,PCI设计往往很简单,直接使用CPU上HOST主桥引出的PCI总线,一般不会出现多级PCI总线。所以总线号也很好确定。

一条PCI总线的设备号由PCI设备的IDSEL信号与PCI总线地址线的连接关系确定,即每一个PCI插槽的总线号和设备号都是固定的。这是硬件工程师决定的,可以询问他们。
    PCI功能号与PCI设备的具体设计相关。在一个PCI设备中最多有8个 功能设备,而且每一个功能设备都有各自的PCI配置空间,而在绝大数PCI设备中只有一个功能设备。HOST主桥使用寄存器号,访问PCI设备配置空间的某个寄存器。

在MPC83xx处理器的HOST主桥中,与PCI设备配置空间相关的寄存器由CFG_ADDR、CFG_DATA和INT_ACK寄存器组成。系统软件使用CFG_ADDR和CFG_DATA寄存器访问PCI设备的配置空间,而使用INT_ACK寄存器访问挂接在PCI总线上的中断控制器的中断向量。

MPC83xx处理器使用CFG_ADDR寄存器和CFG_DATA寄存器访问PCI设备的配置空间,其中用CFG_ADDR寄存器保存PCI设备的ID号,该寄存器的各个字段的详细说明如下所示:

Enable位:当该位为1时,HOST主桥能对PCI设备配置空间的访问,当HOST处理器对CFG_DATA寄存器进行访问时,HOST主桥将对这个寄存器的访问转换为PCI读写总线事务并发送到PCI总线上。

Bus Number字段:记录PCI设备所在的总线号。

Device Number字段:记录PCI设备的设备号。

Function Number字段:记录PCI设备的功能号。

Register Number字段:记录PCI设备的配置寄存器号。

对于MPC83xx系列处理器,在访问PCI设备的配置空间时,首先需要在CFG_ADDR寄存器中设置这个PCI设备对应的总线号、设备号、功能号和寄存器号,然后使能Enable位。之后当处理器对CFG_DATA寄存器进行读写访问时,HOST主桥将这个存储器读写访问转换为PCI配置读写请求,并发送到PCI总线上。如果Enable位没有使能,处理器对CFG_DATA的访问不过是一个普通的I/O访问,HOST主桥并不能将其转换成PCI配置读写请求。

注意,PowerPC处理器中,CFG_DATA寄存器保存的数据采用大端方式,而PCI设备的PCI配置寄存器采用小端对齐。所以要注意字节序转换。

PowerCP处理器读取INT_ACK 时,HOST将这个读操作转换成PCI总线中断响应事务。

下图就是PCI设备必须支持的64个字节的配置空间,范围为0x00-0x3f:

很多PCI设备仅仅支持64字节的配置空间。PCI和PCIe配置空间的区别如下:

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寄存器访问0x00-0xFF,而使用ECAM方式访问0x000-0xFFF这段空间;而在PowerPC处理器中,可以使用CFG_DATA和CFG_ADDR寄存器访问0x000-0xFFF。

PCI-x和PCIe总线规范要求其设备必须支持Capabilities结构。在PCI基本配置空间中有一个Capabilities Pointer寄存器,存放指向Capabilities结构链表的头指针。一个PCIe设备可以包含多个Capability结构,包括电源管理、与PCIe总线相关的结构、与中断请求相关的结构、PCIe Capability结构和PCIe 扩展Capability结构。

PowerPC下PCI、PCI-E设备的配置空间相关推荐

  1. PCI设备的配置空间

    1.基本介绍 其实PCI设备的配置空间就是配置PCI设备的那些寄存器集合.PCI通常将PCI配置信息存放在E2PROM中,PCI设备上电初始化时,将E2PROM中的信息读到PCI设备的配置空间中作为初 ...

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

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

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

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

  4. PCI——第2章——PCI 总线的桥与配置

    摘要:记录一下PCIE第二章内容 目录 第 2 章 PCI 总线的桥与配置 2.1 存储器域与PCI总线域 2. 1. 1 CPU 域. DRAM 域与存储器域 2. 1. 2 PCI 总线域 2. ...

  5. PCI总线的桥与配置(一)

    在PCI体系结构中,含有两类桥片,一个是HOST主桥,另一个是PCI桥.在每一个PCI设备中(包括PCI桥)都含有一个配置空间.这个配置空间由HOST主桥管理,而PCI桥可以转发来自HOST主桥的配置 ...

  6. PCI总线的桥与配置(二)

    PCI桥与PCI设备的配置空间 PCI设备都有独立的配置空间,HOST主桥通过配置读写总线事务访问这段空间.PCI总线规定了三种类型的PCI配置空间,分别是PCI Agent设备使用的配置空间,PCI ...

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

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

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

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

  9. PCI配置空间(PCI Configuration Space)

    https://www.cnblogs.com/zszmhd/archive/2012/05/08/2490105.html PCI设备(PCI device)都有一个配置空间,大小为256字节,实际 ...

最新文章

  1. 【tensorflow】OP_REQUIRES failed at variable_ops.cc:104 Already exists: Resource
  2. 《用Python进行自然语言处理》第 5 章 分类和标注词汇
  3. 打造政产学研新型研发机构 加速人工智能科研成果转化
  4. 461在全志r16平台tinav3.0系统下使用地磁计QMC5883L
  5. Relation(NOIP模拟赛)(二分图染色)
  6. 如何解决Document transaction is being distributed的message
  7. [Leedcode][JAVA][第974题][和可被K整除的子数组][前缀和][HashSet]
  8. jQuery基础 - 改变CSS样式
  9. Flutter进阶—布局一个控件
  10. matlab的conv2、imfilter、filter2
  11. k3修改服务器,金蝶k3客户端修改服务器地址
  12. ubuntu系统下快速安装谷歌浏览器(图文教程)
  13. 2019年外卖市场分析:本地外卖创业要注意哪些趋势?
  14. python 列表推导 为什么快_Python中简单的列表推导式,却能解决复杂的问题,你学会了吗?...
  15. 211西北大学,计算机、软件学硕和专硕专业课都变难了!
  16. 【渝粤题库】广东开放大学 工程经济 形成性考核
  17. 谷歌云|机密 GKE 节点可在计算优化的 C2D 虚拟机上使用
  18. 网易云音乐插件现已登陆 Visual Studio Code
  19. vvic/搜款网API接口(item_get-根据ID取商品详情)
  20. 【题解】Musical Track Database (Using Databases with Python)

热门文章

  1. 记录一下微信、QQ、微博分享web网页功能
  2. 淘宝推广方法大全,教你如何做淘宝(转)
  3. “羊毛党”们最喜欢用的手机号码分析
  4. DBLINK使用的思考
  5. 马尔科夫链预测,Python实现
  6. 两两独立为什么不能推出相互独立
  7. c语言数组读心术,超准,一棵树的读心术
  8. TensorFlow CRNN
  9. Linux SSH命令大全
  10. cesium建筑物3DTile单体化(cesium篇.24)