CN101158930A - 一种外部控制dma控制器的方法及其装置 - Google Patents
一种外部控制dma控制器的方法及其装置 Download PDFInfo
- Publication number
- CN101158930A CN101158930A CNA2007101776575A CN200710177657A CN101158930A CN 101158930 A CN101158930 A CN 101158930A CN A2007101776575 A CNA2007101776575 A CN A2007101776575A CN 200710177657 A CN200710177657 A CN 200710177657A CN 101158930 A CN101158930 A CN 101158930A
- Authority
- CN
- China
- Prior art keywords
- dma controller
- cpu
- external
- data
- chained list
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种外部控制DMA控制器的方法及其装置,其中该方法包括:步骤一,CPU初始化用于传输数据的BD链表,并以所述BD链表中的多个BD完成一个数据包的传输;步骤二,所述CPU设置所含DMA控制器的属性,启用DMA外部控制模式、流控模式;步骤三,外部逻辑模块对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。本发明使得CPU在与外部数据交互过程中,完全不需要CPU的参与,同时减少了中断处理次数,有效降低了CPU的利用率。
Description
技术领域
本发明涉及DMA(Direct Memory Access,直接内存访问)控制技术,特别是涉及一种外部控制CPU自带的DMA控制器的方法及其装置。
背景技术
随着电信级设备向着高集成化、微型化方向发展,一块单板上集成的功能越来越多,同时又要兼顾CPU的性价比,因此如何更有效地提高CPU的使用率,减少CPU负荷,是目前必须面对和解决的课题。在目前的电信设备中,IO操作是CPU最主要的工作之一,加上IO操作速率低,这部分一般是占CPU资源较多的应用之一,一般也是主要的优化对象,作为硬件意义上的DMA技术也因此应运而生。但目前CPU自带的DMA控制器因为其自身的定位问题,无法完全满足各种复杂的应用,无法完全做到在数据传输过程中不需要CPU的参与。一般这样的应用都是必须通过中断方式通知CPU更新BD(BufferDescriptor,缓存描述符)的信息,然后才能继续进行传输。而这样大大降低了DMA的使用效率,增加了CPU的负荷。
发明内容
本发明所要解决的技术问题在于提供一种外部控制DMA控制器的方法及其装置,用于解决CPU过多参与DMA控制器的数据传输过程而带来的DMA控制器使用效率降低以及CPU负荷增加的问题。
为了实现上述目的,本发明提供了一种外部控制DMA控制器的方法,其特征在于,包括:
步骤一,CPU初始化用于传输数据的BD链表,并以所述BD链表中的多个BD完成一个数据包的传输;
步骤二,所述CPU设置所含DMA控制器的属性,启用DMA外部控制模式、流控模式;
步骤三,外部逻辑模块对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。
所述的外部控制DMA控制器的方法,其中,所述步骤一中,进一步包括:由所述CPU根据BD数据结构建立所述BD链表的步骤,所述BD数据结构根据所述DMA控制器的要求确定。
所述的外部控制DMA控制器的方法,其中,所述步骤一中,所述BD链表的个数根据实际数据传输的流量确定。
所述的外部控制DMA控制器的方法,其中,所述步骤三中,进一步包括:所述外部逻辑模块根据与所述DMA控制器之间的信号线和时序完成对所述DMA控制器控制的步骤。
所述的外部控制DMA控制器的方法,其中,所述步骤三中,所述外部逻辑模块对所述DMA控制器进行控制的步骤具体包括:
当所述外部逻辑模块接收到一个数据包时,向所述DMA控制器发出请求信号申请所述DMA控制器传输数据;
所述DMA控制器向所述外部逻辑模块返回确认信号,并将根据所述BD链表的信息从所述外部逻辑模块的逻辑寄存器读取所述数据包的相关信息,并将该相关信息写入到另一所述链表的相应域中。
所述的外部控制DMA控制器的方法,其中,所述步骤三中,进一步包括:当所述CPU的内存有数据包时,所述CPU通过定时查询任务从所述内存中接收数据的步骤。
为了实现上述目的,本发明还提供了一种外部控制DMA控制器的装置,包括CPU、所述CPU的DMA控制器,其特征在于,还包括:外部逻辑模块,连接所述DMA控制器;
所述CPU,用于初始化用于传输数据的BD链表,并以多个所述BD链表完成一个数据包的传输;并设置所述DMA控制器的属性,启用DMA外部控制模式、流控模式;
所述外部逻辑模块,用于对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。
所述的外部控制DMA控制器的装置,其中,所述CPU根据BD数据结构建立所述BD链表,所述BD数据结构根据所述DMA控制器的要求确定。
所述的外部控制DMA控制器的装置,其中,所述BD链表的个数根据实际数据传输的流量确定。
所述的外部控制DMA控制器的装置,其中,所述外部逻辑模块根据与所述DMA控制器之间的信号线和时序完成对所述DMA控制器控制。
本发明的有益技术效果:
与现有技术相比,采用本发明使得CPU在与外部数据交互过程中,完全不需要CPU的参与,同时减少了中断处理次数,有效降低了CPU的利用率。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1是本发明外部控制DMA控制器的方法流程图;
图2是本发明具体实施例BD数据结构图;
图3是本发明具体实施例BD链表图;
图4是本发明具体实施例CPU DMA控制器与外部逻辑模块的信号连线示意图;
图5是本发明具体实施例两个BD接收一个数据包的示意图;
图6是本发明具体实施例三个BD接收一个数据包的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步更详细的描述。
如图1所示,是本发明外部控制DMA控制器的方法流程图。
目前CPU一般都提供了自带的DMA控制器,但在使用自带DMA控制器和外部IO进行数据传输时尤其是接收数据时,仍然需要CPU大量的参与进来,无法发挥DMA控制器的全部潜力。通过深入研究了CPU自带DMA控制器的特性,在CPU与外部数据交互过程中,利用外部逻辑模块控制DMA控制器,多个BD完成一个数据包传输,以及使用DMA控制器的流控特性来共同实现无需CPU参与的数据传输。该方法流程具体包括如下步骤:
步骤S101,CPU通过CPU模块初始化用于数据传输的BD链表,并以BD链表中的多个BD完成一个数据包的传输;
步骤S102,CPU模块设置DMA控制器的应用特性,启用DMA外部控制模式,启用流控,控制每一次交易的字节数;
步骤S103,外部逻辑模块使用标准的外部控制DMA控制器的信号线和时序完成对CPU自带DMA控制器的控制,利用流控的特性,一次交易完成流控所设置字节大小的数据传输。
由于移动基站越来越小型化的趋势,一块单板上集成了几乎所有的功能,因此CPU是否够用是个很大的问题,由于从外部接收数据占CPU处理的40%的比重,因此尽可能把CPU从这部分工作中解脱出来非常有必要。
下面进一步描述将上述方法应用于移动通讯基站单板从外部接收数据,以说明本外部逻辑模块控制DMA控制器的方法的应用实例。
如图2所示,是本发明具体实施例BD数据结构图,在该图中,BD数据结构是按照DMA控制器要求确定的,该数据结构包括的字段如下:
1)源地址属性域,对应的偏移量是0x00;
2)源地址域,对应的偏移量是0x04;
3)目的地址属性域,对应的偏移量是0x08;
4)目的地址域,对应的偏移量是0x0C;
5)保留,对应的偏移量是0x10;
6)下一个BD地址域,对应的偏移量是0x14;
7)一次传输字节数域,对应的偏移量是0x18;
8)保留,对应的偏移量是0x1C;
如图3所示,是本发明具体实施例BD链表图。BD链表用于在接收数据过程中重复使用BD资源。在该图中,BD链表是以两个BD为一组传输数据,包括BD[2*0+0]、BD[2*0+1]...BD[2*i+0]、BD[2*i+1],其中i为大于等于0的整数,BD[2*0+0]用于传输数据包的长度,BD[2*0+1]用于传输数据包的内容。
当BD链表是以三个或三个以上BD为一组传输数据时,相应地,BD链表中每一组中BD的个数也变成三个或三个以上。
如图4所示,是本发明具体实施例CPU DMA控制器与外部逻辑模块的信号连线示意图。在该图中,外部逻辑模块30利用req、ack、done三根信号线来控制CPU 10的DMA控制器20进行数据传输。req信号线用于传输req(请求)信号,ack信号线用于传输ack(确认)信号,done信号线用于传输done(完成)信号。
与外部数据交互过程中,CPU 10通过所包含的CPU模块40利用外部逻辑模块30控制DMA控制器20,多个BD完成一个数据包传输,以及使用DMA控制器20的流控特性来共同实现无需CPU 10参与的数据传输。
如图5所示,是本发明具体实施例两个BD接收一个数据包的示意图。结合图2、3、4对本实施例中两个BD接收一个数据包的过程描述如下:
a1)CPU10通过CPU模块40根据图2中的BD数据结构建立图3中的BD链表,BD链表的具体个数根据实际数据传输的流量来确定/评估,并配置DMA控制器20的属性。
a2)CPU模块40初始化BD的各个域,两个BD为一组完成一个数据包的传输。关键的BD域的值如图5所示。
a3)当外部逻辑模块30接收到一个数据包后,开始发出req信号申请DMA控制器20传输,DMA控制器20如果处于空闲状态,则会返回外部逻辑模块30一个ack信号,确认可以进行数据传输。然后DMA控制器20根据BD[0]的源地址和目的地址以及传输的字节数,把数据包的长度从外部逻辑模块30的寄存器中读出,并写到BD[1]的字节数(ByteCount)域。
由于有流控的作用,一次只可以传送4个字节,因此每传输完4个字节,外部逻辑模块30又要向DMA控制器20发送reg信号。这样实现了外部逻辑模块30对DMA控制器20的控制。
a4)完成BD[0]的传输后,由于BD链表方式的特点,BD[0]的下一个BD是BD[1],这样DMA控制器20会更新BD[1]的各个域信息到自己的寄存器,准备开始真正数据的传输,外部逻辑模块30在传完4字节的长度信息后,开始传输真正的数据到BD1的目的地址域所指向的接收缓存。
a5)重复步骤a3)、a4),外部逻辑模块30开始不停接收数据到CPU 10的内存。
a6)CPU模块40启动了定时查询任务,一旦发现内存中有数据包以后,就开始通知应用模块从内存接收数据。
如图6所示,是本发明具体实施例三个BD接收一个数据包的示意图。
在上述图5的实施例中,如果源地址不固定,那么可用3个BD来完成一次数据传输,结合图2、3、4对本实施例中三个BD接收一个数据包的过程描述如下:
b1)CPU10通过CPU模块40根据图2中的BD数据结构建立图3中的BD链表,具体个数根据实际数据传输的流量来评估,并配置DMA控制器的属性。
b2)CPU模块40初始化BD的各个域,三个BD为一组完成一个数据包的传输。关键的BD域的值如图6所示。
b3)当逻辑接收到一个包后,开始发出req信号申请DMA控制器传输,DMA控制器如果处于空闲状态,则会返回逻辑一个ack信号,确认可以进行数据传输。然后DMA控制器根据BD[0]、BD[1]的源地址和目的地址以及传输的字节数,把数据包的源地址以及包的长度从逻辑寄存器中读出来,写到BD[1]的源地址域和字节数域。
由于有流控的作用,一次只可以传送4个字节,因此,每传输完4个字节,逻辑又要向DMA控制器发送req信号。这样实现了逻辑对DMA控制器的控制。
b4)完成BD[0]、BD[1]的传输后,开始利用BD[2]来传输数据包,DMA控制器会更新BD[2]的各个域信息到自己的寄存器,准备开始真正数据的传输,逻辑在传完源地址信息和长度信息后,开始传输真正的数据到BD[2]的目的地址域所指向的接收缓存。
b5)重复步骤b3)、b4),逻辑开始不停接收数据到CPU内存。
b6)CPU模块40启动了定时查询任务,一旦发现内存中有数据包以后,就开始通知应用模块从内存接收数据。
本发明利用多BD、流控等方式提出了一种CPU与外部数据交互过程中无需CPU参与,有效降低CPU利用率的方法,通过在实时嵌入式系统中外部逻辑模块控制CPU自带DMA控制器使得CPU完全不参与数据的传输过程,有效降低了CPU利用率,从而有效提高了CPU的使用效率,该方法主要应用于CPU和逻辑之间数据传输的场景。
在移动基站、电信设备越来越小型化的今天,本发明方法将具有丰富和巨大的应用潜力。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种外部控制DMA控制器的方法,其特征在于,包括:
步骤一,CPU初始化用于传输数据的BD链表,并以所述BD链表中的多个BD完成一个数据包的传输;
步骤二,所述CPU设置所含DMA控制器的属性,启用DMA外部控制模式、流控模式;
步骤三,外部逻辑模块对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。
2.根据权利要求1所述的外部控制DMA控制器的方法,其特征在于,所述步骤一中,进一步包括:由所述CPU根据BD数据结构建立所述BD链表的步骤,所述BD数据结构根据所述DMA控制器的要求确定。
3.根据权利要求1所述的外部控制DMA控制器的方法,其特征在于,所述步骤一中,所述BD链表的个数根据实际数据传输的流量确定。
4.根据权利要求1、2或3所述的外部控制DMA控制器的方法,其特征在于,所述步骤三中,进一步包括:所述外部逻辑模块根据与所述DMA控制器之间的信号线和时序完成对所述DMA控制器控制的步骤。
5.根据权利要求1、2或3所述的外部控制DMA控制器的方法,其特征在于,所述步骤三中,所述外部逻辑模块对所述DMA控制器进行控制的步骤具体包括:
当所述外部逻辑模块接收到一个数据包时,向所述DMA控制器发出请求信号申请所述DMA控制器传输数据;
所述DMA控制器向所述外部逻辑模块返回确认信号,并将根据所述BD链表的信息从所述外部逻辑模块的逻辑寄存器读取所述数据包的相关信息,并将该相关信息写入到另一所述链表的相应域中。
6.根据权利要求5所述的外部控制DMA控制器的方法,其特征在于,所述步骤三中,进一步包括:当所述CPU的内存有数据包时,所述CPU通过定时查询任务从所述内存中接收数据的步骤。
7.一种外部控制DMA控制器的装置,包括CPU、所述CPU的DMA控制器,其特征在于,还包括:外部逻辑模块,连接所述DMA控制器;
所述CPU,用于初始化用于传输数据的BD链表,并以多个所述BD链表完成一个数据包的传输;并设置所述DMA控制器的属性,启用DMA外部控制模式、流控模式;
所述外部逻辑模块,用于对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。
8.根据权利要求7所述的外部控制DMA控制器的装置,其特征在于,所述CPU根据BD数据结构建立所述BD链表,所述BD数据结构根据所述DMA控制器的要求确定。
9.根据权利要求7或8所述的外部控制DMA控制器的装置,其特征在于,所述BD链表的个数根据实际数据传输的流量确定。
10.根据权利要求7或8所述的外部控制DMA控制器的装置,其特征在于,所述外部逻辑模块根据与所述DMA控制器之间的信号线和时序完成对所述DMA控制器控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101776575A CN100517284C (zh) | 2007-11-19 | 2007-11-19 | 一种外部控制dma控制器的方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101776575A CN100517284C (zh) | 2007-11-19 | 2007-11-19 | 一种外部控制dma控制器的方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101158930A true CN101158930A (zh) | 2008-04-09 |
CN100517284C CN100517284C (zh) | 2009-07-22 |
Family
ID=39307032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101776575A Expired - Fee Related CN100517284C (zh) | 2007-11-19 | 2007-11-19 | 一种外部控制dma控制器的方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100517284C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314400A (zh) * | 2011-09-27 | 2012-01-11 | 广东威创视讯科技股份有限公司 | 一种分散聚合式dma方法及装置 |
CN103176932A (zh) * | 2011-12-23 | 2013-06-26 | 重庆重邮信科通信技术有限公司 | 一种dma数据传输方法及系统 |
CN103514126A (zh) * | 2012-06-26 | 2014-01-15 | 京信通信系统(广州)有限公司 | 一种数据的接收方法、系统以及装置 |
CN105204939A (zh) * | 2015-11-03 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种中断请求的处理方法 |
WO2016127552A1 (zh) * | 2015-02-12 | 2016-08-18 | 深圳市中兴微电子技术有限公司 | 一种直接内存存取dma控制器及数据传输的方法 |
CN106982176A (zh) * | 2017-03-22 | 2017-07-25 | 北京东土军悦科技有限公司 | 一种数据传输方法及设备 |
CN108228490A (zh) * | 2018-01-26 | 2018-06-29 | 武汉精测电子集团股份有限公司 | 一种基于pcie卡高速数据传输的驱动方法 |
CN110781104A (zh) * | 2019-10-30 | 2020-02-11 | 深圳市元征科技股份有限公司 | 一种数据处理系统、方法和装置 |
CN111258937A (zh) * | 2020-01-23 | 2020-06-09 | 烽火通信科技股份有限公司 | 一种环式链表dma的传输方法及系统 |
WO2020177252A1 (zh) * | 2019-03-06 | 2020-09-10 | 上海熠知电子科技有限公司 | 基于pcie协议的dma控制器及dma数据传输方法 |
TWI771852B (zh) * | 2020-12-29 | 2022-07-21 | 新唐科技股份有限公司 | 直接記憶體存取裝置、資料傳輸方法與電子設備 |
-
2007
- 2007-11-19 CN CNB2007101776575A patent/CN100517284C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314400B (zh) * | 2011-09-27 | 2014-12-24 | 广东威创视讯科技股份有限公司 | 一种分散聚合式dma方法及装置 |
CN102314400A (zh) * | 2011-09-27 | 2012-01-11 | 广东威创视讯科技股份有限公司 | 一种分散聚合式dma方法及装置 |
CN103176932A (zh) * | 2011-12-23 | 2013-06-26 | 重庆重邮信科通信技术有限公司 | 一种dma数据传输方法及系统 |
CN103176932B (zh) * | 2011-12-23 | 2017-04-26 | 锐迪科(重庆)微电子科技有限公司 | 一种dma数据传输方法及系统 |
CN103514126A (zh) * | 2012-06-26 | 2014-01-15 | 京信通信系统(广州)有限公司 | 一种数据的接收方法、系统以及装置 |
CN103514126B (zh) * | 2012-06-26 | 2016-07-20 | 京信通信系统(广州)有限公司 | 一种数据的接收方法、系统以及装置 |
WO2016127552A1 (zh) * | 2015-02-12 | 2016-08-18 | 深圳市中兴微电子技术有限公司 | 一种直接内存存取dma控制器及数据传输的方法 |
CN105204939B (zh) * | 2015-11-03 | 2019-02-01 | 浪潮(北京)电子信息产业有限公司 | 一种中断请求的处理方法 |
CN105204939A (zh) * | 2015-11-03 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | 一种中断请求的处理方法 |
CN106982176A (zh) * | 2017-03-22 | 2017-07-25 | 北京东土军悦科技有限公司 | 一种数据传输方法及设备 |
CN106982176B (zh) * | 2017-03-22 | 2020-09-11 | 北京东土军悦科技有限公司 | 一种数据传输方法及设备 |
CN108228490A (zh) * | 2018-01-26 | 2018-06-29 | 武汉精测电子集团股份有限公司 | 一种基于pcie卡高速数据传输的驱动方法 |
WO2020177252A1 (zh) * | 2019-03-06 | 2020-09-10 | 上海熠知电子科技有限公司 | 基于pcie协议的dma控制器及dma数据传输方法 |
CN110781104A (zh) * | 2019-10-30 | 2020-02-11 | 深圳市元征科技股份有限公司 | 一种数据处理系统、方法和装置 |
CN111258937A (zh) * | 2020-01-23 | 2020-06-09 | 烽火通信科技股份有限公司 | 一种环式链表dma的传输方法及系统 |
TWI771852B (zh) * | 2020-12-29 | 2022-07-21 | 新唐科技股份有限公司 | 直接記憶體存取裝置、資料傳輸方法與電子設備 |
Also Published As
Publication number | Publication date |
---|---|
CN100517284C (zh) | 2009-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100517284C (zh) | 一种外部控制dma控制器的方法及其装置 | |
CN101340574B (zh) | 一种实现零拷贝发送流媒体数据的方法及系统 | |
US8732360B2 (en) | System and method for accessing memory | |
CN101930416B (zh) | 硬件协助处理器间的沟通 | |
US7705850B1 (en) | Computer system having increased PCIe bandwidth | |
US20080043742A1 (en) | Transmission using multiple physical interface | |
JP2008519373A (ja) | ハードウエアによる周辺コンポーネント・メモリー・アラインメントの方法 | |
JP2015528243A (ja) | データトンネルを用いるインタフェースを介した複数のプロトコルデータ要素の送信 | |
CN102138297A (zh) | 图形多媒体集成电路及其运作方法 | |
US20040225779A1 (en) | Programmable CPU/interface buffer structure using dual port RAM | |
EP1014649A2 (en) | Method and system of data transfer control | |
US20050135395A1 (en) | Method and system for pre-pending layer 2 (L2) frame descriptors | |
WO2020143237A1 (zh) | 一种dma控制器和异构加速系统 | |
CN104767697A (zh) | 一种航空全双工交换式以太网控制器及其控制方法 | |
EP1433071B1 (en) | Bus system and bus interface for connection to a bus | |
US8001285B1 (en) | Method and apparatus for reducing host processor activity during interaction with peripheral devices | |
WO2023240998A1 (zh) | 数据包处理方法、通信芯片及计算机设备 | |
WO2012034361A1 (zh) | 基于mmc/sd接口的以太网通信系统及方法 | |
WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 | |
EP2389632B1 (en) | Communication protocol for sharing memory resources between components of a device | |
CN109710550B (zh) | 一种基于双缓存的帧长度不固定rs422数据通信系统 | |
CN101534259B (zh) | 异步通信控制器及其控制方法 | |
CN1759385A (zh) | 用于传送数据的数据处理设备以及方法 | |
CN110765044B (zh) | 数据包传输装置及系统 | |
CN101521726B (zh) | 一种网络电视机及其数据报的捕获方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090722 Termination date: 20161119 |
|
CF01 | Termination of patent right due to non-payment of annual fee |