当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:PCI总线已经成为工业控制计算机中的主流总线结构,文中给出了采用PCI总线的DMA方式来实现大量高速数据捕获,包括DMA数据传输和突发数据传输的实现方法。该方法的驱动程序采用WinDriver驱动开发平台,并借助PCI设备操作函数的动态链接库,使Windows驱动程序的开发更加容易,缩短了驱动程序开发与调试周期,并可方便地应用于其它PCI设备的控制。

引言

随着ISA总线逐步被淘汰,基于PCI总线的扩展板越来越被广泛地应用于各种高速、大数据量的处理系统中。尽管有许多供应商提供了各种通用的PCI总线扩展板,但在较多应用场合,用户还必须自行设计能满足自己特殊需求的PCI扩展板,这就不可避免地会遇到PCI总线接口问题。对于绝大多数用户而言,选择专用PCI接口芯片进行PCI接口设计是必然的选择。PCI9054是PLX公司推出的一种32位33MHz的PCI总线主控I/O加速器。它采用多种先进技术,使复杂的PCI接口应用设计变得相对简单。该芯片是目前主流的PCI接口芯片之一。

1  PCI9054的工作模式及DMA处理机制

PCI是外围设备互连(PeripheralComponentInterconnect)的简称,它是一种通用总线接口标准。PCI提供了一组完整的总线接口规范、电气特性和行为规约,通过该规范,计算机系统中的外围设备能够实现结构化、可控化的连接以及正确地进行交互。PCI设备上有三种地址空间:I/O空间、存储空间和配置空间。其中配置空间的信息主要包括设备识别号、供应商代码号、Local总线三个空间的大小以及三个空间的基址等。

在计算机启动时,系统将根据配置信息分配系统资源。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由操作系统内核中的PCI初始化代码使用。PCI总线接口因其传输速度快、即插即用、自动配置的优点而成为实现数据采集设备到主机之间接口的首选。

PCI9054是PLX公司生产的PCI总线接口控制器芯片,符合PCIV2.2规范,32位,工作频率为33MHz,拥有两个独立的DMA通道,传输速率达132MB/s。PCI9054提供有PCI总线、EEPROM、LOCAL总线三个接口,其中LOCAL总线有三种工作模式:M模式、C模式和J模式,可通过模式选择控制引脚MODE[1:0]进行控制。当MODE[1:0]为“11”时,PCI9054工作在M模式;当MODE[1:0]为"00"时,PCI9054工作在C模式;当MODE[1:0]为“01”时,PCI9054工作在J模式;当MODE[1:0]为“10”时,保留工作状态。M模式可与Motorola公司的MPC850或MPC860系列高性能微处理器进行无缝连接;C模式可与Inteli960系列高性能微处理器进行无缝连接;J模式地址和数据线可以复用,但应用很复杂,不过在一些特殊的应用场合,利用J模式可以和TI公司6000系列DSP的HPI口进行接口,其控制逻辑将比其它模式简单得多。

在实际的数据采集时,LOCAL总线接口一般设置为C模式。PCI9054芯片在PCI总线和LO-CAL总线之间有三种直接的数据传输模式,其中,在PCIInitiator模式,LOCAL总线主设备可通过PCI9054访问PCI总线存储空间和I/O空间;在PCITarget模式,PCI总线主设备可通过PCI9054访问LOCAL总线存储空间和I/O空间;而在DMA方式,PCI9054作为两总线的主设备,可实现PCI总线存储空间与LOCAL总线存储空间之间的数据传输。

在PCI9054中,DMA传输主要用于PCI总线与LOCAL总线间的数据传输,此时,PCI9054将接管两总线的控制权,可进行两个方向的数据传输。和DMA操作相关的寄存器包括:DMA模式寄存器(DMAMODE)、PCI基地址寄存器(DMAPADR)、LOCAL基地址寄存器(DMALADR),传输大小寄存器(DMASIZ)和描述符指针寄存器(DMADPR)o

通过这些寄存器的操作,就可以实现PCI到LOCAL或LOCAL到PCI的DMA数据传输。但是,这只是在硬件上的实现,而要在Windows操作系统上进行操作,还必须具有相应的驱动程序支持。

2  DMA方式数据传输

虽然DriverWorks已设计好了程序框架,但其流程较为复杂。下面简要介绍如何编写DMA的WDM驱动程序。DriverWorks提供了三个类:kd--maAdapter、KDmaTransfer和KCommonDmaBuffer类,可用于实现DMA操作。其中,KDmaTransfer类用来管理和操纵DMA传送,它能够管理所有类型的DMA传送操作;KDmaAdapter类用于建立一个DMA适配器,以说明DMA通道的特性,描述DMA传送类型。例如,是总线主设备DMA还是系统DMA?如果是系统DMA,还有使用哪个DMA通道,DMA通道的宽度是8b还是16b等?而Kcom-monDmaBuffer类用于申请系统提供的公用缓冲区。利用上述几个类来编写DMA驱动程序的步骤如下:

(1) 创建一个KDmaAdapter类的实例,并且正确地描述要进行的DMA信息。

(2) 决定驱动程序使用的内存类型是“Packet”还是“CommonBuffer”。DMA传送可以使用Com-monBuffer暂时存放所要传送的数据。CommonBuffer是由系统预先分配的一块物理地址连续的内存区域,处理器和设备都能对它进行访问。Kcom-monDmaBuffer类可对CommonBuffer进行描述。另外一种方法是使用MDL(MemoryDescriptorList)描述的内存区域来作为DMA传送数据的源与目标,这种方法被称为"PacketDMA”;

(3) 创建—KDmaTransfer类的实例,并使用成员函数Initiate给实例加入一个回调函数(callbackfunction)。

(4) 编写上面所说的回调函数。当一次DMA传送由于硬件设备的限制或由于缓冲区容量大小的限制而不得不分成多段传送时,回调函数将会被多次调用。它首先通知设备开始进行传送,然后立即返回,而并不是等待传送结束再返回。

(5) 编写代码来处理分段传送结束。驱动程序应能判定何时DMA传送的一个分段传送结束。驱动程序必须调用成员函数Continue来通知传送对象当前分段已传送完毕,如果整个DMA传送还未完成,它会设置下一次传送,并调用回调函数。DMA数据传输的程序流程图如图1所示。

基于PCI9054的DMA和突发数据传输实现

3  DMA和突发数据传输

在《PCI9054-DataBook》中,每种工作模式都将DMA和突发数据传输的时序图放在一起,这并不意味着DMA和突发数据传输是等同的,这是两个不同的概念。事实上,既可利用一周期的总线操作,也可以利用DMA方式进行数据传输。

DMA和突发数据传输的作用不同。PCI9054中有两个DMA通道,可以独立工作,互不干扰。釆用DMA方式传输数据可以节省CPU资源;而采用突发方式传输数据可以提高数据的传输率,充分发挥PCI总线数据传输速率高的优点。因此,在高速大容量数据传输和处理系统中,将DMA和突发数据传输方式结合在一起是比较理想的,这样一方面可以充分发挥PCI总线的性能,另一方面,也可以用节省出的CPU资源对数据处理算法进行优化。用状态机实现该控制逻辑是比较理想的-PCI9054在C模式下,釆用单一周期和突发相结合的总线访问状态转换程序流程图如图2所示。

基于PCI9054的DMA和突发数据传输实现

用该状态转换图设计出的逻辑电路,既可满足单一周期总线访问的需要,又可以满足突发方式传输数据的需要,因而具有很大的实用价值。使用DMA和突发方式相结合进行数据传输时,其驱动程序应作如下设置:

(1) 调用驱动程序中相应的API函数,找到PC机的物理地址;

(2) 在设备驱动程序中使能突发寄存器;

(3) 在设备驱动程序中使能总线位宽寄存器;

(4) 在设备驱动程序中使能相应的寄存器,指明DMA传输的方向是PCI—LOCAL还是LOCAL

—PCI;

       (5) 在设备驱动程序中指明本次DMA传输需要传输的字节数。

完成上述设置后,即可在突发方式下进行DMA传输,否则,DMA传输就会失败。

4  结论

计算机接口技术的变化主要是由以前的以基本接口设计为中心转变为以PCI总线相关技术为中心。在8/16位的系统环境下,硬件扩展卡的设计主要是面向ISA总线,所有的可用资源都是固定不变的;在编程方面是直来直去,并没有什么保护措施。而在32位系统环境下,所有的资源都是动态分配的,而且在设计扩展卡时,并不是直接与系统打交道,而是要经过多次的逻辑转换。对于软件的设计,也需要编写32位程序,并且需要经过不同层次的软件设计。

DMA通信高度依赖操作系统、硬件特性和资源。在实现DMA通信的过程中,其项目要求、DMA本身的特点、操作系统提供的支持、具体硬件特性以及系统资源之间是相互作用的。DMA环境的建立过程,就是各部分相互协调、互为支持的过程。DMA编程必须充分了解控制芯片所提供的手段和限制,这些手段和限制是实现DMA的基础。实现DMA通信,需要处理的主要问题有:DMA缓冲区的物理连续问题、PCI设备检测和初始化问题、缓冲区的大小问题、PCI设备信息的收集问题等。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭