一种dma数据传输方法及系统的制作方法

文档序号:6443066阅读:156来源:国知局
专利名称:一种dma数据传输方法及系统的制作方法
技术领域
本发明涉及数据处理领域,尤其涉及一种DMA数据传输方法及系统。
背景技术
在芯片(特别是基带芯片)的工作过程中,通常需要将工作流程及各种状态信息,重要数据等通过数据传输接口送出,以便于确认工作流程运行是否正确及在异常情况发生后,进行问题的定位。一般来说,传输数据的输出通常包括如下两步:第一步:将传输数据存储在存储器(memory)中开辟的一块缓冲区(BUFFER)中缓存;第二步:将BUFFER中的信息通过数据传输接口输出。BUFFER通常采用回环BUFFER的方式实现,即这个BUFFER包括一个起始地址和一个结束地址,向此BUFFER写入数据时,当数据写到BUFFER的结束地址时,会将接下来的数据写到起始地址开始的memory中,即实现地址回环,从BUFFER中读取数据也需要做相似的回环处理。将BUFFER中的数据通过数据传输接口输出通常采用直接内存访问(DMA,DirectMemory Access)模块完成,该模块具体完成启动DMA,DMA传输,DMA完成传输的中断处理等过程。启动DMA的操作包括配置传输的读数据地址、写数据地址、数据类型、传输数据总长度以及每次响应请求传输的突发(Burst)数据长度等信息,之后启动DMA对应的通道开始传输。在DMA传输过程中,DMA模块每次接收到子模块的请求信号时,就向子模块发送响应信号,并进行burst长度数据的传输,照此进行工作,直到DMA完成传输总长度的数据传输。DMA完成总数据长度的传输后,产生中断给中央处理器(CPU,CenterProcessingUnit),由CPU执行DMA中断处理函数中的操作,如设置状态、标志,以及启动下一次传输等操作。将BUFFER中的传输数据通过数据传输接口进行传输时,通常可以包括如下情况:情况1:当CPU向BUFFER中写入传输数据之后,判断DMA的运行状态,如果DMA没有运行,则根据数据量的大小启动DMA或者由CPU自己完成传输数据从BUFFER搬运到数据传输控制模块的操作,若DMA此时正在进行搬运操作,则不启动DMA ;情况2:当DMA完成传输之后,在DMA的完成中断处理函数中,CPU对BUFFER中的传输数据的数据量进行判断,根据判断结果决定是否再次启动DMA或者由CPU自己搬运传输数据。现有技术的这种数据传输方式中,CPU需要完成多项任务,除了向BUFFER写入数据之外,还要完成配置、启动DMA,进行DMA中断处理以及对BUFFER的读、写指针进行维护等工作,大量的任务严重的增加了 CPU的负担,降低了数据传输的速度,从而影响了系统整体 性能。

发明内容
本发明实施例提供了一种DMA数据传输方法及系统,能够降低CPU负担,提高数据传输的速度,从而提高系统整体性能。本发明实施例提供的DMA数据传输方法包括:CPU将需要传输的数据写入传输数据缓冲区BUFFER进行缓存;当传输数据写入完成后,对数据传输控制模块中的写指针进行更新;数据传输控制模块对所述BUFFER中的传输数据通过DMA方式进行传输。可选地,所述方法还包括:启动周期性定时器,所述周期性定时器的定时间隔为预置数值;所述数据传输控制模块对所述BUFFER中的传输数据通过DMA方式进行传输包括:当所述周期性定时器超时之后,所述数据传输控制模块接收所述周期性定时器产生的中断;所述数据传输控制模块根据读指针和写指针之间的差值,判断BUFFER中的有效数据长度;所述数据传输控制模块根据判断结果进行相应的处理。可选地,所述数据传输控制模块根据判断结果进行相应的处理包括:若所述有效数据长度为0,则所述数据传输控制模块不作处理,所述周期性定时器保持之前的状态;或,若所述有效数据长度达到启动直接内存访问DMA传输的门限值N,则停止所述周期性定时器,所述数据传输控制模块配置并启动DMA模块进行所述传输数据的传输,所述N为预置数值;或,若所述有效数据长度未达到启动DMA传输的门限值N,但在M次收到所述周期性定时器产生的中断时所查询到的有效数据长度相同,则停止所述周期性定时器,所述数据传输控制模块配置并启动DMA模块进行所述传输数据的传输,所述M、N为预置数值。可选地,所述CPU将需要传输的数据写入传输数据缓冲区BUFFER进行缓存之后包括:CPU判断DMA模块是否运行,若没有运行,则通知数据传输控制模块启动DMA模块进行所述传输数据的传输。可选地,所述启动DMA模块进行所述传输数据的传输包括:DMA模块与数据接收模块进行请求和响应的握手流程;DMA模块和数据传输控制模块一同完成传输数据的传输,完成传输后产生DMA完成中断;数据传输控制模块接收到DMA完成中断后,更新数据传输控制模块的读指针;数据传输控制模块查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理。可选地,所述数据传输控制模块根据查询结果进行相应处理包括:若所述剩余传输数据的数据量达到所述门限值N,则数据传输控制模块配置并启动DMA模块进行所述传输数据的传输。可选地,所述数据传输控制模块根据查询结果进行相应处理包括:当采用周期性定时器模式时,若所述剩余传输数据的数据量未达到所述门限值N,则数据传输控制模块退出DMA完成中断处理,并启动所述周期性定时器。可选地,所述数据传输控制模块根据查询结果进行相应处理包括:当不采用周期性定时器模式时,若所述剩余传输数据的数据量未达到所述门限值N,则通知CPU进行所述剩余传输数据的传输,或设置所述门限值N为剩余传输数据长度,配置并启动DMA模块进行所述传输数据的传输。可选地,所述数据传输控制模块中配置的参数包括:BUFFER的起始地址、BUFFER的结束地址、写指针、读指针、所述N以及所述M ;所述写指针为BUFFER的写指针,所述读指针为BUFFER的读指针。本发明实施例提供的DMA数据传输系统,包括:CPU,用于将需要输出的传输数据写入传输数据缓冲区BUFFER进行缓存;数据传输控制模块,用于当传输数据写入完成后,对数据传输控制模块的写指针进行更新,并对所述BUFFER中的传输数据通过DMA方式进行传输。可选地,所述DMA数据传输系统还包括:周期性定时器,用于按照预置的定时间隔进行计时。可选地,所述DMA数据传输系统还包括:DMA模块,用于在所述数据传输控制模块的控制下,完成传输数据的传输,并在传输完成后广生DMA完成中断。从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例中,传输数据的传输过程由CPU、数据传输控制模块、DMA模块共同完成,由数据传输控制模块处理DMA传输数据过程中产生的中断,配置DMA传输参数,而不再完全依赖于CPU的操作,所以能够有效的降低CPU负担,提高数据传输的速度,从而提高系统整体性能。


图1为本发明DMA数据传输方法一个实施例不意图;图2为本发明DMA数据传输方法一个数据流程图;图3为本发明DMA数据传输方法另一数据流程图;图4为本发明DMA数据传输系统一个实施例不意图。
具体实施例方式本发明实施例提供了一种DMA数据传输方法及系统,能够降低CPU负担,提高数据传输的速度,从而提高系统整体性能。请参阅图1,本发明DMA数据传输方法一个实施例包括:
101、CPU将需要传输的传输数据写入传输数据BUFFER进行缓存;本实施例中,CPU负责响应传输数据的写请求,将这些传输数据写到BUFFER中,并更新数据传输控制模块中的写指针。CPU通常会先读取读指针,并判断BUFFER中剩余的空间是否满足本次传输数据的输出,不满足则触发相应的错误处理机制。对于写指针的维护包括回环处理,即当其值到达BUFFER的尾部时,需要绕回BUFFER的首部,继续写入传输数据。102、当传输数据写入完成后,对数据传输控制模块中的写指针进行更新;本实施例中,数据传输控制模块中可以配置有如下参数=BUFFER的起始地址、BUFFER的结束地址、写指针、读指针、N以及M。其中,该写指针为BUFFER的写指针,读指针为BUFFER的读指针,N的含义为启动DMA传输的有效数据长度门限值,M的含义为有效数据长度未达到N,但在M次收到所述周期性定时器产生的中断时所查询到的有效数据长度相同,则仍启动DMA传输。当传输数据写入完成后,可以对数据传输控制模块中的写指针,即BUFFER的写指针进行更新。103、数据传输控制模块对BUFFER中的传输数据通过DMA方式进行传输。当BUFFER的写指针完成更新之后,数据传输控制模块可以配置DMA模块,BUFFER中的传输数据通过DMA方式进行传输。本发明实施例中,传输数据的传输过程由CPU、数据传输控制模块、DMA模块共同完成,由数据传输控制模块处理DMA传输数据过程中产生的中断、配置DMA传输参数,而不再完全依赖于CPU的操作,所以能够有效的降低CPU负担,提高数据传输的速度,从而提高系统整体性能。本实施例中的数据传输过程可以分为两种方式,下面分别进行描述:一、使用周期性定时器:具体数据传输过程包括:(I)、数据传输控制模块接收周期性定时器产生的中断;本方案中配置有周期性定时器,该周期性定时器的定时间隔为预置数值。当周期性定时器超时之后,数据传输控制模块可以接收到周期性定时器产生的中断。(2)、数据传输控制模块判断BUFFER中的有效数据长度;当数据传输控制模块接收到周期性定时器产生的中断之后,可以根据BUFFER的读指针和写指针之间的差值,判断BUFFER中的有效数据长度。(3)、数据传输控制模块根据判断结果进行相应的处理;数据传输控制模块获知BUFFER中的有效数据长度之后,可以根据判断结果进行相应的处理,具体的处理方式可以分为如下三种情况:A、有效数据长度为O:若有效数据长度为0,则数据传输控制模块不作处理,周期性定时器保持之前的状态。B、有效数据长度达到启动DMA传输的门限值N:若有效数据长度达到启动DMA传输的门限值N,则停止周期性定时器,且数据传输控制模块配置并启动DMA模块进行传输数据的传输,该N为预置数值。C、有效数据长度未达到启动DMA传输的门限值N,但在M次收到周期性定时器产生的中断时所查询到的有效数据长度相同:若有效数据长度未达到启动DMA传输的门限值N,但在M次收到周期性定时器产生的中断时所查询到的有效数据长度相同,则说明BUFFER中的有效数据长度在一段时间内未发生变化,则停止周期性定时器,数据传输控制模块配置DMA传输数据总长度为有效数据长度并启动DMA模块进行传输数据的传输,M、N为预置数值。(4)、执行DMA传输流程;在数据传输过程中,DMA模块可以与数据接收模块进行请求和响应的握手流程(DMA每搬移一块数据,都要先和数据接收模块进行一次握手流程),然后DMA模块和数据传输控制模块一同完成传输数据的传输。(5)、产生DMA完成中断;当DMA模块和数据传输控制模块一同完成传输数据的传输之后,DMA模块可以产生DMA完成中断。(6)、数据传输控制模块更新BUFFER的读指针;数据传输控制模块接收到DMA完成中断后,可以更新BUFFER的读指针。(7)、数据传输控制模块查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理。当数据传输控制模块更新BUFFER的读指针之后,可以查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理,具体的处理可以分为以下两种情况:A、剩余传输数据的数据量达到门限值N:若剩余传输数据的数据量达到门限值N,则数据传输控制模块配置并启动DMA模块进行传输数据的传输。B、剩余传输数据的数据量未达到门限值N:若剩余传输数据的数据量未达到所述门限值N,则数据传输控制模块退出DMA完成中断处理,并启动周期性定时器。上面介绍了使用周期性定时器的情况,下面介绍不使用周期性定时器的情况:二、不使用周期性定时器:(I) CPU在将传输数据写入BUFFER之后,判断DMA模块是否运行,若没有运行,则通知数据传输控制模块启动DMA模块进行传输数据的传输;当CPU向BUFFER写完传输数据后,CPU判断DMA模块是否运行,若已经运行,则不作处理,若尚未运行,则通知数据传输控制模块启动DMA模块进行传输数据的传输。(2)、执行DMA传输流程;在数据传输过程中,DMA模块可以与数据接收模块进行请求和响应的握手流程(DMA每搬移一块数据,都要先和数据接收模块进行一次握手流程),然后DMA模块和数据传输控制模块一同完成传输数据的传输。(3)、产生DMA完成中断;当DMA模块和数据传输控制模块一同完成传输数据的传输之后,DMA模块可以产生DMA完成中断。
(4)、数据传输控制模块更新BUFFER的读指针;数据传输控制模块接收到DMA完成中断后,可以更新BUFFER的读指针。(5)、数据传输控制模块查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理。当数据传输控制模块更新BUFFER的读指针之后,可以查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理,具体的处理可以分为以下两种情况:A、剩余传输数据的数据量达到门限值N:若剩余传输数据的数据量达到门限值N,则数据传输控制模块配置并启动DMA模块进行传输数据的传输。B、剩余传输数据的数据量未达到门限值N:若剩余传输数据的数据量未达到所述门限值N,则通知CPU进行剩余传输数据的传输,或设置门限值N为剩余传输数据长度,配置并启动DMA模块进行传输数据的传输。本实施例中,传输数据的传输过程由CPU、数据传输控制模块、DMA模块共同完成,由数据传输控制模块处理DMA传输数据过程中产生的中断,配置DMA传输参数,而不再完全依赖于CPU的操作,所以能够有效的降低CPU负担,提高数据传输的速度,从而提高系统整体性能。为便于理解,下面以两个具体的数据流程示意图对本发明DMA数据传输方法进行描述:在下面的两个例子中,整个系统为跟踪信息的传输系统,本实施例中以跟踪数据作为传输数据的例子进行说明,同时,以跟踪控制模块作为数据传输控制模块的例子进行说明。—、使用定时器模式:请参阅图2,本系统开始运行后,周期性定时器也被启动,定时时间到达时,周期性定时器产生送给跟踪控制模块的中断,跟踪控制模块可以根据BUFFER的读指针和写指针之间的差值,判断BUFFER中的有效数据长度,并根据判断结果进行相应的处理,处理的三种情况与前述实施例中描述的一致,此处不再赘述。在数据传输过程中,DMA模块可以与跟踪模块进行请求和响应的握手流程(DMA每搬移一块数据,都要先和数据接收模块进行一次握手流程),然后DMA模块和跟踪控制模块一同完成跟踪数据的传输,当DMA模块和跟踪控制模块一同完成跟踪数据的传输之后,DMA模块可以产生DMA完成中断。跟踪控制模块接收到DMA完成中断后,可以更新BUFFER的读指针,跟踪控制模块查询BUFFER中的剩余跟踪数据的数据量,并根据查询结果进行相应处理,处理的两种情况与前述实施例中描述的一致,此处不再赘述。二、不使用定时器模式:请参阅图3,跟踪数据写入完成后,CPU判断DMA模块是否运行,若没有运行,则启动DMA模块。在数据传输过程中,DMA模块可以与跟踪模块进行请求和响应的握手流程(DMA每搬移一块数据,都要先和数据接收模块进行一次握手流程),然后DMA模块和跟踪控制模块一同完成跟踪数据的传输,当DMA模块和跟踪控制模块一同完成跟踪数据的传输之后,DMA模块可以产生DMA完成中断。跟踪控制模块接收到DMA完成中断后,可以更新BUFFER的读指针,跟踪控制模块查询BUFFER中的剩余跟踪数据的数据量,并根据查询结果进行相应处理,处理的两种情况与前述实施例中描述的一致,此处不再赘述。上面描述了本发明DMA数据传输方法的实施例,下面对本发明的DMA数据传输系统进行描述,请参阅图4,本发明DMA数据传输系统包括:CPU401,用于将需要传输的传输数据写入传输数据缓冲区BUFFER进行缓存;数据传输控制模块402,用于当传输数据写入完成后,对BUFFER的写指针进行更新,并对所述BUFFER中的传输数据通过DMA方式进行传输。本实施例中的DMA数据传输系统还可以进一步包括:周期性定时器403,用于按照预置的定时间隔进行计时;由所述CPU在系统启动时配置并启动所述周期性定时器;所述数据传输控制模块在系统运行过程中控制所述周期性定时器的停止和启动。本实施例中的DMA数据传输系统还可以进一步包括:DMA模块404,用于在所述数据传输控制模块的控制下,完成传输数据的传输,并在传输完成后广生DMA完成中断。需要说明的是,本实施例中的数据传输过程可以采用定时器模式,也可以不采用定时器模式,若不采用定时器模块,则本实施例中的DMA数据传输系统也可以不包括周期性定时器403。本实施例DMA数据传输系统中的各模块之间的交互过程与前述方法实施例中描述的内容类似,此处不再赘述。本实施例中,传输数据的传输过程由CPU401、数据传输控制模块402、DMA模块404共同完成,由数据传输控制模块402处理DMA传输数据过程中产生的中断,配置DMA传输参数,而不再完全依赖于CPU的操作,所以能够有效的降低CPU负担,提高数据传输的速度,从而提闻系统整体性能。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(R0M,Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种DMA数据传输方法,其特征在于,包括: CPU将需要传输的数据写入传输数据缓冲区BUFFER进行缓存; 当传输数据写入完成后,对数据传输控制模块中的写指针进行更新; 数据传输控制模块对所述BUFFER中的传输数据通过DMA方式进行传输。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 启动周期性定时器,所述周期性定时器的定时间隔为预置数值; 所述数据传输控制模块对所述BUFFER中的传输数据通过DMA方式进行传输包括: 当所述周期性定时器超时之后,所述数据传输控制模块接收所述周期性定时器产生的中断; 所述数据传输控制模块根据读指针和写指针之间的差值,判断BUFFER中的有效数据长度; 所述数据传输控制模块根据判断结果进行相应的处理。
3.根据权利要求2所述的方法,其特征在于,所述数据传输控制模块根据判断结果进行相应的处理包括: 若所述有效数据长度为O,则所述数据传输控制模块不作处理,所述周期性定时器保持之前的状态; 或, 若所述有效数据长度达到启动直接内存访问DMA传输的门限值N,则停止所述周期性定时器,所述数据传输控制模块配置并启动DMA模块进行所述传输数据的传输,所述N为预置数值; 或, 若所述有效数据长度未达到启动DMA传输的门限值N,但在M次收到所述周期性定时器产生的中断时所查询到的有效数据长度相同,则停止所述周期性定时器,所述数据传输控制模块配置并启动DMA模块进行所述传输数据的传输,所述M、N为预置数值。
4.根据权利要求1所述的方法,其特征在于,所述CPU将需要传输的数据写入传输数据缓冲区BUFFER进行缓存之后包括: CPU判断DMA模块是否运行,若没有运行,则通知数据传输控制模块启动DMA模块进行所述传输数据的传输。
5.根据权利要求3或4所述的方法,其特征在于,所述启动DMA模块进行所述传输数据的传输包括: DMA模块与数据接收模块进行请求和响应的握手流程; DMA模块和数据传输控制模块一同完成传输数据的传输,完成传输后产生DMA完成中断; 数据传输控制模块接收到DMA完成中断后,更新数据传输控制模块的读指针; 数据传输控制模块查询BUFFER中的剩余传输数据的数据量,并根据查询结果进行相应处理。
6.根据权利要求5所述的方法,其特征在于,所述数据传输控制模块根据查询结果进行相应处理包括: 若所述剩余传输数据的数据量达到所述门限值N,则数据传输控制模块配置并启动DMA模块进行所述传输数据的传输。
7.根据权利要求5所述的方法,其特征在于,所述数据传输控制模块根据查询结果进行相应处理包括: 当采用周期性定时器模式时,若所述剩余传输数据的数据量未达到所述门限值N,则数据传输控制模块退出DMA完成中断处理,并启动所述周期性定时器。
8.根据权利要求5所述的方法,其特征在于,所述数据传输控制模块根据查询结果进行相应处理包括: 当不采用周期性定时器模式时,若所述剩余传输数据的数据量未达到所述门限值N,则通知CPU进行所述剩余传输数据的传输,或设置DMA本次传输数据总长度为剩余传输数据长度,配置并启动DMA模块进行所述传输数据的传输。
9.根据权利要求3所述的方法,其特征在于,所述数据传输控制模块中配置的参数包括: BUFFER的起始地址、BUFFER的结束地址、写指针、读指针、所述N以及所述M ; 所述写指针为BUFFER的写指针,所述读指针为BUFFER的读指针。
10.一种DMA数据传输系统,其特征在于,包括: CPU,用于将需要输出的传输数据写入传输数据缓冲区BUFFER进行缓存; 数据传输控制模块,用于当传输数据写入完成后,对数据传输控制模块的写指针进行更新,并对所述BUFFER中的传输数据通过DMA方式进行传输。
11.根据权利要求10所述的DMA数据传输系统,其特征在于,所述DMA数据传输系统还包括: 周期性定时器,用于按照预置的定时间隔进行计时。
12.根据权利要求10或11所述的DMA数据传输系统,其特征在于,所述DMA数据传输系统还包括: DMA模块,用于在所述数据传输控制模块的控制下,完成传输数据的传输,并在传输完成后广生DMA完成中断。
全文摘要
本发明实施例公开了一种DMA数据传输方法及系统,能够降低CPU负担,提高数据传输的速度,从而提高系统整体性能。本发明实施例方法包括中央处理器CPU将需要传输的传输数据写入传输数据缓冲区BUFFER进行缓存;当传输数据写入完成后,对数据传输控制模块中BUFFER的写指针进行更新;数据传输控制模块对所述BUFFER中的传输数据通过DMA方式进行传输。本发明实施例还提供一种DMA数据传输系统。本发明实施例能够有效降低CPU负担,提高数据传输的速度,从而提高系统整体性能。
文档编号G06F13/32GK103176932SQ20111043932
公开日2013年6月26日 申请日期2011年12月23日 优先权日2011年12月23日
发明者唐新东 申请人:重庆重邮信科通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1