Dma数据传输控制方法及系统的制作方法

文档序号:6523567阅读:266来源:国知局
Dma数据传输控制方法及系统的制作方法
【专利摘要】本发明公开了一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制,因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了映射到主机板内存中的空间,从而提高了PCIE总线可以负载的硬件板卡的数量。本发明还提供一种DMA数据传输控制系统。
【专利说明】DMA数据传输控制方法及系统
【技术领域】
[0001]本申请涉及嵌入式操作系统领域,特别是涉及一种DMA (Direct Memory Access,直接内存存取)数据传输控制方法及系统。
【背景技术】
[0002]在大量基于PCIE总线协议的主机板与硬件板卡数据通信过程中,主机板上的CPU通过操作硬件板卡上的BAR (Base Address Register,基地址寄存器)空间(BAR空间由BARO?BAR5六个BAR寄存器构成)实现主控机与硬件板卡的数据通信。而CPU不能直接访问BAR空间,需要将硬件板卡的BAR空间映射到主机板的MMU (Memory Management Unit,内存管理单元)中,即将硬件板卡的物理空间映射为CPU可以直接访问的虚拟内存空间,主机板通过访问虚拟内存空间实现对BAR空间的访问。
[0003]主控机还可以通过主机板上的DMA控制器实现与硬件板卡之间的DMA数据传输来实现主控机与硬件板卡的数据通信。这是一种完全由硬件执行I/O交换的工作方式,这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在主机板内存和PCIE硬件板卡之间进行。DMA通信一般用于高速传输成组数据。该种方法不仅释放了 CPU资源,更因其通过硬件直接通信,从而极大的提高了数据传输的速度。而目前,在通过DMA控制器传输DMA数据时,CPU将需要传输的DMA数据的地址告知DMA控制器,然后由DMA控制器根据DMA数据的地址访问主机板的虚拟内存空间进行DMA数据的搬运。
[0004]随着PCI总线发展到PCIE总线,总线负载能力得到极大的增强,接入PCIE总线的硬件板卡数量也急剧增加,使得需要在主机板上开辟的PCIE硬件板卡映射空间也随之增大。然而,当主机板的内存空间的大小确定时,主机板分配给硬件板卡的映射空间是有限的,使得PCIE总线可负载的硬件板卡的数量也是有限的,因此,如何在主机板分配给硬件板卡的映射空间不变的情况下,增加PCIE总线可负载的硬件板卡的数量成为亟待解决的问题。

【发明内容】

[0005]为解决上述技术问题,本申请实施例提供一种DMA数据传输控制方法及系统,以增加PCIE总线可负载的硬件板卡的数量。
[0006]技术方案如下:
[0007]—种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到读DMA数据的请求时,所述DMA数据传输控制方法包括:
[0008]CPU读所述第一 BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;
[0009]当判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;[0010]根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中;
[0011]写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
[0012]上述方法,优选的,在读所述第一 BAR寄存器中的第一控制寄存器之前,还包括:
[0013]写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0014]在获取DMA数据长度后,根据DMA数据长度在主机板的内存中配置用于存储所述DMA数据的内存空间之前还包括:
[0015]写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
[0016]上述方法,优选的,在写所述第一 BAR寄存器的第四控制寄存器后还包括:
[0017]接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0018]将接收到的DMA数据发送给数据请求方;
[0019]写所述第一 BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
[0020]释放所配置的用于存储所述DMA数据的内存空间。
[0021 ] 一种DMA数据传输控制系统,应用于CPU,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括:
[0022]判断模块,用于在接收到读DMA数据的请求时,读所述第一 BAR寄存器中的第一控制寄存器,判断硬件板卡是否准备好DMA数据;
[0023]数据长度获取模块,用于在所述判断模块判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
[0024]第一空间配置模块,用于根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存的第三控制寄存器中;
[0025]第一触发模块,用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
[0026]上述系统,优选的,还包括:
[0027]第一中断矢量控制模块,用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0028]所述判断模块用于在所述第一中断矢量控制模块写所述第一 BAR寄存器中的第四控制寄存器后,读所述第一 BAR寄存器中的第一控制寄存器;
[0029]第二中断矢量控制模块,用于在所述数据长度获取模块读所述第一 BAR寄存器中的第二控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
[0030]所述第一空间配置模块用于在所述第二中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中。
[0031 ] 一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到写DMA数据请求时,所述DMA数据传输控制方法包括:
[0032]CPU写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
[0033]在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
[0034]写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
[0035]写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
[0036]上述方法,优选的,在写所述第一 BAR寄存器的第六控制寄存器之前还包括:
[0037]写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0038]在写所述第一 BAR寄存器的第六控制寄存器之后,写所述第一 BAR寄存器的第七控制寄存器之前还包括:
[0039]写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
[0040]上述方法,优选的,在写所述第一 BAR寄存器的第四控制寄存器之后,还包括:
[0041]接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0042]写所述第一 BAR寄存器的第六控制寄存器;
[0043]释放所配置的用于存储待发送DMA数据的内存空间。
[0044]一种DMA数据传输控制系统,应用于CPU,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括:
[0045]复位模块,用于写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
[0046]第二空间配置模块,用于在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
[0047]数据长度写模块,用于写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
[0048]第二触发模块,用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
[0049]上述系统,优选的,还包括:
[0050]第四中断矢量控制模块,用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;[0051]所述复位模块用于在所述第四中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,写所述第一 BAR寄存器的第六控制寄存器;
[0052]第五中断矢量控制模块,用于在所述复位模块写所述第一 BAR寄存器的第六控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关
[0053]所述二空间配置模块用于在所述第五中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址。
[0054]由以上本申请实施例提供的技术方案可见,本申请提供的一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制,因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一 BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了 PCIE总线可以负载的硬件板卡的数量。
【专利附图】

【附图说明】
[0055]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0056]图1为本申请实施例提供的一种DMA数据传输控制方法的流程图;
[0057]图2为本申请实施例提供的另一种DMA数据传输控制方法的流程图;
[0058]图3为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
[0059]图4为本申请实施例提供的一种DMA数据传输控制系统的结构示意图;
[0060]图5为本申请实施例提供的另一种DMA数据传输控制系统的结构示意图;
[0061]图6为本申请实施例提供的又一种DMA数据传输系统的结构示意图;
[0062]图7为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
[0063]图8为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
[0064]图9为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
[0065]图10为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图;
[0066]图11为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图;
[0067]图12为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图。
[0068]为了图示的简单和清楚,以上附图示出了结构的普通形式,并且为了避免不必要的模糊本发明,可以省略已知特征和技术的描述和细节。另外,附图中的单元不必要按照比例绘制。例如,可以相对于其他单元放大图中的一些单元的尺寸,从而帮助更好的理解本发明的实施例。不同附图中的相同标号表示相同的单元。
[0069]说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三” “第四”等(如果存在)是用于区别类似的单元或过程,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示的或否则描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可以包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
【具体实施方式】
[0070]为了使本【技术领域】的人员更好地理解本申请方案。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0071]请参看图1,图1为本申请实施例提供的一种DMA数据传输控制方法的流程图,本申请实施例中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到读DMA数据的请求时,所述DMA数据传输控制方法包括:
[0072]步骤Sll =CPU读所述第一 BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;
[0073]本申请实施例提供的DMA数据传输控制方法应用于CPU内,当CPU接收到读DMA数据的请求时,读第一 BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;该第一控制寄存器可以只占用第一 BAR寄存器中的一个比特位来标示DMA数据是否已经准备好,例如,当第一控制寄存器中的值为“I”时,说明DMA数据已经准备好,否则说明DMA数据没有准备好。
[0074]其中,对第一控制寄存器的写操作是有硬件板卡侧完成,即当硬件板卡准备好DMA数据时,硬件板卡会写第一控制寄存器,例如,可以在第一控制寄存器中写“1”,以标示DMA数据已经准备完成。
[0075]步骤S12:当判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
[0076]当硬件板卡准备好DMA数据后,除了写第一控制寄存器以标示DMA数据已经准备好,还会写第二控制寄存器,以标明所准备好的DMA数据的长度。
[0077]步骤S13:根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中;
[0078]CPU通过读所述第一 BAR寄存器中的第二控制寄存器获取DMA数据的长度后,在内存中为待传输的DMA数据开辟内存空间作为DMA传输的目的地址,并将开辟的内存空间的起始地址通过写入第一 BAR寄存器中的第三控制寄存器的方式告知DMA控制器。而DMA数据的源地址为硬件板卡默认已知的,不需要CPU进行操作。
[0079]步骤S14:写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
[0080]具体的,可以通过写所述第一 BAR寄存器的第四控制寄存器实现向硬件板卡发送DMA读启动脉冲,从而使能DMA数据传输。例如,可以先对第四控制寄存器写“I”再写“0”实现向硬件板卡发送下降沿信号,硬件板卡在识别到下降沿后,开始进行DMA数据传输。
[0081]本申请实施例提供的DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要读DMA数据时,当硬件板卡准备好DMA数据后,才根据DMA数据传输长度在主机板的内存中配置用于存储所传输的DMA数据的内存空间。
[0082]由此可知,本申请实施例提供的DMA数据传输控制方法,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一 BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了 PCIE总线可以负载的硬件板卡的数量。
[0083]在图1所示实施例的基础上,为了保证DMA数据传输不被中断,本申请实施例提供的另一种DMA数据传输控制方法的流程图如图2所示,在读所述第一 BAR寄存器中的第一控制寄存器之前,还可以包括:
[0084]步骤S21:写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0085]也就是说,CPU通过写第一 BAR寄存器中的第五控制寄存器控制硬件板卡的中断矢量总开关的开或关,由于中断矢量总开的状态只有开或关,因此,第五控制寄存器可以只占用一个比特位的空间,当关闭硬件板卡的中断矢量总开关时,硬件板卡上的所有中断矢量都不能发送中断信号,而只有开启硬件板卡的中断矢量总开关时,硬件板卡才可以向CPU发送中断信号;
[0086]而且,为了进一步保证关闭硬件板卡的中断矢量总开关时,硬件板卡不向CPU发送中断信号,在关闭硬件板卡的中断矢量总开关的同时,还可以写所述第一 BAR寄存器中的第九控制寄存器,以屏蔽所有中断矢量发送中断信号。
[0087]在获取DMA数据长度后,根据DMA数据长度在主机板的内存中配置用于存储所述DMA数据的内存空间之前还可以包括:
[0088]步骤S22:写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
[0089]当开启硬件板卡的中断矢量总开关时,硬件板卡上的各个中断源矢量可以发送中断信号;而如果之前关闭硬件板卡的中断矢量总开关的同时还屏蔽所有中断矢量发送中断信号,则在开启所述硬件板卡的中断矢量总开关后,还需要写所述第一 BAR寄存器中的第九控制寄存器,以解除对各个中断矢量的屏蔽。
[0090]在图1或图2所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图3所示,在写所述第一 BAR寄存器的第四控制寄存器后,还可以包括:
[0091]步骤S31:接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0092]硬件板卡发送完DMA数据后,会向CPU发送一个中断信号,以示DMA数据已传输完成。
[0093]步骤S32:将接收到的DMA数据发送给数据请求方;
[0094]步骤S33:写所述第一 BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
[0095]步骤S34:释放所配置的用于存储所述DMA数据的内存空间。
[0096]在将DMA数据发送给数据请求方后,关闭硬件板卡的中断矢量总开关,并释放为DMA数据开辟的内存。
[0097]与图1所示方法实施例相对应,本申请实施例还提供一种DMA数据传输系统,本申请实施例提供的传输系统应用于CPU,其中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;本申请实施例提供的一种DMA数据传输控制系统的结构示意图如图4所示,可以包括:
[0098]判断模块41,数据长度获取模块42,第一空间配置模块43和第一触发模块44 ;其中,
[0099]判断模块41用于在接收到读DMA数据的请求时,读所述第一 BAR寄存器中的第一控制寄存器,判断硬件板卡是否准备好DMA数据;
[0100]数据长度获取模块42用于在所述判断模块判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
[0101]第一空间配置模块43用于根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存的第三控制寄存器中;
[0102]第一触发模块44用于写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
[0103]本申请实施例提供的DMA数据传输控制系统,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要读DMA数据时,当判断模块判断出硬件板卡准备好DMA数据,数据长度获取模块获取DMA数据长度后,第一空间配置模块才根据DMA数据传输长度在主机板的内存中配置用于存储所传输的DMA数据的内存空间。
[0104]由此可知,本申请实施例提供的DMA数据传输控制系统,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制系统,只需要将硬件板卡中的第一 BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了 PCIE总线可以负载的硬件板卡的数量。[0105]在图4所示实施例的基础上,本申请实施例提供的另一种DMA数据传输控制系统的结构示意图如图5所示,还可以包括:
[0106]第一中断矢量控制模块51和第二中断矢量控制模块52 ;其中,
[0107]第一中断矢量控制模块51用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0108]所述判断模块41用于在所述第一中断矢量控制模块51写所述第一 BAR寄存器中的第四控制寄存器后,读所述第一 BAR寄存器中的第一控制寄存器;
[0109]第二中断矢量控制模块52用于在所述数据长度获取模块42读所述第一 BAR寄存器中的第二控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
[0110]所述第一空间配置模块43用于在所述第二中断矢量控制模块52写所述第一 BAR寄存器中的第五控制寄存器后,根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中。
[0111]在图4或图5所示实施例的基础上,本申请实施例提供的又一种DMA数据传输系统的结构示意图如图6所示,还可以包括:
[0112]第一接收模块61,数据发送模块62,第三中断矢量控制模块63和第一释放模块64 ;其中,
[0113]接收模块61用于接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0114]数据发送模块62用于将接收到的DMA数据发送给数据请求方;
[0115]第三中断矢量控制模块63用于写所述第一 BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
[0116]释放模块64用于释放所配置的用于存储所述DMA数据的内存空间。
[0117]当CPU接收到写DMA数据的请求时,本申请实施例提供又一种DMA数据传输控制方法,本申请实施例中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到写DMA数据请求时,所述DMA数据传输控制方法的流程图如图7所示,可以包括:
[0118]步骤S71 =CPU写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
[0119]优选的,可以通过写所述第一 BAR寄存器的第六控制寄存器向硬件板卡发送脉冲信号的方式触发所述硬件板卡复位,例如,可以将第六控制寄存器先写“ I”再写“0”,从而向第六控制寄存器发送一个下降沿,硬件板卡在捕捉到该下降沿后,复位硬件板卡的状态,具体硬件板卡如何复位其状态属于本领域的公知常识,这里不再赘述。
[0120]步骤S72:在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
[0121]在发送DMA数据之前,CPU先为待发送的数据开辟内存空间,即DMA数据的源地址,并将待发送的数据存储至该内存空间中,然后将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中。而DMA数据的目的地址是硬件板卡默认已知的,不需要CPU进行操作。
[0122]步骤S73:写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
[0123]硬件板卡可以通过所述DMA数据的长度判断DMA数据是否传输完成。
[0124]步骤S74:写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
[0125]具体的,可以通过写所述第一 BAR寄存器的第四控制寄存器实现向硬件板卡发送DMA写启动脉冲,从而使能DMA数据传输。例如,可以先对第四控制寄存器写“I”再写“0”实现向硬件板卡发送下降沿信号,硬件板卡在识别到下降沿后,开始进行DMA数据传输。
[0126]本申请实施例提供的DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要写DMA数据时,才在主机板的内存中配置用于存储所传输的DMA数据的内存空间,并将配置的内存空间的起始地址以及DMA数据的长度通过写控制寄存器的方式告知DMA控制器。
[0127]由此可知,本申请实施例提供的DMA数据传输控制方法,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一 BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了 PCIE总线可以负载的硬件板卡的数量。
[0128]在图7所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图8所示,在写所述第一 BAR寄存器的第六控制寄存器之前还可以包括:
[0129]步骤S81:写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0130]在写所述第一 BAR寄存器的第六控制寄存器之后,写所述第一 BAR寄存器的第七控制寄存器之前还包括:
[0131]步骤S82:写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
[0132]在图7或图8所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图9所示,在写所述第一 BAR寄存器的第四控制寄存器之后还可以包括:
[0133]步骤S91:接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0134]步骤S92:写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
[0135]步骤S93:释放所配置的用于存储待发送DMA数据的内存空间。
[0136]与图7所示方法实施例相对应,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图10所示,可以包括:[0137]复位模块101,第二空间配置模块102,数据长度写模块103和第二触发模块104 ;其中,
[0138]第一复位模块101用于写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
[0139]第二空间配置模块102用于在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
[0140]数据长度写模块103用于写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
[0141 ] 第二触发模块104用于写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
[0142]本申请实施例提供的DMA数据传输控制系统,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要写DMA数据时,第二空间配置模块才在主机板的内存中配置用于存储所传输的DMA数据的内存空间,并将配置的内存空间的起始地址通过写控制寄存器的方式告知DMA控制器,数据长度写模块通过写控制寄存器的方式将DMA数据的长度告知DMA控制器。
[0143]由此可知,本申请实施例提供的DMA数据传输控制系统,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制系统,只需要将硬件板卡中的第一 BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了 PCIE总线可以负载的硬件板卡的数量。
[0144]在图10所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图11所示,还可以包括:
[0145]第四中断矢量控制模块111和第五中断矢量控制模块112 ;其中,
[0146]第四中断矢量控制模块111用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
[0147]所述第一复位模块101用于在所述第四中断矢量控制模块111写所述第一 BAR寄存器中的第五控制寄存器后,写所述第一 BAR寄存器的第六控制寄存器;
[0148]第五中断矢量控制模块112用于在所述第一复位模块101写所述第一 BAR寄存器的第六控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关
[0149]所述二空间配置模块102用于在所述第五中断矢量控制模块112写所述第一 BAR寄存器中的第五控制寄存器后,在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址。
[0150]在图10或图11所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图12所示,还可以包括:
[0151]第二接收模块121,用于接收所述硬件板卡发送的DMA数据传输完成中断信号;
[0152]第二复位模块122,用于在所述第二接收模块121接收到DMA数据传输完成中断信号后,写所述第一 BAR寄存器的第六控制寄存器;
[0153]第二释放模块123,用于在所述第二复位模块101写所述第一 BAR寄存器的第六控制寄存器后,释放所配置的用于存储待发送DMA数据的内存空间。
[0154]下面举例对本申请实施例提供的各个控制寄存器进行说明:
[0155]读寄存器举例说明:
[0156]
【权利要求】
1.一种DMA数据传输控制方法,其特征在于,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到读DMA数据的请求时,所述DMA数据传输控制方法包括: CPU读所述第一 BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据; 当判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度; 根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中; 写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
2.根据权利要求1所述的方法,其特征在于,在读所述第一BAR寄存器中的第一控制寄存器之前,还包括: 写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关; 在获取DMA数据长度后,根据DMA数据长度在主机板的内存中配置用于存储所述DMA数据的内存空间之前还包括: 写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
3.根据权利要求1或2所述的方法,其特征在于,在写所述第一BAR寄存器的第四控制寄存器后还包括: 接收所述硬件板卡发送的DMA数据传输完成中断信号; 将接收到的DMA数据发送给数据请求方; 写所述第一 BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关; 释放所配置的用于存储所述DMA数据的内存空间。
4.一种DMA数据传输控制系统,应用于CPU,其特征在于,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括: 判断模块,用于在接收到读DMA数据的请求时,读所述第一 BAR寄存器中的第一控制寄存器,判断硬件板卡是否准备好DMA数据; 数据长度获取模块,用于在所述判断模块判断出所述硬件板卡准备好DMA数据时,读所述第一 BAR寄存器中的第二控制寄存器,以获取DMA数据的长度; 第一空间配置模块,用于根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存的第三控制寄存器中; 第一触发模块,用于写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
5.根据权利要求4所述的系统,其特征在于,还包括: 第一中断矢量控制模块,用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关; 所述判断模块用于在所述第一中断矢量控制模块写所述第一 BAR寄存器中的第四控制寄存器后,读所述第一 BAR寄存器中的第一控制寄存器; 第二中断矢量控制模块,用于在所述数据长度获取模块读所述第一 BAR寄存器中的第二控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关; 所述第一空间配置模块用于在所述第二中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一 BAR寄存器的第三控制寄存器中。
6.一种DMA数据传输控制方法,其特征在于,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;当接收到写DMA数据请求时,所述DMA数据传输控制方法包括: CPU写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态; 在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址; 写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度; 写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
7.根据权利要求6所述的方法,其特征在于,在写所述第一BAR寄存器的第六控制寄存器之前还包括: 写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关; 在写所述第一 BAR寄存器的第六控制寄存器之后,写所述第一 BAR寄存器的第七控制寄存器之前还包括: 写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
8.根据权利要求6或7所述的方法,其特征在于,在写所述第一BAR寄存器的第四控制寄存器之后,还包括: 接收所述硬件板卡发送的DMA数据传输完成中断信号; 写所述第一 BAR寄存器的第六控制寄存器; 释放所配置的用于存储待发送DMA数据的内存空间。
9.一种DMA数据传输控制系统,应用于CPU,其特征在于,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一 BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括:复位模块,用于写所述第一 BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态; 第二空间配置模块,用于在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址; 数据长度写模块,用于写所述第一 BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度; 第二触发模块,用于写所述第一 BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
10.根据权利要求9所述的系统,其特征在于,还包括: 第四中断矢量控制模块,用于写所述第一 BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关; 所述复位模块用于在所述第四中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,写所述第一 BAR寄存器的第六控制寄存器; 第五中断矢量控制模块,用于在所述复位模块写所述第一 BAR寄存器的第六控制寄存器后,写所述第一 BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关 所述二空间配置模块用于在所述第五中断矢量控制模块写所述第一 BAR寄存器中的第五控制寄存器后,在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一 BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址。
【文档编号】G06F13/28GK103646001SQ201310682944
【公开日】2014年3月19日 申请日期:2013年12月12日 优先权日:2013年12月12日
【发明者】杨德草, 吴磊, 赵世丰, 王杰峰 申请人:北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1