CN103646001B - Dma数据传输控制方法及系统 - Google Patents

Dma数据传输控制方法及系统 Download PDF

Info

Publication number
CN103646001B
CN103646001B CN201310682944.7A CN201310682944A CN103646001B CN 103646001 B CN103646001 B CN 103646001B CN 201310682944 A CN201310682944 A CN 201310682944A CN 103646001 B CN103646001 B CN 103646001B
Authority
CN
China
Prior art keywords
dma data
depositor
write
hardware board
controls
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310682944.7A
Other languages
English (en)
Other versions
CN103646001A (zh
Inventor
杨德草
吴磊
赵世丰
王杰峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Runke General Technology Co Ltd
Original Assignee
Beijing Jingwei Hirain Tech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingwei Hirain Tech Co Ltd filed Critical Beijing Jingwei Hirain Tech Co Ltd
Priority to CN201310682944.7A priority Critical patent/CN103646001B/zh
Publication of CN103646001A publication Critical patent/CN103646001A/zh
Application granted granted Critical
Publication of CN103646001B publication Critical patent/CN103646001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制,因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了映射到主机板内存中的空间,从而提高了PCIE总线可以负载的硬件板卡的数量。本发明还提供一种DMA数据传输控制系统。

Description

DMA数据传输控制方法及系统
技术领域
本申请涉及嵌入式操作系统领域,特别是涉及一种DMA(DirectMemoryAccess,直接内存存取)数据传输控制方法及系统。
背景技术
在大量基于PCIE总线协议的主机板与硬件板卡数据通信过程中,主机板上的CPU通过操作硬件板卡上的BAR(BaseAddressRegister,基地址寄存器)空间(BAR空间由BAR0~BAR5六个BAR寄存器构成)实现主控机与硬件板卡的数据通信。而CPU不能直接访问BAR空间,需要将硬件板卡的BAR空间映射到主机板的MMU(MemoryManagementUnit,内存管理单元)中,即将硬件板卡的物理空间映射为CPU可以直接访问的虚拟内存空间,主机板通过访问虚拟内存空间实现对BAR空间的访问。
主控机还可以通过主机板上的DMA控制器实现与硬件板卡之间的DMA数据传输来实现主控机与硬件板卡的数据通信。这是一种完全由硬件执行I/O交换的工作方式,这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在主机板内存和PCIE硬件板卡之间进行。DMA通信一般用于高速传输成组数据。该种方法不仅释放了CPU资源,更因其通过硬件直接通信,从而极大的提高了数据传输的速度。而目前,在通过DMA控制器传输DMA数据时,CPU将需要传输的DMA数据的地址告知DMA控制器,然后由DMA控制器根据DMA数据的地址访问主机板的虚拟内存空间进行DMA数据的搬运。
随着PCI总线发展到PCIE总线,总线负载能力得到极大的增强,接入PCIE总线的硬件板卡数量也急剧增加,使得需要在主机板上开辟的PCIE硬件板卡映射空间也随之增大。然而,当主机板的内存空间的大小确定时,主机板分配给硬件板卡的映射空间是有限的,使得PCIE总线可负载的硬件板卡的数量也是有限的,因此,如何在主机板分配给硬件板卡的映射空间不变的情况下,增加PCIE总线可负载的硬件板卡的数量成为亟待解决的问题。
发明内容
为解决上述技术问题,本申请实施例提供一种DMA数据传输控制方法及系统,以增加PCIE总线可负载的硬件板卡的数量。
技术方案如下:
一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;当接收到读DMA数据的请求时,所述DMA数据传输控制方法包括:
CPU读所述第一BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;
当判断出所述硬件板卡准备好DMA数据时,读所述第一BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存器的第三控制寄存器中;
写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
上述方法,优选的,在读所述第一BAR寄存器中的第一控制寄存器之前,还包括:
写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
在获取DMA数据长度后,根据DMA数据长度在主机板的内存中配置用于存储所述DMA数据的内存空间之前还包括:
写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
上述方法,优选的,在写所述第一BAR寄存器的第四控制寄存器后还包括:
接收所述硬件板卡发送的DMA数据传输完成中断信号;
将接收到的DMA数据发送给数据请求方;
写所述第一BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
释放所配置的用于存储所述DMA数据的内存空间。
一种DMA数据传输控制系统,应用于CPU,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括:
判断模块,用于在接收到读DMA数据的请求时,读所述第一BAR寄存器中的第一控制寄存器,判断硬件板卡是否准备好DMA数据;
数据长度获取模块,用于在所述判断模块判断出所述硬件板卡准备好DMA数据时,读所述第一BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
第一空间配置模块,用于根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存的第三控制寄存器中;
第一触发模块,用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
上述系统,优选的,还包括:
第一中断矢量控制模块,用于写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
所述判断模块用于在所述第一中断矢量控制模块写所述第一BAR寄存器中的第四控制寄存器后,读所述第一BAR寄存器中的第一控制寄存器;
第二中断矢量控制模块,用于在所述数据长度获取模块读所述第一BAR寄存器中的第二控制寄存器后,写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
所述第一空间配置模块用于在所述第二中断矢量控制模块写所述第一BAR寄存器中的第五控制寄存器后,根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存器的第三控制寄存器中。
一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;当接收到写DMA数据请求时,所述DMA数据传输控制方法包括:
CPU写所述第一BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
写所述第一BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
上述方法,优选的,在写所述第一BAR寄存器的第六控制寄存器之前还包括:
写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
在写所述第一BAR寄存器的第六控制寄存器之后,写所述第一BAR寄存器的第七控制寄存器之前还包括:
写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
上述方法,优选的,在写所述第一BAR寄存器的第四控制寄存器之后,还包括:
接收所述硬件板卡发送的DMA数据传输完成中断信号;
写所述第一BAR寄存器的第六控制寄存器;
释放所配置的用于存储待发送DMA数据的内存空间。
一种DMA数据传输控制系统,应用于CPU,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;所述DMA数据传输控制系统包括:
复位模块,用于写所述第一BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
第二空间配置模块,用于在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
数据长度写模块,用于写所述第一BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
第二触发模块,用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
上述系统,优选的,还包括:
第四中断矢量控制模块,用于写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
所述复位模块用于在所述第四中断矢量控制模块写所述第一BAR寄存器中的第五控制寄存器后,写所述第一BAR寄存器的第六控制寄存器;
第五中断矢量控制模块,用于在所述复位模块写所述第一BAR寄存器的第六控制寄存器后,写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
所述第二空间配置模块用于在所述第五中断矢量控制模块写所述第一BAR寄存器中的第五控制寄存器后,在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址。
由以上本申请实施例提供的技术方案可见,本申请提供的一种DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制,因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种DMA数据传输控制方法的流程图;
图2为本申请实施例提供的另一种DMA数据传输控制方法的流程图;
图3为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
图4为本申请实施例提供的一种DMA数据传输控制系统的结构示意图;
图5为本申请实施例提供的另一种DMA数据传输控制系统的结构示意图;
图6为本申请实施例提供的又一种DMA数据传输系统的结构示意图;
图7为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
图8为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
图9为本申请实施例提供的又一种DMA数据传输控制方法的流程图;
图10为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图;
图11为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图;
图12为本申请实施例提供的又一种DMA数据传输控制系统的结构示意图。
为了图示的简单和清楚,以上附图示出了结构的普通形式,并且为了避免不必要的模糊本发明,可以省略已知特征和技术的描述和细节。另外,附图中的单元不必要按照比例绘制。例如,可以相对于其他单元放大图中的一些单元的尺寸,从而帮助更好的理解本发明的实施例。不同附图中的相同标号表示相同的单元。
说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的单元或过程,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示的或否则描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可以包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
请参看图1,图1为本申请实施例提供的一种DMA数据传输控制方法的流程图,本申请实施例中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;当接收到读DMA数据的请求时,所述DMA数据传输控制方法包括:
步骤S11:CPU读所述第一BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;
本申请实施例提供的DMA数据传输控制方法应用于CPU内,当CPU接收到读DMA数据的请求时,读第一BAR寄存器中的第一控制寄存器,以判断硬件板卡是否准备好DMA数据;该第一控制寄存器可以只占用第一BAR寄存器中的一个比特位来标示DMA数据是否已经准备好,例如,当第一控制寄存器中的值为“1”时,说明DMA数据已经准备好,否则说明DMA数据没有准备好。
其中,对第一控制寄存器的写操作是有硬件板卡侧完成,即当硬件板卡准备好DMA数据时,硬件板卡会写第一控制寄存器,例如,可以在第一控制寄存器中写“1”,以标示DMA数据已经准备完成。
步骤S12:当判断出所述硬件板卡准备好DMA数据时,读所述第一BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
当硬件板卡准备好DMA数据后,除了写第一控制寄存器以标示DMA数据已经准备好,还会写第二控制寄存器,以标明所准备好的DMA数据的长度。
步骤S13:根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存器的第三控制寄存器中;
CPU通过读所述第一BAR寄存器中的第二控制寄存器获取DMA数据的长度后,在内存中为待传输的DMA数据开辟内存空间作为DMA传输的目的地址,并将开辟的内存空间的起始地址通过写入第一BAR寄存器中的第三控制寄存器的方式告知DMA控制器。而DMA数据的源地址为硬件板卡默认已知的,不需要CPU进行操作。
步骤S14:写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
具体的,可以通过写所述第一BAR寄存器的第四控制寄存器实现向硬件板卡发送DMA读启动脉冲,从而使能DMA数据传输。例如,可以先对第四控制寄存器写“1”再写“0”实现向硬件板卡发送下降沿信号,硬件板卡在识别到下降沿后,开始进行DMA数据传输。
本申请实施例提供的DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要读DMA数据时,当硬件板卡准备好DMA数据后,才根据DMA数据传输长度在主机板的内存中配置用于存储所传输的DMA数据的内存空间。
由此可知,本申请实施例提供的DMA数据传输控制方法,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
在图1所示实施例的基础上,为了保证DMA数据传输不被中断,本申请实施例提供的另一种DMA数据传输控制方法的流程图如图2所示,在读所述第一BAR寄存器中的第一控制寄存器之前,还可以包括:
步骤S21:写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
也就是说,CPU通过写第一BAR寄存器中的第五控制寄存器控制硬件板卡的中断矢量总开关的开或关,由于中断矢量总开的状态只有开或关,因此,第五控制寄存器可以只占用一个比特位的空间,当关闭硬件板卡的中断矢量总开关时,硬件板卡上的所有中断矢量都不能发送中断信号,而只有开启硬件板卡的中断矢量总开关时,硬件板卡才可以向CPU发送中断信号;
而且,为了进一步保证关闭硬件板卡的中断矢量总开关时,硬件板卡不向CPU发送中断信号,在关闭硬件板卡的中断矢量总开关的同时,还可以写所述第一BAR寄存器中的第九控制寄存器,以屏蔽所有中断矢量发送中断信号。
在获取DMA数据长度后,根据DMA数据长度在主机板的内存中配置用于存储所述DMA数据的内存空间之前还可以包括:
步骤S22:写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
当开启硬件板卡的中断矢量总开关时,硬件板卡上的各个中断源矢量可以发送中断信号;而如果之前关闭硬件板卡的中断矢量总开关的同时还屏蔽所有中断矢量发送中断信号,则在开启所述硬件板卡的中断矢量总开关后,还需要写所述第一BAR寄存器中的第九控制寄存器,以解除对各个中断矢量的屏蔽。
在图1或图2所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图3所示,在写所述第一BAR寄存器的第四控制寄存器后,还可以包括:
步骤S31:接收所述硬件板卡发送的DMA数据传输完成中断信号;
硬件板卡发送完DMA数据后,会向CPU发送一个中断信号,以示DMA数据已传输完成。
步骤S32:将接收到的DMA数据发送给数据请求方;
步骤S33:写所述第一BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
步骤S34:释放所配置的用于存储所述DMA数据的内存空间。
在将DMA数据发送给数据请求方后,关闭硬件板卡的中断矢量总开关,并释放为DMA数据开辟的内存。
与图1所示方法实施例相对应,本申请实施例还提供一种DMA数据传输系统,本申请实施例提供的传输系统应用于CPU,其中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;本申请实施例提供的一种DMA数据传输控制系统的结构示意图如图4所示,可以包括:
判断模块41,数据长度获取模块42,第一空间配置模块43和第一触发模块44;其中,
判断模块41用于在接收到读DMA数据的请求时,读所述第一BAR寄存器中的第一控制寄存器,判断硬件板卡是否准备好DMA数据;
数据长度获取模块42用于在所述判断模块判断出所述硬件板卡准备好DMA数据时,读所述第一BAR寄存器中的第二控制寄存器,以获取DMA数据的长度;
第一空间配置模块43用于根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存的第三控制寄存器中;
第一触发模块44用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器依据所述内存空间的起始地址将所述硬件板卡中的DMA数据传输至所配置的用于存储DMA数据的内存空间中。
本申请实施例提供的DMA数据传输控制系统,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要读DMA数据时,当判断模块判断出硬件板卡准备好DMA数据,数据长度获取模块获取DMA数据长度后,第一空间配置模块才根据DMA数据传输长度在主机板的内存中配置用于存储所传输的DMA数据的内存空间。
由此可知,本申请实施例提供的DMA数据传输控制系统,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制系统,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
在图4所示实施例的基础上,本申请实施例提供的另一种DMA数据传输控制系统的结构示意图如图5所示,还可以包括:
第一中断矢量控制模块51和第二中断矢量控制模块52;其中,
第一中断矢量控制模块51用于写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
所述判断模块41用于在所述第一中断矢量控制模块51写所述第一BAR寄存器中的第四控制寄存器后,读所述第一BAR寄存器中的第一控制寄存器;
第二中断矢量控制模块52用于在所述数据长度获取模块42读所述第一BAR寄存器中的第二控制寄存器后,写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
所述第一空间配置模块43用于在所述第二中断矢量控制模块52写所述第一BAR寄存器中的第五控制寄存器后,根据DMA数据传输长度在主机板的内存中配置用于存储DMA数据的内存空间,并将所配置的内存空间的起始地址写入所述第一BAR寄存器的第三控制寄存器中。
在图4或图5所示实施例的基础上,本申请实施例提供的又一种DMA数据传输系统的结构示意图如图6所示,还可以包括:
第一接收模块61,数据发送模块62,第三中断矢量控制模块63和第一释放模块64;其中,
接收模块61用于接收所述硬件板卡发送的DMA数据传输完成中断信号;
数据发送模块62用于将接收到的DMA数据发送给数据请求方;
第三中断矢量控制模块63用于写所述第一BAR寄存器的第五控制寄存器,以关闭硬件板卡的中断矢量总开关;
释放模块64用于释放所配置的用于存储所述DMA数据的内存空间。
当CPU接收到写DMA数据的请求时,本申请实施例提供又一种DMA数据传输控制方法,本申请实施例中,DMA控制器集成在硬件板卡上,所述硬件板卡上的第一BAR寄存器包括若干个控制寄存器;当接收到写DMA数据请求时,所述DMA数据传输控制方法的流程图如图7所示,可以包括:
步骤S71:CPU写所述第一BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
优选的,可以通过写所述第一BAR寄存器的第六控制寄存器向硬件板卡发送脉冲信号的方式触发所述硬件板卡复位,例如,可以将第六控制寄存器先写“1”再写“0”,从而向第六控制寄存器发送一个下降沿,硬件板卡在捕捉到该下降沿后,复位硬件板卡的状态,具体硬件板卡如何复位其状态属于本领域的公知常识,这里不再赘述。
步骤S72:在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
在发送DMA数据之前,CPU先为待发送的数据开辟内存空间,即DMA数据的源地址,并将待发送的数据存储至该内存空间中,然后将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中。而DMA数据的目的地址是硬件板卡默认已知的,不需要CPU进行操作。
步骤S73:写所述第一BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
硬件板卡可以通过所述DMA数据的长度判断DMA数据是否传输完成。
步骤S74:写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
具体的,可以通过写所述第一BAR寄存器的第四控制寄存器实现向硬件板卡发送DMA写启动脉冲,从而使能DMA数据传输。例如,可以先对第四控制寄存器写“1”再写“0”实现向硬件板卡发送下降沿信号,硬件板卡在识别到下降沿后,开始进行DMA数据传输。
本申请实施例提供的DMA数据传输控制方法,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要写DMA数据时,才在主机板的内存中配置用于存储所传输的DMA数据的内存空间,并将配置的内存空间的起始地址以及DMA数据的长度通过写控制寄存器的方式告知DMA控制器。
由此可知,本申请实施例提供的DMA数据传输控制方法,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制方法,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
在图7所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图8所示,在写所述第一BAR寄存器的第六控制寄存器之前还可以包括:
步骤S81:写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
在写所述第一BAR寄存器的第六控制寄存器之后,写所述第一BAR寄存器的第七控制寄存器之前还包括:
步骤S82:写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关。
在图7或图8所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制方法的流程图如图9所示,在写所述第一BAR寄存器的第四控制寄存器之后还可以包括:
步骤S91:接收所述硬件板卡发送的DMA数据传输完成中断信号;
步骤S92:写所述第一BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
步骤S93:释放所配置的用于存储待发送DMA数据的内存空间。
与图7所示方法实施例相对应,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图10所示,可以包括:
复位模块101,第二空间配置模块102,数据长度写模块103和第二触发模块104;其中,
第一复位模块101用于写所述第一BAR寄存器的第六控制寄存器,以复位所述硬件板卡的状态;
第二空间配置模块102用于在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址;
数据长度写模块103用于写所述第一BAR寄存器中的第八控制寄存器,以便所述DMA控制器识别所述需要写的DMA数据的长度;
第二触发模块104用于写所述第一BAR寄存器的第四控制寄存器,以触发所述DMA控制器将所配置的用于存储待发送DMA数据的内存空间中的DMA数据传输至所述硬件板卡中。
本申请实施例提供的DMA数据传输控制系统,DMA控制器集成在硬件板卡上,因此,DMA控制器可以识别硬件板卡上的物理内存,从而不需要预先将硬件板卡的存储DMA数据的空间映射到主机板的内存中。而当需要写DMA数据时,第二空间配置模块才在主机板的内存中配置用于存储所传输的DMA数据的内存空间,并将配置的内存空间的起始地址通过写控制寄存器的方式告知DMA控制器,数据长度写模块通过写控制寄存器的方式将DMA数据的长度告知DMA控制器。
由此可知,本申请实施例提供的DMA数据传输控制系统,将DMA控制器集成在硬件板卡上,并通过CPU访问硬件板卡中的控制寄存器实现对DMA数据传输的控制。因此,本申请实施例提供的DMA数据传输控制系统,只需要将硬件板卡中的第一BAR寄存器所占用的空间映射到主机板的内存即可,而不需要将硬件板卡中DMA数据的BAR空间映射到主机板的内存中,而控制寄存器所占用的空间远远小于DMA数据所占用的空间,因此,本申请实施例提供的DMA数据传输控制方法减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
在图10所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图11所示,还可以包括:
第四中断矢量控制模块111和第五中断矢量控制模块112;其中,
第四中断矢量控制模块111用于写所述第一BAR寄存器中的第五控制寄存器,以关闭所述硬件板卡的中断矢量总开关;
所述第一复位模块101用于在所述第四中断矢量控制模块111写所述第一BAR寄存器中的第五控制寄存器后,写所述第一BAR寄存器的第六控制寄存器;
第五中断矢量控制模块112用于在所述第一复位模块101写所述第一BAR寄存器的第六控制寄存器后,写所述第一BAR寄存器中的第五控制寄存器,以开启所述硬件板卡的中断矢量总开关;
所述第二空间配置模块102用于在所述第五中断矢量控制模块112写所述第一BAR寄存器中的第五控制寄存器后,在主机板的内存中配置用于存储待发送DMA数据的内存空间,并将配置的内存空间的起始地址写入所述第一BAR寄存器的第七控制寄存器中,以便所述DMA控制器识别所需要写的DMA数据的源地址。
在图10或图11所示实施例的基础上,本申请实施例提供的又一种DMA数据传输控制系统的结构示意图如图12所示,还可以包括:
第二接收模块121,用于接收所述硬件板卡发送的DMA数据传输完成中断信号;
第二复位模块122,用于在所述第二接收模块121接收到DMA数据传输完成中断信号后,写所述第一BAR寄存器的第六控制寄存器;
第二释放模块123,用于在所述第二复位模块101写所述第一BAR寄存器的第六控制寄存器后,释放所配置的用于存储待发送DMA数据的内存空间。
下面举例对本申请实施例提供的各个控制寄存器进行说明:
读寄存器举例说明:
写寄存器举例说明:
本示例中,读、写寄存器所占用的空间仅为128KByte,远远小于DMA数据的所占用的空间,而本申请实施例提供的DMA数据传输控制方法,只需要将读、写寄存器所占用的空间映射到主机板的内存中即可,而不用将DMA数据的所占用的空间映射到主机板的内存中,从而减少了由硬件板卡映射到主机板内存中的空间,从而在主机板分配给硬件板卡的映射空间不变的情况下,提高了PCIE总线可以负载的硬件板卡的数量。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

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数据的源地址。
CN201310682944.7A 2013-12-12 2013-12-12 Dma数据传输控制方法及系统 Active CN103646001B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310682944.7A CN103646001B (zh) 2013-12-12 2013-12-12 Dma数据传输控制方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310682944.7A CN103646001B (zh) 2013-12-12 2013-12-12 Dma数据传输控制方法及系统

Publications (2)

Publication Number Publication Date
CN103646001A CN103646001A (zh) 2014-03-19
CN103646001B true CN103646001B (zh) 2016-07-06

Family

ID=50251222

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310682944.7A Active CN103646001B (zh) 2013-12-12 2013-12-12 Dma数据传输控制方法及系统

Country Status (1)

Country Link
CN (1) CN103646001B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870879B (zh) * 2016-09-23 2020-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495817A (zh) * 2011-12-08 2012-06-13 成都林海电子有限责任公司 一种基于pci总线的高速数据传输方法
CN103019990A (zh) * 2012-10-24 2013-04-03 绵阳市维博电子有限责任公司 一种采集端启动pci-e总线dma上传数据的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4558519B2 (ja) * 2005-01-18 2010-10-06 富士通株式会社 情報処理装置およびシステムバス制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495817A (zh) * 2011-12-08 2012-06-13 成都林海电子有限责任公司 一种基于pci总线的高速数据传输方法
CN103019990A (zh) * 2012-10-24 2013-04-03 绵阳市维博电子有限责任公司 一种采集端启动pci-e总线dma上传数据的方法

Also Published As

Publication number Publication date
CN103646001A (zh) 2014-03-19

Similar Documents

Publication Publication Date Title
EP2763045B1 (en) Method and apparatus for allocating memory space with write-combine attribute
CN105183680B (zh) 实现PCIe接口转CF卡接口的FPGA芯片及方法
CN106257434B (zh) 一种基于增强型外设互连协议总线的数据传输方法及装置
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
CN105404596B (zh) 一种数据传输方法、装置及系统
CN102902650A (zh) 数据共享及传输的系统及方法
KR20150128668A (ko) 기입 데이터를 메모리로 전송하는 동시에 메모리로부터 데이터를 판독하는 시스템 및 방법
CN209168746U (zh) 一种基于fpga的通用闪存测试系统
CN104731746A (zh) 设备控制器装置
CN102063939B (zh) 一种电可擦除可编程只读存储器的实现方法和装置
CN102073611B (zh) 一种i2c总线控制系统及方法
CN101719115B (zh) 主控处理器和协处理器系统的通信方法、装置、系统
CN106055504B (zh) 控制数据传输的方法、装置及计算机设备
CN102750245B (zh) 报文接收方法、报文接收模块、装置及系统
CN115617718B (zh) 一种基于AXI总线的读写保序方法及SoC系统
CN108304334A (zh) 应用处理器和包括中断控制器的集成电路
CN109634901A (zh) 一种基于uart的数据传输系统及其控制方法
CN106649158B (zh) 通过i2c接口读写内部寄存器堆的装置及方法
CN111124985A (zh) 一种移动终端只读控制方法及装置
CN103646001B (zh) Dma数据传输控制方法及系统
CN110058809A (zh) 存储装置及其调试系统
CN104022963A (zh) 多种通信方式并存的通信方法及装置
US20090138673A1 (en) Internal memory mapped external memory interface
CN105653490B (zh) 一种基于地址控制的数据处理方法及装置
CN104572515A (zh) 跟踪模块、方法、系统和片上系统芯片

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020

Patentee after: Beijing Jingwei Hengrun Technology Co.,Ltd.

Address before: 8 / F, block B, No. 11, Anxiang Beili, Chaoyang District, Beijing 100101

Patentee before: Beijing Jingwei HiRain Technologies Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230614

Address after: 100192 5th floor, Zhizhen building, 7 Zhichun Road, Haidian District, Beijing

Patentee after: BEIJING RUNKE GENERAL TECHNOLOGY Co.,Ltd.

Address before: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020

Patentee before: Beijing Jingwei Hengrun Technology Co.,Ltd.