一种对PCI设备进行DMA读写操作的方法技术

技术编号:33384127 阅读:19 留言:0更新日期:2022-05-11 22:58
本发明专利技术公开了一种对PCI设备进行DMA读写操作的方法,所述方法包括如下步骤:对DMA的寄存器进行配置;根据所述寄存器配置的DMA模式,开辟物理地址空间;物理地址开辟完成后,根据所述寄存器配置的DMA模式以及DMA读写的方向,开启DMA的数据读写;数据读写完成后,进行中断服务,释放物理地址空间。该方法以DMA读写操作的方式完成对PCI设备的数据传输,传输速率更快。快。快。

【技术实现步骤摘要】
一种对PCI设备进行DMA读写操作的方法


[0001]本方法属于PCI总线领域,具体而言属于一种对PCI设备进行DMA读写操作的方法。

技术介绍

[0002]PCI是外设部件互连标准的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI设备在工业控制中应用也是相当广泛,可是PCI设备的单次读写操作效率很低,每次申请总线占用太多的时间,无法满足实时性、大数据的传输要求。
[0003]DMA是直接存储器访问的缩写,允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载,DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。
[0004]对于传统的PCI总线来说,它既支持单次数据传输,也支持突发数据传输。无论哪种工作模式传输数据都有数据连接建立的过程,因此对于33MHZ的工作时钟来说,其单次数据传输在8个时钟周期内传输33bit的数据,传输速率依旧较低。在用户具有越来越多的数据传送要求的情况下,提高主设备和主机之间的传输速度显然是大势所趋。
[0005]有鉴于此,特提出本专利技术。

技术实现思路

[0006]本专利技术的第一目的在于提供一种对PCI设备进行DMA读写操作的方法,该方法通过DMA读写的方式大大加快了PCI总线的数据传输速率,并且此方法在数据传输时不需要计算机的CPU进行控制和参与,提高了计算机的利用效率。
[0007]本专利技术的第二目的在于提供一种支持上述方法的设备,所述设备能够支持对PCI设备进行DMA读写操作。
[0008]为了实现本专利技术的上述目的,特采用以下技术方案:
[0009]本方法包括如下步骤:
[0010]对DMA的寄存器进行配置;
[0011]根据所述寄存器配置的DMA模式,开辟物理地址空间;
[0012]物理地址开辟完成后,根据所述寄存器配置的DMA模式以及DMA读写的方向,开启DMA的数据读写;
[0013]数据读写完成后,进行中断服务,释放物理地址空间。
[0014]其中对DMA寄存器进行配置过程中,需要进行配置的寄存器包括:存放DMA使能模式的DMAMODE0寄存器,所述使能模式包括BLOCK模式、BURST模式、Bterm模式等;存放对PCI设备进行DMA写操作的起始地址的DMAPADR0寄存器;存放对PCI设备进行DMA读操作的起始地址的DMALADR0寄存器;存放一次DMA操作传输的字节数的DMASIZ0寄存器;存放DMA读写操作方向的DMADPR0寄存器。
[0015]寄存器配置完成之后需要计算机开辟物理地址空间了,开辟物理地址空间时,会
根据DMA模式的不同而开辟不同的物理地址空间,这里所说的不同的物理地址空间指的是其地址连续或是不连续,具体而言DMA模式是BLOCK模式时,开辟的物理地址空间为连续的;DMA模式是Scatter/Gather模式时,开辟的物理地址空间时不连续的。
[0016]由于在寄存器配置环节已经配置完毕了DMAPADR0寄存器,因此在物理地址开辟完成后,直接将所述物理地址的首地址写入DMAPADR0寄存器中即可,这样可直接将所述物理地址的首地址作为PCI内存空间的DMA传输的起始地址。
[0017]物理地址开辟完成之后就需要开始进行数据传输了,此时需要根据DMA读写方向和DMAMODE0寄存器中存放的DMA模式的不同,来对DMADPR0寄存器进行配置,具体而言为:当DMA传输方向为从PCI到本地时,即DMA写时,将需要传输的数据放在实现开辟好的物理地址中,之后判断是BLOCK模式还是Scatter/Gather模式来向DMADPR0寄存器写入不同的值。后续对DMACSR0寄存器写入特定的值即可使能DMA通道0并启动通道0,DMA数据传输便开始了。
[0018]数据传输结束后,会触发IST中断,之后会判断此中断是否是DMA0中断,如果是,则会开始执行DMA0中断服务函数,在中断服务函数中要实现的目标包括:停止通道0并清除中断,还需要释放计算机开辟出的物理地址空间,如此即实现了对PCI设备进行DMA读写的操作。
[0019]值得一提的是,在上述方法步骤进行之前还需要进行一系列的预处理工作,所述预处理工作是由计算机的CPU进行完成的。所述预处理工作包括:搜索PCI设备、初始化PCI设备、中断挂起,其中所述搜索设备为搜索总线上满足指定供应商ID和设备ID的设备;所述初始化PCI设备是将PCI设备的总线地址转换为计算机物理地址,然后将计算机物理地址映射成虚拟地址;所述中断挂起指的是连接中断服务线程,设置中断优先级,使能全局中断、本地中断和DMA中断。
[0020]本专利技术还公开了一种对PCI设备进行DMA读写操作的设备,其包括:
[0021]寄存器配置模块:用于对DMA的寄存器进行配置;
[0022]物理地址开辟模块:用于根据所述寄存器配置的DMA模式,开辟物理地址空间;
[0023]读写启动模块:用于物理地址开辟完成后,根据所述寄存器配置的DMA模式以及DMA读写的方向,开启DMA的数据读写;
[0024]读写结束模块:用于数据读写完成后,进行中断服务,释放物理地址空间。
[0025]并且本专利技术还公开了一种计算机可读存储介质,其上存储有计算机程序,所述程序执行时实现上述方法的步骤。
[0026]一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述方法的步骤。
[0027]与现有技术相比,本专利技术的有益效果在于:
[0028](1)通过DMA传输的方式来实现对PCI设备的读写,大大加快了PCI设备的数据传输速率,并且由于DMA传输的过程中不需要由计算机的CPU进行参与,因此也节省了计算机的CPU计算资源。
[0029](2)此方法使用方便,维护起来也相对简单,且适用性较高。
附图说明
[0030]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通
技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0031]图1为本专利技术实施例提供的方法流程示意图;
[0032]图2为本专利技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0033]下面将结合附图和具体实施方式对本专利技术的技术方案进行清楚、完整地描述,但是本领域技术人员将会理解,下列所描述的实施例是本专利技术一部分实施例,而不是全部的实施例,仅用于说明本专利技术,而不应视为限制本专利技术的范围。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0034]为了更加清晰的对本专利技术中的技术方案进行阐述,下面以具体实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对PCI设备进行DMA读写操作的方法,其特征在于,包括如下步骤:对DMA的寄存器进行配置;根据所述寄存器配置的DMA模式,开辟物理地址空间;物理地址开辟完成后,根据所述寄存器配置的DMA模式以及DMA读写的方向,开启DMA的数据读写;数据读写完成后,进行中断服务,释放物理地址空间。2.根据权利要求1所述的方法,其特征在于,所述配置寄存器过程中需要配置的寄存器包括:DMAMODE0寄存器、DMAPADR0寄存器、DMALADR0寄存器、DMASIZ0寄存器和DMADPR0寄存器。3.根据权利要求2所述的方法,其特征在于,物理地址开辟完成后,将物理地址首地址存放入所述DMAPADR0寄存器中,以作为DMA对PCI设备读操作的起始地址。4.根据权利要求1所述的方法,其特征在于,所述开启DMA数据读写过程中,根据DMA读写方向和DMA模式的不同向寄存器存放入不同的值,以启动通道0,进而开启DMA的读写操作。5.根据权利要求4所述的方法,其特征在于,DMA读写完成后触发中断,若所述中断为DMA0中断,执行DMA0中断服务函数以停止所述通道0并清除中断,释放物理地址。6.根据权利要求1所述的...

【专利技术属性】
技术研发人员:翟顺尹康李影张天宇郑洋
申请(专利权)人:北京航天福道高技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1