一种利用dma控制器实现二维数据搬运的方法

文档序号:6557661阅读:332来源:国知局
专利名称:一种利用dma控制器实现二维数据搬运的方法
技术领域
本发明涉及一种计算机技术中DMA控制器方法,尤其涉及的是一种利用DMA控制器实现二维数据搬运的方法。
背景技术
现有技术的DMA控制器(Direct Memory Access,以下简称DMA)的基本架构如图1所示,它主要由四个模块组成AHB从器件接口模块该模块的主要功能是用来配置DMA控制器,外部程序可以对DMA控制器的寄存器组模块进行设置。
AHB主器件接口模块该模块可以完成向AHB总线发送地址、数据和控制信号,实现从源地址读取数据放入目标地址中。
寄存器组模块该模块包括源地址寄存器、目标地址寄存器、控制寄存器以及其它一些相关的寄存器。源地址寄存器的初值为要访问的源存储器空间的起始地址,在搬运过程中,DMA控制器把下一个要访问的源地址保存在该寄存器中;目标地址寄存器的初值为要访问的目标存储器空间的起始地址,在搬运过程中,DMA控制器把下一个要访问的目标地址保存在该寄存器中;控制寄存器用来设定DMA通道使能或者不使能,是否自动加载起始地址等等。
通道优先级模块该模块用于实现DMA控制器内多个逻辑通道的优先级判断。在接到DMA申请时,该模块要判断通道的优先级,以确定在当前情况下由哪个通道发起传送。
AMBA协议的AHB总线上,DMA控制器作为与ARM处理器并列的主器件出现,在大多数情况下,DMA控制器可以替代ARM处理器进行数据搬运工作(包括存储器到存储器、存储器到外围设备、外围设备到存储器以及外围设备之间的数据搬运),从而保证ARM处理器在执行指令期间不介入到具体的数据搬运工作中,从而提高ARM处理器的工作效率。
目前AHB总线上广泛应用的DMA控制器一般都是进行一维数据的搬运,即DMA控制器的源地址空间或者目标地址空间是一段连续的存储器空间,这种DMA控制器的寄存器组模块中只有源地址寄存器、目标地址寄存器以及控制寄存器这些主要的寄存器,在数据搬运的过程中,只需要对源地址寄存器或者目标地址寄存器中的地址值递增,就可以获得下一个要访问的存储器地址。
然而在实际的操作过程中,往往会出现数据存放的存储器空间是一个不连续的地址空间,比如在通讯领域普遍应用的时分复用的情况,此时需要将多个逻辑通道(多个时隙,每个逻辑通道对应着一个连续的存储器地址空间)上的数据组合成一个完整的无线数据序列,或者将一个无线数据序列中的数据分解到多个逻辑通道上,如图2所示。很显然,现有技术只支持一维数据搬运的DMA控制器无法完成这个工作。
因此,现有技术还有待于继续改进和发展。

发明内容
本发明所要解决的技术问题在于提供一种利用DMA控制器进行二维数据搬运的方法,克服一维数据搬运DMA控制器只能搬运连续地址空间数据的缺点。
本发明的技术方案包括一种利用DMA控制器实现二维数据搬运的方法,其增加设置源基地址寄存器、目标基地址寄存器、界限寄存器、及步幅寄存器,其包括以下步骤A、给各寄存器赋值,将源地址、目标地址、存储器空间的数目和深度以及跳转的步幅依次设置到相应的寄存器中;B、所述DMA控制器从源地址寄存器中取出源地址,获取该地址所保存的数据,并判断该存储器空间是否为最后一块存储器空间,如果不是,则根据步幅寄存器中的值,计算出下一个要访问的源地址,存放到源地址寄存器中;如果是,则要跳转到第一块存储器空间的下一个地址,将该地址存放到源地址寄存器中;循环步骤B进行数据搬运。
所述的方法,其中,还包括步骤C、搬运完最后一块存储器空间的最后一个数据,判断控制寄存器中的自动加载位,如果设置为自动加载,则自动跳转为源基地址寄存器中保存的地址值,并将该值保存到源地址寄存器中;如果没有设置为自动加载,则搬运过程结束。
本发明所提供的一种利用DMA控制器实现二维数据搬运的方法,由于采用二维跳转的方法,实现了DMA控制器支持二维数据搬运过程。


图1是现有技术的DMA控制器的基本架构示意图;图2是现有技术的时分复用通信中多个逻辑通道数据组合示意图;图3是本发明方法的二维跳转工作方法示意图;图4是本发明方法的二维跳转工作方法数据搬运流程图。
具体实施例方式
以下结合附图,将对本发明的各较佳实施例进行更为详细的说明。
本发明的利用DMA控制器实现二维数据搬运的方法,其采用二维跳转方式,可以应用在时分复用的情况,其跳转方式如图3所示,除了DMA控制器原有的源地址寄存器、目标地址寄存器以及控制寄存器之外,另外再增加源基地址寄存器、目标基地址寄存器、界限寄存器、步幅寄存器。各寄存器的描述如下源基地址寄存器该寄存器初值为要访问的源存储器空间的起始地址,在搬运过程中,DMA控制器不会改变该寄存器中的值,当数据搬运完成之后,如果在控制寄存器中设置了自动加载位,则DMA控制器将该寄存器中的值拷贝到源地址寄存器。
目标基地址寄存器该寄存器的初值为要访问的目标存储器空间的起始地址,在搬运过程中,DMA控制器不会改变该寄存器中的值,当数据搬运完成之后,如果在控制寄存器中设置了自动加载位,则DMA控制器将该寄存器中的值拷贝到目标地址寄存器。
界限寄存器该寄存器用来设定共有多少块源存储器空间(在图3中以列来表示)以及这些源存储器空间的深度(在图3中以行来表示)。
步幅寄存器该寄存器用来设定在两块存储器空间之间跳转的步幅,在通常情况下,该步幅是与存储器空间的深度相等的,即两块存储器空间的地址是连续的。当两块存储器空间的地址不连续时,步幅寄存器中的值与存储器空间的深度则是不相等的。
本发明方法包括以下步骤A、给寄存器赋值,将源地址、目标地址、存储器空间的数目和深度以及跳转的步幅依次设置到相应的寄存器中。
B、DMA控制器开始搬运数据时,首先从源地址寄存器中取出源地址,获取该地址所保存的数据,然后判断该存储器空间是否为最后一块存储器空间,如果不是,则根据步幅寄存器中的值,计算出下一个要访问的源地址,存放到源地址寄存器中;如果是,则要跳转到第一块存储器空间的下一个地址,将该地址存放到源地址寄存器中。
如此往复搬运,直到搬运完最后一块存储器空间的最后一个数据,此时判断控制寄存器中的自动加载位,如果设置为自动加载,则自动跳转为源基地址寄存器中保存的地址值,并将该值保存到源地址寄存器中;如果没有设置为自动加载,则搬运过程结束。具体的数据搬运流程如图4所示。
通过上述二维跳转的方法,就可以达到使用DMA控制器完成二维数据搬运的目的。
以下举具体实施例进行说明本发明方法的步骤在通讯领域的速率匹配模式下,需要将三个时隙中的数据组合成一个完整的无线数据序列,三个时隙意味着有三块源存储器空间,假设源存储器空间的起始地址为0x00000000,目标地址为0x10000000,每块存储器空间的深度为10,数据宽度为32位,块与块之间的地址间隔为0x04。
首先,给寄存器赋值,将源地址0x00000000写入源地址存储器和源基地址寄存器中、目标地址0x10000000写入目标地址寄存器和目标基地址寄存器中、存储器空间数目为3,深度为10写入界限寄存器,跳转的步幅0x28写入步幅寄存器中。
DMA控制器首先从源地址寄存器中取出源地址0x00000000(对应图3中列1行1),获取该地址所保存的数据,然后根据步幅寄存器中的值0x28,计算出下一个要访问的源地址为0x00000028,存放到源地址寄存器中。
DMA控制器从源地址寄存器中取出源地址0x00000028(对应图3中列2行1),获取该地址所保存的数据,然后根据步幅寄存器中的值0x28,计算出下一个要访问的源地址为0x00000050,存放到源地址寄存器中。
DMA控制器从源地址寄存器中取出源地址0x00000050(对应图3中列n行1),获取该地址所保存的数据,因为该地址是第三块源存储器空间,为最后一块源存储器空间,因此下一个源地址需要跳转到第一块源存储器空间,则源地址为0x00000004(对应图3中列1行2),将该地址存放到源地址寄存器中。
如此往复搬运,直到搬运完最后一块存储器空间的最后一个数据(对应图3中列n行n),此时判断控制寄存器中的自动加载位,如果设置为自动加载,则自动跳转为源基地址寄存器中保存的地址值,并将该值保存到源地址寄存器中;如果没有设置为自动加载,则搬运过程结束。
综上,本发明方法实现了不连续存储数据块的二维数据的搬运过程,但应当理解的是,上述针对具体实施例的说明较为具体,并不能因此理解为对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求
1.一种利用DMA控制器实现二维数据搬运的方法,其增加设置源基地址寄存器、目标基地址寄存器、界限寄存器、及步幅寄存器,其包括以下步骤A、给各寄存器赋值,将源地址、目标地址、存储器空间的数目和深度以及跳转的步幅依次设置到相应的寄存器中;B、所述DMA控制器从源地址寄存器中取出源地址,获取该地址所保存的数据,并判断该存储器空间是否为最后一块存储器空间,如果不是,则根据步幅寄存器中的值,计算出下一个要访问的源地址,存放到源地址寄存器中;如果是,则要跳转到第一块存储器空间的下一个地址,将该地址存放到源地址寄存器中;循环步骤B进行数据搬运。
2.根据权利要求1所述的方法,其特征在于,还包括步骤C、搬运完最后一块存储器空间的最后一个数据,判断控制寄存器中的自动加载位,如果设置为自动加载,则自动跳转为源基地址寄存器中保存的地址值,并将该值保存到源地址寄存器中;如果没有设置为自动加载,则搬运过程结束。
全文摘要
本发明公开了一种利用DMA控制器实现二维数据搬运的方法,其增加设置源基地址寄存器、目标基地址寄存器、界限寄存器、及步幅寄存器,其包括以下步骤所述DMA控制器从源地址寄存器中取出源地址,获取该地址所保存的数据,并判断该存储器空间是否为最后一块存储器空间,如果不是,则根据步幅寄存器中的值,计算出下一个要访问的源地址,存放到源地址寄存器中;如果是,则要跳转到第一块存储器空间的下一个地址,将该地址存放到源地址寄存器中。本发明方法由于采用二维跳转的方法,实现了DMA控制器支持二维数据搬运过程。
文档编号G06F13/20GK101059784SQ20061006666
公开日2007年10月24日 申请日期2006年4月17日 优先权日2006年4月17日
发明者汪坚, 林晓涛, 陈家锦 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1