一种外部控制dma控制器的方法及其装置的制作方法

文档序号:6613840阅读:160来源:国知局
专利名称:一种外部控制dma控制器的方法及其装置的制作方法
技术领域
本发明涉及DMA (Direct Memory Access,直接内存访问)控制技术,特 别是涉及一种外部控制CPU自带的DMA控制器的方法及其装置。
背景技术
随着电信级设备向着高集成化、微型化方向发展, 一块单板上集成的功能 越来越多,同时又要兼顾CPU的性价比,因此如何更有效地提高CPU的使用 率,减少CPU负荷,是目前必须面对和解决的课题。在目前的电信设备中, 10操作是CPU最主要的工作之一,加上IO操作速率低,这部分一般是占CPU 资源较多的应用之一, 一般也是主要的优化对象,作为硬件意义上的DMA技 术也因此应运而生。但目前CPU自带的DMA控制器因为其自身的定位问题, 无法完全满足各种复杂的应用,无法完全做到在数据传输过程中不需要CPU 的参与。 一般这样的应用都是必须通过中断方式通知CPU更新BD (Buffer Descriptor,缓存描述符)的信息,然后才能继续进行传输。而这样大大降低 了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参与的数据传输。该方法流程具体包括如下步骤步骤SIOI, CPU通过CPU模块初始化用于数据传输的BD链表,并以
BD链表中的多个BD完成一个数据包的传输;步骤S102, CPU模块设置DMA控制器的应用特性,启用DMA外部控 制模式,启用流控,控制每一次交易的字节数;步骤S103,外部逻辑模块使用标准的外部控制DMA控制器的信号线和 时序完成对CPU自带DMA控制器的控制,利用流控的特性, 一次交易完成 流控所设置字节大小的数据传输。由于移动基站越来越小型化的趋势, 一块单板上集成了几乎所有的功能, 因此CPU是否够用是个很大的问题,由于从外部接收数据占CPU处理的40% 的比重,因此尽可能把CPU从这部分工作中解脱出来非常有必要。下面进一歩描述将上述方法应用于移动通讯基站单板从外部接收数据,以 说明本外部逻辑模块控制DMA控制器的方法的应用实例。如图2所示,是本发明具体实施例BD数据结构图,在该图中,BD数据 结构是按照DMA控制器要求确定的,该数据结构包括的字段如下1) 源地址属性域,对应的偏移量是OxOO;2) 源地址域,对应的偏移量是0x04;3) 目的地址属性域,对应的偏移量是0x08;4) 目的地址域,对应的偏移量是OxOC;5) 保留,对应的偏移量是OxlO;6) 下一个BD地址域,对应的偏移量是0xl4;7) —次传输字节数域,对应的偏移量是0xl8;8) 保留,对应的偏移量是OxlC;如图3所示,是本发明具体实施例BD链表图。BD链表用于在接收数据 过程中重复使用BD资源。在该图中,BD链表是以两个BD为一组传输数据, 包括BD[2*0 + O]、 BD[2*0 + l]...BD[2*i + O]、 BD[2*i + l],其中i为大于等于 O的整数,BD[2W + 0]用于传输数据包的长度,BD[2W+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接收一个数据包的过程描述如下al) 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[O] 的源地址和目的地址以及传输的字节数,把数据包的长度从外部逻辑模块30 的寄存器中读出,并写到BD[1]的字节数(ByteCount)域。由于有流控的作用, 一次只可以传送4个字节,因此每传输完4个字节, 外部逻辑模块30又要向DMA控制器20发送reg信号。这样实现了外部逻辑 模块30对DMA控制器20的控制。a4)完成BD
的传输后,由于BD链表方式的特点,BD
的下一个BD 是BD[l],这样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接收一个数据包的过程描 述如下bl) CPU10通过CPU模块40根据图2中的BD数据结构建立图3中的 BD链表,具体个数根据实际数据传输的流量来评估,并配置DMA控制器的 属性。b2) CPU模块40初始化BD的各个域,三个BD为一组完成一个数据包 的传输。关键的BD域的值如图6所示。b3)当逻辑接收到一个包后,开始发出req信号申请DMA控制器传输, DMA控制器如果处于空闲状态,则会返回逻辑一个ack信号,确认可以进行 数据传输。然后DMA控制器根据BD[O]、 BD[1]的源地址和目的地址以及传 输的字节数,把数据包的源地址以及包的长度从逻辑寄存器中读出来,写到 BD[1]的源地址域和字节数域。由于有流控的作用, 一次只可以传送4个字节,因此,每传输完4个字节, 逻辑又要向DMA控制器发送req信号。这样实现了逻辑对DMA控制器的控 制。b4)完成BD[O]、 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和逻辑之间数据传输的场景。在移动基站、电信设备越来越小型化的今天,本发明方法将具有丰富和巨 大的应用潜力。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但 这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种外部控制DMA控制器的方法,其特征在于,包括步骤一,CPU初始化用于传输数据的BD链表,并以所述BD链表中的多个BD完成一个数据包的传输;步骤二,所述CPU设置所含DMA控制器的属性,启用DMA外部控制模式、流控模式;步骤三,外部逻辑模块对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。
2、 根据权利要求1所述的外部控制DMA控制器的方法,其特征在于, 所述步骤一中,进一步包括由所述CPU根据BD数据结构建立所述BD链 表的步骤,所述BD数据结构根据所述DMA控制器的要求确定。
3、 根据权利要求1所述的外部控制DMA控制器的方法,其特征在于, 所述步骤一中,所述BD链表的个数根据实际数据传输的流量确定。
4、 根据权利要求l、 2或3所述的外部控制DMA控制器的方法,其特征 在于,所述步骤三中,进一步包括所述外部逻辑模块根据与所述DMA控制 器之间的信号线和时序完成对所述DMA控制器控制的步骤。
5、 根据权利要求l、 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控制器控制。
全文摘要
本发明公开了一种外部控制DMA控制器的方法及其装置,其中该方法包括步骤一,CPU初始化用于传输数据的BD链表,并以所述BD链表中的多个BD完成一个数据包的传输;步骤二,所述CPU设置所含DMA控制器的属性,启用DMA外部控制模式、流控模式;步骤三,外部逻辑模块对所述DMA控制器进行控制,实现以所述流控模式设置的字节大小传输数据。本发明使得CPU在与外部数据交互过程中,完全不需要CPU的参与,同时减少了中断处理次数,有效降低了CPU的利用率。
文档编号G06F13/28GK101158930SQ20071017765
公开日2008年4月9日 申请日期2007年11月19日 优先权日2007年11月19日
发明者华 丁, 叶学谦 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1