`
huozheleisi
  • 浏览: 1235627 次
文章分类
社区版块
存档分类
最新评论

PCI设备配置空间问题

 
阅读更多

一般来讲,pci总线接口的实现有两种方法,一种是用可编程器件CPLD或FPGA,另一种方法是用专用的接口芯片,象PLX公司的PCI9054,CH365等。二者各有优缺点,使用可编程器件呢,可以根据具体需要,优化接口逻辑,能获得较高的性能,灵活性是其最大的特点。但是由于PCI协议比较复杂,实现的时候比较困难,逻辑关系验证起来也比较麻烦。后一种方法恰好解决了这个设计难点,节省了开发时间,所以比较常用。

我现在不清楚的在于,一个PCI设备从上电开始到能工作完整的配置过程。就以专用接口芯片开发的pci板卡为例。专用接口芯片是不是要提供配置空间?PCI的配置空间(pci配置寄存器)在哪儿,怎么分配的?一般来讲,对专用接口芯片内部寄存器的配置是通过E2PROM事先用编程器写入配置信息(包括设备识别号,供应商代码号,Local总线三个空间大小以及基址等),然后上电时加载E2PROM的内容到内部寄存器中。那么PCI配置寄存器和本地配置寄存器都指的哪儿的寄存器呢?

可以解答上面的问题了,一般接口芯片的寄存器分为PCI配置寄存器和局部配置寄存器。二者都可以由PCI总线和串行EEPROM访问。而PCI配置寄存器中的设备ID,制造商ID,版本号,首区类代码,类别代码,指令寄存器和状态寄存器等寄存器在所有的PCI设备中都必须实现,通常操作系统可根据这些寄存器的内容来确定PCI设备并加载其驱动程序。另外PCI配置寄存器还提供基址寄存器,它跟局部配置寄存器一起在地址空间重定位PCI设备。这些寄存器的内容都是通过EEPROM加载的。

应该来讲,最终情况,肯定是系统分配给PCI卡一个存储空间,当系统通过PCI总线访问这个区域时,专用接口芯片就会应答,并且将总线上的地址转换为本地地址,进而进行相关操作。

PC机中包括三种空间:存储器空间、I/O空间、配置空间。存储器空间主要包括内存、显存、扩展ROM、设备缓冲区等,一般用于存放大量数据和进行数据块交换。I/O空间主要包括设备的控制寄存器和状态寄存器,一般用于控制和查询设备的工作状态以及少量数据的交换。配置空间主要用于向系统提供设备自身的基本信息,并接受系统对设备全局状态的控制和查询。

为避免地址冲突,PCI总线要求各个设备所占用的地址能够重定位,重定位是由设备的配置空间的基址寄存器实现的,通常情况下,各个设备的基址寄存器总是被BIOS或操作系统分配为不同的基址,从而将各个设备分别映射到不同的地址范围。在需要时,应用程序也可以自行修改基址寄存器中的基址,从而将设备映射到指定的地址范围。

后续:PCI总线2.1版规范指出,全部PCI设备必须实现PCI配置空间。2.2版规范说:每个设备,除了主总线桥,必须实现配置地址空间。可见,PCI的配置空间,就是在PCI板卡上实现的。这样看来,它指的就是专用接口芯片上的寄存器。

再续:看到一篇关于专用接口芯片PCI9054的文章,说,pci9054提供了三个物理总线接口:pci总线接口,EEPROM接口和局部总线接口。pci总线接口依据pci扩展板上定义的引脚分配情况将对应的信号连接在一起就行了;EEPROM中存放的是PCI9054的配置信息,系统加电时PCI9054自动加载其中的配置信息,并有BIOS通过PCI总线对配置寄存器读写,来完成各种控制功能。

续:BAR中可读不可写的位数决定了存储空间的大小,同样如果读回空间大小以后,将基地址写回去的时候,改变的也只是高位可写的。举例来说,如果从10h写全f读回fff00001,说明memory空间大小为1M,再往里写的时候同样只能改变高位的3个f,即这个设备的IO基址必然为xxx00001。其中x就是你往里写的。

2011.1.12续:EEPROM只是用来存储需要配置的寄存器信息的,对EEPROM的编程有两种方法:一是先用专门的烧录器把数据下载到EEPROM再插入板卡中,这种方法修改起来比较麻烦;二是用专用的软件在线写,如PLX公司提供的专用调试软件PLXmon。PLXmon具有以下功能:PCI总线的探测与选择;配置寄存器的检查和修改;内存空间的显示、修改和填充;EEPROM内容的读写等。利用这个工具,我们可以随时对EEPROM的内容进行在线修改,大大提高了效率。值得注意的是每次修改完EEPROM都要对系统进行重启,使PCI配置寄存器和本地空间配置寄存器能够重新加载新的值。

分享到:
评论

相关推荐

    PCI配置空间 PCI PCI配置空间 PCI配置空间 PCI PCI配置空间

    PCI配置空间 PCI PCI配置空间 PCI配置空间 PCI PCI配置空间

    Linux下查看PCI设备配置空间方法_有源代码模块示例

    本文档提供了Linux系统下访问PCI设备配置空间寄存器的方法,并提供示例代码模块,是快速移植查看PCI配置空间的有效资源。

    PCI设备配置空间的访问及实现.pdf

    PCI设备配置空间的访问及实现.pdf

    PCI设备BAR空间的初始化

    PCI设备BAR空间的初始化详细的中文说明文档。合适PCI开发的硬件和软件人员作为参考

    PCI设备查询和配置空间的读取

    PCI设备查询和配置空间的读取 接口技术实验,使用汇编指令编写

    Pciview-查看PCI配置空间的工具

    用来图形化显示系统的PCI设备配置空间信息的工具,对于调试PCI驱动比较有用。

    用I/O命令访问PCI总线设备配置空间

    通过对PCI协议配置机制的分析,提出一种直接用I/O命令访问PCI总线设备配置空间的方法,给出了相应的C语言程序,并在实际应用中得到验证,从而在大多数情况下避免了复杂的驱动程序开发。

    用I/O命令访问PCI总线设备配置空间

    摘要:通过对PCI协议配置机制的分析,提出一种直接用I/O命令访问PCI总线设备配置空间的方法,给出了相应的C语言程序,并在实际应用中得到验证,从而在大多数情况下避免了复杂的驱动程序开发。 PCI总线推出以来,以...

    PCI设备配置空间的访问及实现 (2000年)

    综述了PCI总线的发展背景,详细介绍了PCI设备配置空间的访问原理,并给出了C语言具体实现程序,最后总结了开发PCI设备时应注意的技术问题。

    C语言嵌入汇编遍历本机上的PCI设备

    利用PCI配置空间远离,采用C语言结合嵌入汇编,实现遍历本机上的PCI设备的功能,该程序需要编译成DOS环境下可以运行的 可执行程序,建议采用Watcom编译器。 注意,该程序必须编译成32位的DOS可执行程序,并在纯Dos...

    PCI设备的WDM驱动程序开发

    摘 要:本文简要介绍了WDM驱动程序的结构体系,之后结合PCI设备的结构特点,通过实例说明如何利用驱动程序开发工具DriverWorks开发PCI设备的Windows2000系统下WDM驱动程序,实现对PCI设备配置空间、存储器空间、I/O...

    PCI设备配置空间研究

    在开发PCI设备驱动程序时,需要访问配置空间来控制设备。研究了PC平台和Windows系统下访问PCI配置空间的机制和方法,分析了配置空间中的寄存器结构,提出了一种在用户模式下访问PCI配置空间并通过新能力列表确认PCI ...

    嵌入式系统/ARM技术中的PCI总线设备配置空间用I/O命令访问方法

    引言   1991 年下半年,Intel 公司首先提出了PCI 的概念,并联合IBM、Compaq、AST、HP、DEC 等100 ...但是PCI总线的编程技术,也就是对PCI总线设备的操作技术,一直是一件让技术人员感到头疼的事情。PCI总线编程的核

    解释不同的PCI空间信息

    配置寄存器组中会有一个或多个基址寄存器BAR(Base Address Register),用于保存指向PCI 存储空间的指针,同时BAR中可读不可写的位数决定了该存储空间的大小。BAR的最低位是只读位,它定义了BAR的空间属性。当BAR...

    PCI协议中文版

    第6章 PCI配置空间 17 6.1概述 17 6.2配置空间的组织 17 6.3配置空间的功能 19 6.3.1 设备识别 19 6.3.2 设备控制与命令寄存器 20 6.3.3设备状态寄存器和设备状态 22 6.3.4 配置空间的其他域的功能 23 ...

    浅谈PCIe体系结构(PCI桥与PCI设备的配置空间)

    PCI设备都有独立的配置空间,HOST主桥通过配置读写总线事务访问这段空间。PCI总线规定了三种类型的PCI配置空间,分别是PCI Agent设备使用的配置空间,PCI桥使用的配置空间和Cardbus桥片使用的配置空间。本节重点介绍...

    PCI总线协议中文版本翻译过来的

    PCI 存储空间不同于PCI 配置空间。PCI 存储空间可以存放PCI 设备的特殊功能寄存器,也可以用做数据缓冲和存储区域。 PCI 存储空间分为MEMORY空间和I/O空间两类,它们独立寻址,并使用不同的总线操作命令进行访问。...

    pci桥与pcie设备部分寄存器相关寄存器

    pcie寄存器配置,配置pci基本空间,及部分基本寄存器介绍

    pcie设备调试工具,能够查看设备配置空间和设备状态等信息

    pcie设备调试工具,能够查看设备配置空间和设备状态等信息

    PCI局部总线.pdf

    chp1 总论 chp2 PCi局部总线信号 chp3 PCI设备配置空间 chp4 PCI局部总线仲裁协议 chp5 PCI局部总线命令与操作 chp6 PCI接口状态机及其实现

Global site tag (gtag.js) - Google Analytics