
浅谈PCI
毛毛虫的爹
这个作者很懒,什么都没留下…
展开
-
关于CPCIE/PXIE查分对的交换问题
PICMG_EXP[1][1].0_R1_RC1.pdf page60功能板卡不交叉,背板交叉;这一点和pcie视乎不太一样原创 2020-07-07 20:20:31 · 1657 阅读 · 0 评论 -
cpci热插拔信号
cpci热插拔信号1 BD_SEL#信号,对外围板是输入,是个1对1信号,来自背板的热插拔控制电路输出,每个槽一个独立信号,用于控制热插拔外围板的上电控制。不实现热插拔的在背板直接接地;2 HEALTHY#信号,对外围板是输出,是1对1信号,通常来自外围板的POWERGOOD信号,输出到背板的热插拔控制器电路,用于表征外围板的供电(工作)特征。背板可以不检测。热插拔板必须用powergood信号和原创 2014-10-21 08:20:49 · 2982 阅读 · 0 评论 -
解决 安装驱动程序后设备管理器中显示黄色问号
其实很简单,在inf中有中设置图表索引显示黄色问号肯定说明 你是这样填写的HKR,,Icon,,"-18" PCI设备要改成 -5 数值如下Computer 0 Display 2 Mouse 5 Keyboard 6 FDC 9 HDC 9 Ports 10 Net 15 System 0 Sound 8 Printer 14 Monitor 2 Network Transport 3 Netw原创 2014-10-20 15:05:35 · 4967 阅读 · 0 评论 -
PCI-X总线
PCI-X接口是并连的PCI总线(Peripheral Components Interconnect)的更新版本,仍采用传统的总线技术,不过有更多数量的接线针脚, 同时,如前所述的所有的连接装置会共享所有可用的频宽。 1什么是PCI-X与原先PCI接口所不同的是:一改过去的32位,PCI-X采用64位宽度来传送数据,所以频宽自动就倍增两倍,而扩充槽的长度当然就不可避免 的加大了,原创 2014-07-01 08:28:06 · 2192 阅读 · 2 评论 -
PCI设备内存操作函数总结
1. ExAllocatePool()函数说明:ExAllocatePool allocates pool memory of the specified type and returns a pointer to the allocatedblock.函数定义:PVOID ExAllocatePool( __in原创 2014-05-26 17:48:44 · 2363 阅读 · 0 评论 -
从PCI上读取数据 线程和定时器效率
从PCI上读取数据 线程和定时器效率,同样的数据量,线程方式居然占用CPU 80% 以上,而计数器不到30%。原创 2013-08-07 08:18:16 · 2364 阅读 · 0 评论 -
PCI、CPCI、CPCIE 区别、特点
PCI、CPCI、CPCIE区别、特点CPCI总线 •PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器 •(1) PCI总线空间与处理器空间隔离 •(2)可扩展性 桥 •(3)动态配置机制即插即用原创 2013-08-03 10:40:04 · 23614 阅读 · 2 评论 -
如何在WDM中使用xp系统的DMA用来处理数据
最近做了一款pci的视频采集卡(H264压缩),由于数据传输量比较大,所有想采用dma来传输数据,刚开始感觉很简单,后来感觉还是困难重重。原创 2013-07-26 14:57:15 · 2241 阅读 · 0 评论 -
3.4 预读机制
随着处理器制造工艺的提高,处理器主频越来越高,存储器和外部设备的访问速度虽然也得到极大的提升,但是依然不与处理器主频的提升速度成正比,从而处理器的运行速度和外部设备的访问速度之间的差距越来越大,存储器瓶颈问题愈发严重。虽然Cache的使用有效缓解了存储器瓶颈问题,但是仅使用Cache远远不够。 因为不管Cache的命中率有多高,总有发生Cache行Miss的情况。一旦Cache行出现Miss,处原创 2013-07-22 16:27:41 · 2316 阅读 · 0 评论 -
plx9030触发pci中断
if(((SWAB_16(PLX_INT(0x4C)))&0x04)==0x04){ ErrNo = *(UINT16*)(g_MemBase+0XFFFE*2);/*logMsg("Int1 exist in Open422Device().\n",0,0,0,0,0,0);*/}PLX_INT(0x4C) = SWAB_16(0x0242);原创 2013-11-15 17:52:30 · 2522 阅读 · 2 评论 -
PCI9054 学习小结
PCI的基本协议这里就不介绍了,因为一般的芯片协议都是集成好的,我只需要大体了解就行,不需要做芯片,我感觉就不需要太了解协议。 这里讲解是基于PLX 的9054(9052)芯片为基础的,本人只是入门,望批评指正。一、地址映射与数据传输上图中间部分是9054的内部结构图,9054实际上充当了一个“桥”的作用,即所谓的“桥片技术”。9054的作用其实是把LOCAL总线端管理的一片地址,和PCI总线端管转载 2016-06-28 10:00:02 · 4106 阅读 · 0 评论 -
PCIE 设备扫描的过程
初步了解完PCI总线标准之后,我们接下来正式开始PCIe设备的漫游之旅。从我们按下PC的电源按钮开始,BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(当然,也包括我们的PCI设备),由于商业上的原因,Phoenix等厂商的BIOS代码需要授权协议,在此,我们以另外一个款开源BIOS(openbios)为例,来剖析BIOS中,我们的PCIe设备是如何被找到以及初始化的。PCI转载 2017-07-20 11:59:04 · 3273 阅读 · 2 评论 -
linux驱动---用I/O命令访问PCI总线设备配置空间
PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流。目前,国内的许多技术人员已经具备开发PCI总线接口设备的能 力。但是PCI总线的编程技术,也就是对PCI总线设备的操作技术,一直是一件让技术人员感到头疼的事情。PCI总线编程的核心技术是对相应板卡配置空间 的理解和访问。一般软件编程人员基于对硬件设备原理的生疏,很难理解并操作配置空间,希望硬件开发人员直接告诉他们怎原创 2016-05-24 16:35:40 · 16927 阅读 · 0 评论 -
DriverStudio开发PCI设备DMA数据传输
DriverWizard向导可以创建基本的wDM驱动程序框架,包括总线类型,地址空间,中断源,DMA资源,以及IOCTL(i/o控制代码)的定义等等。详细情况可参看DriverStudio的帮助文档,以下主要介绍如何用DriverWorks编写DMA方式的驱动程序。 DriverWorks关于DMA操作。封装了三个类:KDmaAdapter, KDmaTransfer和KCommonCma转载 2016-07-05 11:03:18 · 3819 阅读 · 0 评论 -
如何利用Plxmon工具进行在线烧录PCI卡的EEPROM
PLXMON是PLX公司提供的用于在线烧录PCI卡的EEPROM的工具。烧录EEPROM有两种方式,一是比较传统的方法,即采用烧录机进行烧录。采用这种方式时,在调试过程中EEPROM需采用插件式封装的芯片(DIP),因为每烧录一次,就需要拔出芯片到烧录机上进行烧写。这样频繁插拔,很明显会对芯片造成一定损害。当然对于最终的产品来讲,也可以采用贴片封装的EEPROM,因为在调试过程中已经把EEPROM原创 2016-07-04 11:27:29 · 7945 阅读 · 0 评论 -
PCI9054芯片的型号说明及购买建议
PCI9054芯片的全部完整型号如下:1. AA版PCI9054-AA50PI,PCI9054-AA50BI; 2. AB版PCI9054-AB50PI,PCI9054-AB50BI;3. AC版PCI9054-AC50PI,PCI9054-AC50BI;PCI9054-AC50VPI;PCI9054-AC50PI F,PCI9054-AC50BI F AC版里面又分了三种,根据型号里面的字母原创 2016-07-02 14:59:47 · 5311 阅读 · 0 评论 -
PCI9054 DMA设置流程
1.设置方式寄存器:设置DMA通道的传输方式,寄存器DMAMODE0或者DMAMODE1的位9:0-表示块传输,1-表示散/聚传输;2.设置PCI地址寄存器:设置PCI总线侧的地址空间。3.设置LOCAL地址寄存器:设置LOCAL总线侧的地址空间。4.设置传输计数寄存器:以字节位单位设置传输数据量。5.设置描述寄存器:设置DMA传输的方向;在散/聚方式下,位0表示传输参数的加载地址,0-PCI地址原创 2016-06-28 17:55:51 · 5522 阅读 · 0 评论 -
PCI9054 突发模式数据传输 (burst mode data transfer )
C mode target slave , 之前看PCI9054 datasheet知道这个burst mode ,也看了时序图,但是一直缺乏一个感性的认识。今天网上买的 USB逻辑分析仪到货了,接上去用PLX SDK提供的API函数做了个控制台程序试了试读和写,的确认识了single cycle和burst的实际样子。1,EEPROM里给memory space 0的设置是16位数据传输,打开了原创 2016-06-28 10:06:24 · 4506 阅读 · 0 评论 -
3.3.5 DMA写时发生Cache命中的优化
在许多高性能处理器中,还提出了一些新的概念,以加速外设到存储器的DMA写过程。如Freescale的I/O Stashing和Intel的IOAT技术。 如图3?8所示,当设备进行存储器写时,如果可以对Cache直接进行写操作时,即便这个存储器写命中了一个状态为M的Cache行,可以不将该Cache行的数据回写到存储器中,而是直接将数据写入Cache,之后该Cache行的状态依然为M。采用这种方原创 2013-07-22 16:27:38 · 1872 阅读 · 0 评论 -
2.4 PCI总线的配置
PCI总线定义了两类配置请求,一个是Type 00h配置请求,另一个是Type 01h配置请求。PCI总线使用这些配置请求访问PCI总线树上的设备配置空间,包括PCI桥和PCI Agent设备的配置空间。 其中HOST主桥或者PCI桥使用Type 00h配置请求,访问与HOST主桥或者PCI桥直接相连的PCI Agent设备或者PCI桥[1];而HOST主桥或者PCI桥使用Type 01h配置请原创 2013-07-22 16:27:15 · 1961 阅读 · 0 评论 -
2.1 存储器域与PCI总线域
HOST主桥的实现因处理器系统而异。PowerPC处理器和x86处理器的HOST主桥除了集成方式不同之外,其实现机制也有较大差异。但是这些HOST主桥所完成的最基本功能依然是分离存储器域与PCI总线域,完成PCI总线域到存储器域,存储器域到PCI总线域之间的数据传递,并管理PCI设备的配置空间。 上文曾经多次提到在一个处理器系统中,存在PCI总线域与存储器域,深入理解这两个域的区别是理解HOST原创 2013-07-22 16:27:07 · 2051 阅读 · 0 评论 -
1.3 PCI总线的存储器读写总线事务
总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备。在处理器系统中,这些数据传送都要依赖一定的规则,PCI总线并不例外。 PCI总线使用单端并行数据线,采用地址译码方式进行数据传递,而采用ID译码方式进行配置信息的传递。其中地址译码方式使用地址信号,而ID译码方式使用PCI设备的ID号,包括Bus Number、Device Numb原创 2013-07-22 16:26:57 · 1899 阅读 · 0 评论 -
1.1 PCI总线的组成结构
如上文所述,PCI总线作为处理器系统的局部总线,是处理器系统的一个组成部件,讲述PCI总线的组成结构不能离开处理器系统这个大环境。在一个处理器系统中,与PCI总线相关的模块如图1?1所示。 如图1?1所示在一个处理器系统中,与PCI总线相关的模块包括,HOST主桥、PCI总线、PCI桥和PCI设备。PCI总线由HOST主桥和PCI桥推出,HOST主桥与主存储器控制器在同一级总线上,PCI设原创 2013-07-22 16:26:53 · 2098 阅读 · 0 评论 -
第1章 PCI总线的基本知识
PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。但是PCI总线、系统总线和处理器体系结构之间依然存在着紧密的联系。 PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,如处理器的Cache共享一致性和数据完整性,以及如何与处理器进行数据交换等一系列内容。其中Cache共享一致性和数据完整性是现代处理器局部总线的设计原创 2013-07-22 16:26:50 · 1779 阅读 · 0 评论 -
第I篇PCI体系结构概述
PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。但是PCI总线、系统总线和处理器体系结构之间依然存在着紧密的联系。 PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,如处理器的Cache共享一致性和数据完整性,以及如何与处理器进行数据交换等一系列内容。其中Cache共享一致性和数据完整性是现代处理器局部总线的设计原创 2013-07-22 16:26:48 · 2082 阅读 · 0 评论 -
3.3.3 PCI设备对可Cache的存储器空间进行DMA读写
PCI设备向“可Cache的存储器空间”进行读操作的过程相对简单。对于x86处理器或者PowerPC处理器,如果访问的数据在Cache中命中,CPU会通知FSB总线,PCI设备所访问的数据在Cache中。 首先HOST主桥发起存储器读总线事务,并在Request Phase中,提供地址。Snoop Agent在Snoop Phase进行总线监听,并通过HIT#和HITM#信号将监听结果通知给Re原创 2013-07-22 16:27:34 · 1864 阅读 · 0 评论 -
3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写
在x86处理器和PowerPC处理器中,PCI设备对“不可Cache的存储器空间”进行DMA读写的过程并不相同。其中PowerPC处理器对“不可Cache的存储器空间”进行DMA读写进行了专门的处理,而x86处理器在对这类空间操作时,效率相对较低。 1 x86处理器 x86处理器使用MTRR(Memory Type Range Register)寄存器设置存储器空间的属性,如果存储器空间为“可原创 2013-07-22 16:27:31 · 1727 阅读 · 0 评论 -
2.3 PCI桥与PCI设备的配置空间
PCI设备都有独立的配置空间,HOST主桥通过配置读写总线事务访问这段空间。PCI总线规定了三种类型的PCI配置空间,分别是PCI Agent设备使用的配置空间,PCI桥使用的配置空间和Cardbus桥片使用的配置空间。 本节重点介绍PCI Agent和PCI桥使用的配置空间,而并不介绍Cardbus桥片使用的配置空间。值得注意的是,在PCI设备配置空间中出现的地址都是PCI总线地址,属于PCI原创 2013-07-22 16:27:12 · 2227 阅读 · 0 评论 -
第2章 PCI总线的桥与配置
在PCI体系结构中,含有两类桥片,一个是HOST主桥,另一个是PCI桥。在每一个PCI设备中(包括PCI桥)都含有一个配置空间。这个配置空间由HOST主桥管理,而PCI桥可以转发来自HOST主桥的配置访问。在PCI总线中,PCI Agent设备使用的配置空间与PCI桥使用的配置空间有些差别,但这些配置空间都是由处理器通过HOST主桥管理。原创 2013-07-22 16:27:04 · 1906 阅读 · 0 评论 -
1.4 PCI总线的中断机制
PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。PCI设备还可以使用MSI机制向处理器提交中断请求,而不使用这组中断信号原创 2013-07-22 16:27:00 · 2304 阅读 · 0 评论 -
2.2 HOST主桥
本节以MPC8548处理器为例说明HOST主桥在PowerPC处理器中的实现机制,并简要介绍x86处理器系统使用的HOST主桥。 MPC8548处理器是Freescale基于E500 V2内核的一个PowerPC处理器,该处理器中集成了DDR控制器、多个eTSEC(Enhanced Three-Speed Ethernet Controller)、PCI/PCI-X和PCIe总线控制器等一系列接原创 2013-07-22 16:27:10 · 1842 阅读 · 0 评论 -
1.2 PCI总线的信号定义
PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备。这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号、控制信号、仲裁信号、中断信号等多种信号组成。 PCI总线是一个同步总线,每一个设备都具有一个CLK信号,其发送设备与接收设备使用这个CLK信号进行同步数据传递。PCI总线可以使用33MHz或者66MHz的时钟频率,而PCI-X总线可以使用133MHz、266原创 2013-07-22 16:26:55 · 1948 阅读 · 0 评论 -
3.3.4 PCI设备进行DMA写时发生Cache命中
如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况。 第一种情况是命中的Cache行其状态为E,即Cache行中的数据与存储器中的数据一致;而第二种情况是命中的Cache行其状态为S。其中E位为1表示该数据在SMP处理器系统中,有且仅有一个CPU的Cache中具有数据副本;而S位为1表示在SMP处理器系统中,该数据至少在两个以上CPU的Cache中具有数据副本。 当原创 2013-07-22 16:27:36 · 1586 阅读 · 0 评论 -
3.3.1 Cache一致性的基本概念
PCI设备对可Cache的存储器空间进行DMA读写的操作的过程较为复杂,有关Cache一致性的话题可以独立成书。而不同的处理器系统使用的Cache Memory的层次结构和访问机制有较大的差异,这部分内容也是现代处理器系统设计的重中之重。 本节仅介绍在Cache Memory系统中与PCI设备进行DMA操作相关的,一些最为基础的概念。在多数处理器系统中,使用了以下概念描述Cache一致性的实现过原创 2013-07-22 16:27:29 · 3175 阅读 · 0 评论 -
3.3 与Cache相关的PCI总线事务
PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率。当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而HOST主桥通过FSB总线[1]向存储器控制器进行读写操作时,需要进行Cache共享一致性操作。 PCI设备与主存储器进行的Cache共享一致性增加了HOST主桥的设计复杂度。在高性能处理器中Cach原创 2013-07-22 16:27:27 · 1505 阅读 · 0 评论 -
3.2 PCI设备的数据传递
PCI设备的数据传递使用地址译码方式,当一个存储器读写总线事务到达PCI总线时,在这条总线上的所有PCI设备将进行地址译码,如果当前总线事务使用的地址在某个PCI设备的BAR空间中时,该PCI设备将使能DEVSEL#信号,认领这个总线事务。 如果PCI总线上的所有设备都不能通过地址译码,认领这个总线事务时,这条总线的“负向译码”设备将认领这个总线事务,如果在这条PCI总线上没有“负向译码”设备,原创 2013-07-22 16:27:24 · 2120 阅读 · 0 评论 -
3.1 PCI设备BAR空间的初始化
在PCI Agent设备进行数据传送之前,系统软件需要初始化PCI Agent设备的BAR0~5寄存器和PCI桥的Base、Limit寄存器。系统软件使用DFS算法对PCI总线进行遍历时,完成这些寄存器的初始化,即分配这些设备在PCI总线域的地址空间。当这些寄存器初始化完毕后,PCI设备可以使用PCI总线地址进行数据传递。 值得注意的是,PCI Agent设备的BAR0~5寄存器和PCI桥的Ba原创 2013-07-22 16:27:22 · 2074 阅读 · 1 评论 -
第3章 PCI总线的数据交换
PCI Agent设备之间,以及HOST处理器和PCI Agent设备之间可以使用存储器读写和I/O读写等总线事务进行数据传送。在大多数情况下,PCI桥不直接与PCI设备或者HOST主桥进行数据交换,PCI桥仅转发来自PCI Agent设备或者HOST主桥的数据。 PCI Agent设备间的数据交换,并不是本章讨论的重点。本章更侧重讲述PCI Agent设备使用DMA机制读写主存储器的数据,以及原创 2013-07-22 16:27:20 · 1589 阅读 · 0 评论 -
2.5 非透明PCI桥
PCI桥规范定义了透明桥的实现规则,本篇在第2.3.1节中详细介绍了这种桥片。通过透明桥,处理器系统可以以HOST主桥为根节点,建立一颗PCI总线树,在这个树上的PCI设备共享同一个PCI总线域上的地址空间。 但是在某些场合下PCI透明桥并不适用。在图2?15所示的处理器系统中存在两个处理器,此时使用PCI桥1连接处理器2并不利于整个处理器系统的配置与管理。我们假定PCI总线使用32位地址空间,原创 2013-07-22 16:27:17 · 2620 阅读 · 0 评论 -
1.5 PCI-X总线简介
PCI-X总线仍采用并行总线技术。PCI-X总线使用的大多数总线事务基于PCI总线,但是在实现细节上略有不同。PCI-X总线将工作频率提高到533MHz,并首先引入了PME(Power Management Event)机制。除此之外,PCI-X总线还提出了许多新的特性。 1.5.1 Split总线事务 Split总线事务是PCI-X总线一个重要特性。该总线事务替代了PCI总线的Delayed原创 2013-07-22 16:27:02 · 1438 阅读 · 0 评论