掌桥专利:专业的专利平台
掌桥专利
首页

直接内存访问的传输配置方法及装置

文献发布时间:2023-06-19 10:16:30


直接内存访问的传输配置方法及装置

技术领域

本申请涉及计算机技术领域,尤其涉及一种直接内存访问的传输配置方法及装置。

背景技术

直接内存访问(Direct Memory Access,DMA)是一种快速数据交换模式,其主要功能是将一段数据从一个地址搬移到另外一个地址。DMA可以不在中央处理器(CentralProcessing Unit,CPU)干预的情况下即可完成数据的搬移。在DMA模式下,CPU只须向DMA传输控制装置下达指令,让DMA传输控制装置处理数据的传输,数据传输完毕再把传输结束信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。

由于DMA的传输不受CPU的干预,且其具有传输速度快的特性,因此在一些场景下可以使用DMA进行数据的搬移。例如,播放音频文件的场景下,终端需要将编解码后的音频数据搬移到最终播放音频数据的硬件上。但是由于以前老的功能机项目,在长时间播放音频文件的场景下,由于硬件设计等的不支持,编解码的子系统长时间处于工作的状态,无法切换到睡眠状态,从而增加了系统的功耗,导致系统耗电较快,影响用户体验。

发明内容

本申请实施例提供了一种直接内存访问的传输配置方法及装置,能够降低系统整体功耗。

第一方面,本申请实施例提供一种直接内存访问的传输配置方法,该方法包括:

接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;

根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。

第二方面,本申请实施例提供一种直接内存访问的传输配置装置,该装置包括:

收发单元,用于接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;

分配单元,用于根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。

第三方面,本申请实施例提供一种功能机,所述功能机包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行上述第一方面所述的方法中所描述的部分或全部步骤的指令。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行上述第一方面所述的方法中所描述的部分或全部步骤。

第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

第六方面,提供了芯片系统,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述收发器和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有计算机程序;所述计算机程序被所述处理器执行时实现第一方面所述的方法。

通过实施本申请实施例,本申请提供的技术方案通过接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。本申请通过将第一子系统中的数据搬移到第二子系统,可以使得第一子系统在将数据从第二子系统搬移到目标模块的过程中休眠,从而降低第一子系统的功耗,进而降低系统整体功耗。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供一种功能机系统的结构示意图;

图2是本申请实施例提供一种直接内存访问的传输配置方法的流程示意图;

图3a本申请实施例提供的一种直接内存访问的传输配置装置的结构示意图;

图3b本申请实施例提供的另一种直接内存访问的传输配置装置的结构示意图;

图4是本申请实施例提供一种功能机的结构示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

应理解,本申请实施例中涉及的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。

以及,除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一信息和第二信息,只是为了区分不同的信息,而并不是表示这两种信息的内容、优先级、发送顺序或者重要程度等的不同。

为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。

功能机:功能机主要为具有拨打/接听电话功能和收发短信功能的设备,其结构简单,即功能机只具有简单的工具,主要以设置有功能按键设备为主体。功能机非智能设备,与智能设备相比,功能机没有触摸功能以及其他强大的应用功能。

DMA控制器的主要功能是将一段数据从一个地址搬移到另外一个地址,当CPU配置好DMA控制器的参数后,数据传输的过程将不再需要CPU的干预,可降低CPU的负载,并且使用DMA控制器可以很高效快速实现数据的传输。DMA控制器内部会有多个通道(channels),这些channel的作用就是完成数据的传输,每个channel均可以单独配置,并实现数据的传输功能。

当用户在用功能机播放音频文件时,功能机需要对需要播放的音频文件不断进行编解码,并将编解码后的音频数据传输到音频的播放硬件上,进行播放。当用户长时间播放音频文件时,如果系统一直处于工作的状态,无法切换到睡眠状态,这样会导致系统的功耗较高,用户的直观体验就是使用的设备耗电会比较快。

为了解决上述问题,本申请提出了一种直接内存访问的传输配置方法,DMA分配给目标模块两级DMA通道,第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。通过将第一子系统中的数据搬移到第二子系统,可以使得第一子系统在将数据从第二子系统搬移到目标模块的过程中休眠,从而降低第一子系统的功耗,进而降低系统整体功耗。

请参阅图1,图1是本申请实施例提供的一种功能机系统的架构示意图。如图1所示,该系统包括第一子系统和第二子系统,第一子系统用于数据的编解码,第二子系统上包括用于数据传输的DMA和目标模块。DMA可以通过分配DMA通道1从第一子系统上将编解码后的数据搬移到第二子系统的内存中,也可以通过分配的DMA通道2从第二子系统的内存中将编解码后的数据搬移到第二子系统的目标模块中执行。

其中,第二子系统为不掉电系统(Always On System,AON),第一子系统主要用于执行该功能机上的应用程序,应用程序可以包括相机、浏览器、计算器等。当用户在功能机上运行应用程序时,与该应用相关的任务需要执行,此时第一子系统处于工作的状态,即第一子系统处于唤醒状态;当没有任务需要执行的时候,第一子系统可进入休眠状态,当第一子系统进入休眠状态后可实现降低功耗的功能。

可以理解的是,本申请实施例示意的结构并不构成对功能机100的具体限定。在本申请另一些实施例中,功能机100可以包括比图示更多部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。

请参阅图2,图2是本申请实施例提供的一种直接内存访问的传输配置方法的流程示意图,应用于如图1所示的功能机系统;如图2所示,该直接内存访问的传输配置方法包括:

S210、接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道。

在播放音频文件的场景下,在对音频数据进行编解码后,还需要将编解码后的音频数据搬移到最终播放音频数据的硬件上。如果用CPU来搬移音频数据,会增加CPU的负载,且由于DMA的传输不受CPU的干预及DMA具备传输速度快的特性,因此只需要CPU初始化好DMA的参数后,可以由DMA进行数据的搬移。

DMA的主要功能是将一段数据从一个地址搬移到另外一个地址,当CPU配置好DMA的参数后,数据传输的过程将不再需要CPU的干预,可降低CPU的负载。使用DMA可以高效快速地实现数据的传输。DMA内部会有多个通道,这些通道的用于完成数据的传输,每个通道均可以单独配置,并实现数据的传输功能。

其中,在目标模块需要进行数据传输时,目标模块可以向DMA发送第一请求,该第一请求中携带目标DMA任务。DMA从所述第一请求中获取目标DMA任务,根据该目标DMA任务从DMA通道选取两级DMA通道用于目标DMA任务的传输。

S220、根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。

其中,所述数据的编解码由所述第一子系统执行,所述DMA和所述目标模块位于所述第二子系统上,所述第二子系统为不掉电子系统。

在本申请实施例中DMA位于AON子系统。由于AON子系统不会掉电,AON子系统上的DMA可以一直处于不掉电的状态。示例性地,当上层应用程序不需要使用该AON子系统中的DMA搬移数据时,功能机也可以关闭该AON子系统上该DMA模块的时钟信号。

在播放音频文件的场景下,音频文件的编解码实现是在第一子系统,当第一子系统在播放音乐时,第一子系统需要对音频文件进行编解码,这些编解码后的音频数据会先存储在第一子系统的内存中,但是最终播放音频数据的硬件并不在AP子系统上,因此需要将编解码后的音频数据传输到最终播放音频的硬件上。由于第一子系统在没有任务需要执行的时候,可进入休眠状态。因此,为了降低播放音频文件的场景下系统的功耗,可以适当的让第一子系统进行休眠。

可选的,所述方法还包括:接收第一子系统发送的配置信息,所述配置信息包括每个DMA通道传输数据的源地址、目的地址和数据长度;根据所述配置信息,启动所述第一级DMA通道的数据传输。

其中,在将第一级DMA通道和第二级DMA通道分配给目标模块使用前,还需要配置第一级DMA通道和第二级DMA通道的参数。具体为DMA接收第一子系统发送的配置信息,根据配置信息中的数据的源地址、目的地址和数据长度,分别初始化第一级DMA通道和第二级DMA通道的参数,所述DMA通道的参数可以包括但不局限于:数据传输大小、目的地址、源地址、传输进度等。

可选的,所述方法还包括:在所述第一级DMA通道将所述数据从第一源地址搬移至第一目的地址后,向所述第一子系统发送第一消息,以及启动所述第二级DMA通道的数据传输,所述第一消息用于指示所述第一子系统进行休眠状态,所述第一源地址为所述第一子系统存储所述数据的地址,所述第一目的地址为所述第二子系统存储所述数据的地址。

当第一子系统完成编解码后,第一子系统会发送配置信息来配置DMA通道的参数,并启动第一级DMA通道的数据传输,第一级DMA通道将第一子系统编解码后的音频数据从第一子系统的内存中搬移到第二子系统的缓存上。由第二级DMA通道将第二子系统的缓存内的音频数据再搬移到音频播放的硬件上。由于在第二级DMA通道在数据搬移的过程中,并不需要第一子系统的参与,所以第一子系统可以进入睡眠的状态,从而可以节省功耗,达到降低系统的耗电的目的。

具体地,在第一级DMA通道将第一子系统编解码好的音频数据全部从第一子系统上搬移至第二子系统的内存上时,DMA向第一子系统发送第一消息,同时触发第二级DMA进行数据搬移。第一子系统接收到第一消息后,进入休眠状态。

可选的,所述方法还包括:在所述第二级DMA通道将所述数据从第二源地址搬移至第二目的地址后,向所述第一子系统发送第二消息,所述第二消息用于指示所述第一子系统进入唤醒状态,所述第二源地址为所述第一目的地址,所述第二目的地址为所述目标模块存储所述数据的地址。

具体地,当触发第二级DMA通道的数据传输后,第二级DMA通道将第二子系统上存储的编解码好的音频数据再搬移到目标模块上进行播放,在第二级DMA通道进行数据搬移的过程中,第一子系统处于休眠状态。当第二级DMA通道完成数据的传输后需要再触发第一级DMA通道的数据传输,因此DMA向第一子系统发送第二消息,第一子系统接收到第二消息后,唤醒第一子系统唤醒,并开始继续编解码音频文件。

可选的,所述方法还包括:接收第一子系统发送的第三消息,所述第三消息用于指示所述DMA启动所述第一级DMA通道的数据传输。

其中,当第一子系统从休眠状态转换为唤醒状态,并将完成音频文件编解码后,第一子系统向DMA发送第三消息,以启动第一级DMA通道的数据传输,第一级DMA通道搬移完数据后会再触发第二级DMA通道的数据传输,以此循环,可以不断的进行数据传输。

可以看出,本申请实施例提出的直接内存访问的传输配置方法,DMA通过接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。本申请通过将第一子系统中的数据搬移到第二子系统,可以使得第一子系统在将数据从第二子系统搬移到目标模块的过程中休眠,从而降低第一子系统的功耗,进而降低系统整体功耗。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,功能机为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对功能机进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

请参阅图3a,图3a是本申请实施例提供的一种直接内存访问的传输配置装置的功能单元组成框图,该装置300应用于功能机,所述装置300包括:收发单元310和分配单元320,其中,

所述收发单元310,用于接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;

所述分配单元320,用于根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。

可以看出,本申请实施例提供的直接内存访问的传输控制装置,收发单元接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;分配单元根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。本申请通过将第一子系统中的数据搬移到第二子系统,可以使得第一子系统在将数据从第二子系统搬移到目标模块的过程中休眠,从而降低第一子系统的功耗,进而降低系统整体功耗。

可选的,所述数据的编解码由所述第一子系统执行,所述DMA和所述目标模块位于所述第二子系统上,所述第二子系统为不掉电子系统。

可选的,所述收发单元310,还用于接收第一子系统发送的配置信息,所述配置信息包括每个DMA通道传输数据的源地址、目的地址和数据长度;

如图3b所示,是本申请实施例提供的另一种直接内存访问装置300的功能单元组成框图,所述装置300还包括:

启动单元330,用于根据所述配置信息,启动所述第一级DMA通道的数据传输。

可选的,所述收发单元310,还用于在所述第一级DMA通道将所述数据从第一源地址搬移至第一目的地址后,向所述第一子系统发送第一消息,所述第一源地址为所述第一子系统存储所述数据的地址,所述第一目的地址为所述第二子系统存储所述数据的地址;

所述启动单元330,还用于启动所述第二级DMA通道的数据传输,所述第一消息用于指示所述第一子系统进行休眠状态。

可选的,所述收发单元310,还用于在所述第二级DMA通道将所述数据从第二源地址搬移至第二目的地址后,向所述第一子系统发送第二消息,所述第二消息用于指示所述第一子系统进入唤醒状态,所述第二源地址为所述第一目的地址,所述第二目的地址为所述目标模块存储所述数据的地址。

可选的,所述收发单元310,还用于所述方法还包括:

接收第一子系统发送的第三消息,所述第三消息用于指示所述DMA启动所述第一级DMA通道的数据传输。

可以理解的是,本申请实施例的直接内存访问的传输控制装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

请参阅图4,图4是本申请实施例提供的一种功能机,该功能机包括:处理器、存储器、收发器,以及一个或多个程序。所述处理器、存储器和收发器通过通信总线相互连接。

存储器包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器用于相关计算机程序及数据。通信接口用于接收和发送数据。

处理器可以是一个或多个中央处理器(central processing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。

所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行;所述程序包括用于执行以下步骤的指令:

接收目标模块发送的第一请求,所述第一请求用于申请两级DMA通道;

根据所述第一请求,将第一级DMA通道和第二级DMA通道分配给所述目标模块,所述第一级DMA通道用于将第一子系统的内存中存储的数据搬移到第二子系统的内存上,所述第二级DMA通道用于从所述第二子系统的内存中将所述数据搬移到所述目标模块的硬件上。

需要说明的是,本申请实施例的具体实现过程可参见上述方法实施例所述的具体实现过程,在此不再赘述。

本申请实施例还提供一种芯片系统,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述收发器和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有计算机程序;所述计算机程序被所述处理器执行如上述方法实施例中记载的任一方法的部分或全部步骤。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、ROM、RAM、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 直接内存访问的传输配置方法及装置
  • 一种直接内存访问的传输控制方法及装置
技术分类

06120112481419