一种DMA传输方法、装置、控制器及可读存储介质与流程

文档序号:26754335发布日期:2021-09-25 03:29阅读:100来源:国知局
一种DMA传输方法、装置、控制器及可读存储介质与流程
一种dma传输方法、装置、控制器及可读存储介质
技术领域
1.本技术涉及通信技术领域,具体涉及一种dma传输方法、装置、控制器及可读存储介质。


背景技术:

2.dma(direct memory access,直接存储器访问)传输允许不同速度的硬件装置来沟通,而不需要依赖于cpu的大量中断负载,因此可以达到较高的速度。dma传输在数据传送过程中,没有保存现场、恢复现场之类的工作。由于cpu根本不参加传送操作,因此就省去了cpu取指令、取数、送数等操作。内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。所以dma方式能满足高速i/o设备的要求,也有利于cpu效率的发挥。
3.现有的dma设计中,通常会根据dma传输请求的数量进行分组,dma的每个通道处理不同的分组。开发人员在使用dma时需要查询每个通道对应的请求源分组,并选择其中一个请求源。在大型设计中可能存在很多数量的请求源,使用时查询每个请求源对应的dma通道相当繁琐并且容易出错,降低了开发效率。


技术实现要素:

4.鉴于此,本技术提供了一种dma传输方法、装置、控制器及可读存储介质,以解决现有的dma传输中,开发人员在使用dma时需要查询每个通道对应的请求源分组,过程繁琐并且容易出错的问题。
5.本技术提供的一种dma传输方法,包括:
6.对多个请求源编制编号;
7.根据所述编号从所述多个请求源中选择与一个或多个dma传输通道对应的目标请求源;
8.根据所述目标请求源的dma传输请求信号获取目标数据;
9.将所述目标数据通过对应的dma传输通道进行传输。
10.可选的,在所述根据所述编号从所述多个请求源中选择对应dma传输通道的目标请求源之后,所述方法还包括:
11.若增加新的请求源,则对所述新的请求源编制编号;
12.根据所述新的请求源的编号,将所述新的请求源分配给对应的dma传输通道。
13.可选的,在所述将所述目标传输数据通过对应的dma传输通道进行传输之后,所述方法还包括:
14.获取所述dma传输通道传输所述目标数据的次数;
15.若所述次数小于预设传输次数阈值,则获取并处理新的dma传输请求信号。
16.可选的,所述方法还包括:
17.若所述次数大于或等于所述预设传输次数阈值,则结束dma传输。
18.本技术还提供一种dma传输装置,包括:
19.请求源编号模块,用于对多个请求源编制编号;
20.请求源选择模块,用于根据所述编号从所述多个请求源中选择与一个或多个dma传输通道对应的目标请求源;
21.请求处理模块,用于根据所述目标请求源的dma传输请求信号获取目标数据,以及将所述目标数据通过对应的dma传输通道进行传输。
22.可选的,所述请求源编号模块,还用于若增加新的请求源,则对所述新的请求源编制编号;
23.所述请求源选择模块,还用于根据所述新的请求源的编号,将所述新的请求源分配给对应的dma传输通道。
24.可选的,所述dma传输装置还包括:
25.计数模块,用于获取所述dma传输通道传输所述目标数据的次数;
26.所述请求处理模块,还用于若所述次数小于预设传输次数阈值,则获取并处理新的dma传输请求信号。
27.可选的,所述请求处理模块,还用于若所述次数大于或等于所述预设传输次数阈值,则结束dma传输。
28.本技术还提供一种dma控制器,包括:存储器和处理器,其中,所述存储器上存储有dma传输方法程序,所述dma传输方法程序被所述处理器执行时实现如上述各实施例中dma传输方法的步骤。
29.本技术还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述各实施例中dma传输方法的步骤。
30.如上所述,本技术实施例的dma传输方法,对多个请求源编制编号,dma传输通道根据编号从请求源中选择目标请求源,并传输被选择的目标请求源请求的数据。本方法中,每个dma传输通道可以从所有的请求源中进行选择,解决了原有的dma设计中每个通道只能处理固定请求源的问题,开发人员在使用dma时不必查询每个通道能处理的请求源,提高了开发人员的开发效率。
附图说明
31.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1是现有的一种dma传输方法原理图;
33.图2是本技术实施例一种dma传输方法的流程示意图;
34.图3是本技术实施例的dma传输方法原理图;
35.图4是本技术实施例另一种dma传输方法的流程示意图;
36.图5是本技术实施例的一种dma传输装置的结构示意图;
37.图6是本技术实施例的一种dma控制器的结构示意图。
具体实施方式
38.下面通过实施例对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而非全部实施例。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
39.现有的dma传输方法,是根据dma传输的请求源数量进行分组的,dma的每个通道处理不同的分组。以如下17个请求源为例进行说明。
40.adc_que1,模数转换器请求1;
41.adc_que2,模数转换器请求2;
42.adc_que3,模数转换器请求3;
43.adc_que4,模数转换器请求4;
44.adc_que5,模数转换器请求5;
45.spi_que1,串行外设接口请求1;
46.spi_que2,串行外设接口请求2;
47.tim1_que1,定时器1请求1;
48.tim1_que2,定时器1请求2;
49.tim1_que3,定时器1请求3;
50.tim1_que4,定时器1请求4;
51.tim2_que1,定时器2请求1;
52.tim2_que2,定时器2请求2;
53.uart1_que1,通用异步收发传输器1请求1;
54.uart1_que2,通用异步收发传输器1请求2;
55.uart2_que1,通用异步收发传输器2请求1;
56.uart2_que2,通用异步收发传输器2请求2。
57.现有的一种dma传输方法如图1所示,首先将17个请求源分成五组,其中adc_que1、spi_que1、tim1_que1和tim2_que1总计4个请求源为第一组,与dma控制器的通道1连接;adc_que2、spi_que2、tim1_que2和tim2_que2总计4个请求源为第二组,与dma控制器的通道2连接;adc_que3、tim1_que3和uart1_que1总计3个请求源为第三组,与dma控制器的通道3连接;adc_que4、tim1_que4和uart1_que2总计3个请求源为第四组,与dma控制器的通道4连接;adc_que4、uart2_que1和uart2_que2总计3个请求源为第五组,与dma控制器的通道5连接。在使用时,需要查询每个请求源对应的dma通道,会比较繁琐并且容易出错,并且每个通道只能处理本组的请求源的请求,当请求源数量发生变化,例如新增加一个dac_que6(模数转换器请求6),原设计将无法再使用。
58.本技术实施例提供了一种dma传输方法,流程示意图如图2所示,该dma传输方法包括:
59.101,对多个请求源编制编号。
60.dma传输的请求源一般包括有多个,预先对所有的请求源进行编号。例如,对于图3中的17个请求源,可以通过请求源编号模块将其依次编为0

16。在其中一个实施例中,dma控制器对17个请求源编号如下:adc_que1编号为0,adc_que2编号为1,adc_que3编号为2,adc_que4编号为3,adc_que5编号为4,spi_que1编号为5,spi_que2编号为6,tim1_que1编号
为7,tim1_que2编号为8,tim1_que3编号为9,tim1_que4编号为10,tim2_que1编号为11,tim2_que2编号为12,uart1_que1编号为13,uart1_que2编号为14,uart2_que1编号为15,uart2_que2编号为16。
61.102,根据编号从多个请求源中选择与一个或多个dma传输通道对应的目标请求源。
62.对所有请求源编号后,每一个请求源对应一个编号,在使用的时候,只需要查询对应通道的编号,dma传输通道通过编号便能选择对应的请求源。当只有一个dma传输通道时,则将所有的编号选择到该dma传输通道即可。当有多个dma传输通道时,比如在前述实施例中有5个dma传输通道,对17个请求源进行选择。如果dma传输通道1的请求源选择模块需要使用adc_que1,则选择编号0,adc_que1则是dma传输通道1的目标请求源;如果dma传输通道2的请求源选择模块需要使用tim1_que2,则选择编号8,tim1_que2则是dma传输通道2的目标请求源;dma传输通道3至dma传输通道5依此类推,可以根据编号选择相应的目标请求源。
63.可以理解的是,本实施例中,每个dma传输通道均与所有的请求源连接,可以处理所有请求源的请求,因而每个dma传输通道可以在所有的编号中选择目标请求源。当每个dma传输通道选择完目标请求源后,则每个dma传输通道只接收自己选中的目标请求源的dma传输请求。
64.103,根据目标请求源的dma传输请求信号获取目标数据。
65.当其中的某个目标请求源发送dma传输请求信号时,则相应的dma传输通道会收到该dma传输请求信号。例如,当dma传输通道1选择了编号0,当adc_que1(编号为0)发送dma传输请求信号时,则dma传输通道1会收到该dma传输请求信号。dma控制器的请求处理模块则根据该dma传输请求信号从源地址中获取目标数据。
66.需要说明的是,在一些实施例中,每个dma传输通道可能会包括多个目标请求源,当至少2个目标请求源同时发送传输请求信号时,请求处理模块则可以根据请求源的优先级,对dma传输请求依次进行处理。
67.104,将目标数据通过对应的dma传输通道进行传输。
68.dma控制器的请求处理模块获取到目标数据后,将目标数据通过对应的dma传输通道发送到目标地址。可以理解的是,每个dma传输通道在选择了目标请求源后,则只处理被选择的目标请求源的请求,传输该目标请求源请求的数据。
69.本技术上述实施例中,对多个请求源编制编号,dma传输通道根据编号从请求源中选择目标请求源,并传输被选择的目标请求源请求的数据。本方法中,每个dma传输通道可以从所有的请求源中进行选择,解决了原有的dma设计中每个通道只能处理固定请求源的问题,开发人员在使用dma时不必查询每个通道能处理的请求源,提高了开发人员的开发效率。
70.本技术实施例提供了另一种dma传输方法,流程示意图如图4所示,该dma传输方法包括:
71.201,对多个请求源编制编号。
72.本步骤可以参照步骤101,本实施例中不再赘述。
73.可选的,当dma设计需要更改时,例如需要增加新的请求源时,可以对新的请求源编制编号。比如在前述17个请求源的基础上增加新的请求源tim2_que3(定时器2请求3),可
以编制新的编号17。
74.202,根据编号从多个请求源中选择与一个或多个dma传输通道对应的目标请求源。
75.本步骤可以参照步骤102,本实施例中不再赘述。
76.可选的,在新的dma设计中,对于增加的新的请求源,可以将新的请求源分配给对应的dma传输通道。例如,可以采用dma传输通道中的其中一个根据新的请求源的编号选择该新的请求源,新的请求源作为该dma传输通道一个新增的目标请求源。例如步骤201实施例中,可以使dma传输通道3选择编号17,请求源tim2_que3则成为dma传输通道3一个新增的目标请求源。
77.203,根据目标请求源的dma传输请求信号获取目标数据。
78.本步骤可以参照步骤103,本实施例中不再赘述。
79.204,将目标数据通过对应的dma传输通道进行传输。
80.本步骤可以参照步骤104,本实施例中不再赘述。
81.205,获取所述dma传输通道传输目标数据的次数。
82.每处理一次dma传输请求,则dma传输的次数加1。在其中一个实施例中,可以采用计数器对dma传输通道传输目标数据的次数进行记录。该次数可以是所有dma传输通道传输目标数据的次数总和。
83.206,若次数小于预设传输次数阈值,则获取并处理新的dma传输请求信号。
84.可以预先设计关于dma传输通道传输目标数据的传输次数阈值,当dma传输的次数小于该传输次数阈值时,可以等待请求源发起新的dma传输请求。dma控制器可以持续地接收和处理新的dma传输请求信号,即当dma传输的次数小于该传输次数阈值时,可以返回步骤203。
85.可选的,上述实施例还可以进一步包括:
86.207,若次数大于或等于预设传输次数阈值,则结束dma传输。
87.经过多次dma传输后,当dma传输的次数大于预设的传输次数阈值时,则结束dma传输,此时dma控制器把总线控制权再交回给cpu。
88.本技术上述实施例中,对多个请求源编制编号,dma传输通道根据编号从请求源中选择目标请求源,并传输被选择的目标请求源请求的数据。本方法中,每个dma传输通道可以从所有的请求源中进行选择,解决了原有的dma设计中每个通道只能处理固定请求源的问题,开发人员在使用dma时不必查询每个通道能处理的请求源,提高了开发人员的开发效率。此外,当请求源发生变化时,只需要将新的请求源编制编号便能适应新设计的变化,传统方法中需要重新分配每个dma通道能处理的请求源,增加了开发成本。本技术实施例无需像传统方法那样需要重新设计dma,降低了新设计的成本。还可以通过设置dma传输目标数据的次数的传输次数阈值,来控制dma传输的执行与结束。
89.本技术实施例还提供了一种dma传输装置,如图5所示,dma传输装置300可以包括请求源编号模块301、请求源选择模块302和请求处理模块303。
90.请求源编号模块301,用于对多个请求源编制编号;
91.请求源选择模块302,用于根据所述编号从所述多个请求源中选择与一个或多个dma传输通道对应的目标请求源;
92.请求处理模块303,用于根据所述目标请求源的dma传输请求信号获取目标数据,以及将所述目标数据通过对应的dma传输通道进行传输。
93.在其中一个实施例中,所述请求源编号模块301,还用于若增加新的请求源,则对所述新的请求源编制编号;
94.所述请求源选择模块302,还用于根据所述新的请求源的编号,将所述新的请求源分配给对应的dma传输通道。
95.在其中一个实施例中,所述dma传输装置300还包括:
96.计数模块304,用于获取所述dma传输通道传输所述目标数据的次数;
97.所述请求处理模块303,还用于若所述次数小于预设传输次数阈值,则获取并处理新的dma传输请求信号。
98.在其中一个实施例中,所述请求处理模块303,还用于若所述次数大于或等于所述预设传输次数阈值,则结束dma传输。
99.本技术实施例还提供了一种dma控制器,如图6所示,dma控制器400可以包括:存储器401和处理器402,其中,所述存储器401上存储有计算机程序,所述计算机程序被所述处理器402执行时实现如本实施例提供的dma传输方法中的流程。
100.本技术实施例提供一种计算机可读的存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行如本实施例提供的dma传输方法中的流程。
101.即,以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1