【技术实现步骤摘要】
一种DMA数据传输系统及方法
[0001]本申请涉及计算机应用
,尤其涉及一种DMA数据传输系统及方法。
技术介绍
[0002]直接存储器访问(Direct Memory Access,DMA)是指在进行数据传输时不通过CPU(Central Processing Unit,中央处理器)而直接与系统内存交换数据的接口技术。在DMA模式下,CPU只需要向DMA控制器下达指令,数据传输由DMA控制器来实现,数据传输完成后再把信息反馈给CPU,减少CPU的资源占用率。
[0003]传统的DMA控制器设有可配置通道,通道分为RX(Receive,接收)和TX(Transmit,发送)两个方向,每个方向设有源地址、目的地址、数据传输长度配置寄存器。CPU首先配置好DMA控制器的源地址、目的地址和数据传输长度配置寄存器,准备好数据传送后,DMA控制器向CPU发送请求;CPU响应请求后DMA控制器开始传输数据;数据传输完成后,DMA控制器上报中断给CPU。对于RX方向,CPU收到中断后读取数据进行处理;对于TX方向,CPU收 ...
【技术保护点】
【技术特征摘要】
1.一种DMA数据传输系统,其特征在于,包括主机CPU、外设数据寄存器以及传输总线,其特征在于,包括数据缓存模块和DMA控制模块;所述数据缓存模块通过所述传输总线与所述主机CPU连接;所述数据缓存模块通过所述传输总线与所述外设寄存器连接;所述DMA控制模块与所述外设数据寄存器连接;所述DMA控制模块被配置为,在主机系统内存中申请环形缓冲区,并初始化所述环形缓冲区;所述环形缓冲区上设有头指针和尾指针;所述数据缓存模块包括所述环形缓冲区、所述头指针和所述尾指针;所述环形缓冲区被配置为,储存报文数据;所述头指针被配置为,指向所述环形缓冲区中待写入报文数据的地址;所述尾指针被配置为,指向所述环形缓冲区中待读出报文数据的地址;所述DMA控制模块被配置为执行以下步骤:初始所述化头指针的地址和所述尾指针的地址;根据所述头指针的地址和所述尾指针的地址,将所述报文数据写入所述环形缓冲区,或者在所述环形缓冲区中读出所述报文数据;同步更新所述头指针和所述尾指针,使所述头指针指向所述环形缓冲区中下一个待写入所述报文数据的地址,使所述尾指针指向所述环形缓冲区中下一个待读出所述报文数据的地址。2.根据权利要求1所述的DMA数据传输系统,其特征在于,所述DMA控制模块包括逻辑控制器;在主机系统内存中申请环形缓冲区,并初始化所述环形缓冲区的步骤中,所述逻辑控制器被配置为:在系统内存中申请若干个DMA内存块,设置所述DMA内存块的大小和数量;创建若干个描述符;所述描述符的数量与所述DMA内存块的数量相等,每个所述描述符各指向一个所述DMA内存块;若干个所述描述符依次连接组成描述符队列;所述描述符队列为环形队列,所述描述符将所述DMA内存块串联起来,形成所述环形缓冲区;将所述环形缓冲区的基地址写入所述外设数据寄存器;所述环形缓冲区的基地址为所述描述符队列中首端所述描述符指向的所述DMA内存块的地址。3.根据权利要求2所述的DMA数据传输系统,其特征在于,所述数据缓存模块还包括所述描述符队列;所述描述符队列被配置为,储存所述DMA内存块的地址和所述DMA内存块的大小。4.根据权利要求3所述的DMA数据传输系统,其特征在于,所述初始化所述头指针的地址和所述尾指针的地址,所述逻辑控制器被进一步配置为:将所述头指针的初始地址指向所述描述符队列中首端所述描述符指向的所述DMA内存块的地址;将所述尾指针的初始地址指向所述描述符队列中尾端所述描述符指向的所述DMA内存块的地址。5.根据权利要求4所述的DMA数据传输系统,其特征在于,所述DMA控制模块还包括写指令寄存器和读指令寄存器;所述写指令寄存器被配置为,发起或停止外设向所述主机CPU上报报文;所述读指令寄存器被配置为,发起或停止所述主机CPU向外设下发报文。6.根据权利要求5所述的DMA数据传输系统,其特征在于,在根据所述头指针的地址和所述尾指针的地址,将所述报文数据写入所述环形缓冲区,同步更新所述头指针和所述尾指针的步骤中,所述逻辑控制器被配置为执行以下步骤:
使能所述写指令寄存器,发起DMA写;若所述环形缓冲区未满,将所述报文数据写入所述环形缓冲区中所述头指针指向的地址,写地址为:Addr1
W
=Addr1
B
+Ptr1
H
×
Size1
DMA
;其中,Addr1
W
为所述写地址;Addr1
B
为所述基地址;Ptr1
H
表示所述头指针指向的所述描述符的位置;Size1
DMA
为所述DMA内存块的大小;更新所述头指针,使所述头指针指向下一个所述描述符的位置;若所述环形缓冲区已满,等...
【专利技术属性】
技术研发人员:闫振林,林后斌,马义飞,
申请(专利权)人:苏州雄立科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。