一种基于飞腾处理器内置DMAC的数据传输方法与流程

文档序号:15462244发布日期:2018-09-18 18:26阅读:370来源:国知局

本发明属于处理器领域,尤其是涉及一种飞腾处理器内置DMAC的数据传输方法。



背景技术:

DMAC:直接内存存取控制器(Direct Memory Access Controller),它允许某些硬件子系统独立于CPU而访问主系统内存。DMAC模块的基本功能是作为主模块,从DMA源地址读取数据,缓存在本地FIFO中,再将数据写入DMA地址,从而减少数据移动过程中对内核资源的占用。

在现有的技术中,DMAC技术广泛应用于处理器及片上系统Soc中。是一种传输过程不由CPU控制,直接从内存存取数据的数据交换模块,是解决内存和外部芯片之间数据交互的重要技术。DMAC可以作为飞腾处理器的一个外设模块而存在,可以接收飞腾处理器核的参数配置进行数据搬移。可(专门)用于大量数据的搬移,从DMA源地址读取数据,缓存在本地FIFO中,再将数据写入DMA目的地址,从而减少数据搬移过程中对内核资源的占用。

公告号CN107678987A的中国专利公开了一种DMA传输的方法,包括根据接收的DMA传输请求确定传输数据,锁定所述传输数据对应的物理页面;遍历所述物理页面;判断连续物理页面的数目是否累计至预定数目;若是,填写空闲描述符;若否,则基于已获得的连续物理页面,填写空闲描述符;直到所述物理页面遍历完毕;将所述空闲描述符写入板卡端的描述符空间;将所述传输数据发送至所述板卡端。该方法增加了每次启动DMA传输的数据量,适合多线程DMA传输。

但飞腾处理器平台上存在多种DMA传输环境需求,故需要针对不同应用场景来实现相应的DMA传输方法。



技术实现要素:

本发明要解决的问题是提供一种飞腾处理器内置DMAC的数据传输方法,尤其适合要针对不同应用场景来实现飞腾处理器平台上相应的DMA传输。

为解决上述技术问题,本发明采用的技术方案是:提供一种飞腾处理器内置DMAC的数据传输方法,步骤包括:

A010.确认DMA通道空闲;

A020.内核驱动配置DMA模式参数;

A030.内核驱动配置DMA传输参数;

A040.内核驱动触发DMA操作;

A050.DMAC硬件进行DMA传输;

A060.标识一次DMA传输完成。

其中,可通过在A020中改变DMAC的传输模式实现不同应用场景下的DMAC传输。

基本模式是DMAC复位后的默认模式,根据是否由软件直接配置DMAC内部寄存器还是由软件在内存中初始化描述符,由DMAC自动获取描述符进行DMA操作,基本模式又可进一步分为直接模式和链接模式。

在直接模式下,不需要软件在内存中初始化DMA描述符,而是由软件直接写DMAC内部寄存器,配置相关DMA参数,然后触发DMA操作。软件直接配置DMA的源、目的地址及需要传输的字节数,DMAC自动从源地址读出对应的字节,并将其写入目的地址。

在直接模式下通过DMAC进行数据传输的具体步骤包括:

A111.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A121.内核驱动配置模式寄存器,标识DMA模式为直接模式;

A131.内核驱动配置源参数寄存器、源地址寄存器、目的参数寄存器、目的地址寄存器以及字节计数寄存器;

A141.内核驱动写模式寄存器的启动位[CS],置1;

A151.DMA进行传输时,DMAC置状态寄存器的[CB]位,当DMA传输完成或传输被放弃和/或发生错误时,DMAC硬件清除状态寄存器的[CB]位;

A161.DMAC硬件判断模式寄存器的[EOSIE]位是否被置位,若是,则在完成该segment的DMA操作后触发一次中断;

A162.标识一次DMA传输完成。

其中,执行步骤A121的具体操作为:

内核驱动配置模式寄存器的[XFE]=0,[CTM]=1,[SRW]=0,[EMS_EN]=0。

在链接模式下,内核驱动首先需要在内存中初始化一系列的描述符,这些描述符描述了每一个DMA segment所需的相关参数,且这些描述符之间互相链接成链,这些描述符之间的链被称作link。内核驱动只需要些DMAC内部寄存器,指向第一个描述符,DMAC就会自动从内存中读取描述符进行DMA,直到处理完内存中所有的链接在一起的描述符,才表示DMA操作完成。

在链接模式下通过DMAC进行数据传输的具体步骤包括:

A201.内核驱动在内存中初始化一系列描述符,将所述描述符组织成link;

A211.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A221.内核驱动配置模式寄存器,标识DMA模式为链接模式;

A231.内核驱动写当前link描述符地址寄存器和当前link描述符扩展地址寄存器,指向内存中的第一个link描述符;

A241.内核驱动写模式寄存器的启动位[CS],置1;

A251.DMAC硬件置状态寄存器的[CB]位;

A252.DMAC硬件按照A231中设置,从内存中读取当前的link描述符,根据link描述符的内容更新源参数寄存器、源地址寄存器、下一link描述符地址寄存器和下一link描述符扩展地址寄存器,并按更新后的参数值进行当前segment的DMA操作;

A253.当前segment的DMA操作完成后,判断下一link描述符地址寄存器的[EOLND]位是否置1;若否,则根据下一link描述符地址寄存器和下一link描述符扩展地址寄存器更新当前link描述符地址寄存器和当前link描述符扩展地址寄存器,跳至A252;

A254.DMAC硬件清除状态寄存器的[CB]位;

A261.DMAC硬件判断模式寄存器的[EOLNIE]位是否被置位,若是,则在完成整个link的DMA操作后触发一次中断;

A262.标识一次DMA传输完成;

其中,当执行步骤A251,A252,A253时,若DMA传输被放弃或发生错误,则跳至A254。

其中,执行步骤A221时,包括以下具体步骤:

内核驱动配置模式寄存器的[XFE]=0,[CTM]=0,[CDSM]=0,[EMS_EN]=0。

在扩展链接模式下,除了可以将多个描述符组织成link外,还可以将多个link组织成list,以更加灵活的进行DMA操作。

在扩展链接模式下通过DMAC进行数据传输的具体步骤包括:

A301.内核驱动在内存中初始化一系列描述符,将多个描述符组织成link,多条link组织成list;

A311.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A321.内核驱动配置模式寄存器,标识DMA模式为扩展链接模式;

A331.内核驱动写当前list描述符地址寄存器和当前list描述符扩展地址寄存器,指向内存中的第一个list描述符;

A341.内核驱动写模式寄存器的启动位[CS],置1;

A351.DMAC硬件置状态寄存器的[CB]位;

A352.DMAC硬件按照当前list描述符地址寄存器和当前list描述符扩展地址寄存器的设置,从内存中读取当前list描述符,根据当前list描述符的内容更新当前link描述符地址寄存器、当前link描述符扩展地址寄存器、下一list描述符地址寄存器、下一list描述符扩展地址寄存器、源跨步寄存器、目的跨步寄存器;

A353.DMAC硬件按照当前link描述符地址寄存器和当前link描述符扩展地址寄存器的设置,从内存中读取当前link描述符,根据当前link描述符的内容更新源参数寄存器、源地址寄存器、目的参数寄存器、目的地址寄存器、字节技术寄存器、下一link描述符地址寄存器和下一link描述符扩展地址寄存器;并按更新后的参数值进行当前segment的DMA操作;

A354.当前segment的DMA操作完成后,判断下一link描述符地址寄存器的[EOLND]位是否置1;若否,则根据下一link描述符地址寄存器和下一link描述符扩展地址寄存器更新当前link描述符地址寄存器和当前link描述符扩展地址寄存器,跳至A353;

A355.判断下一list描述符地址寄存器的[EOLSD]位是否被置1;若否,则根据下一list描述符地址寄存器和下一list描述符扩展地址寄存器更新当前list描述符地址寄存器和当前list描述符扩展地址寄存器,跳至A352;

A356.DMAC硬件清除状态寄存器的[CB]位;

A361.DMAC硬件判断模式寄存器的[EOLSIE]位是否被置位,若是,则在完成整个list的DMA操作后触发一次中断;

A362.标识一次DMA传输完成;

其中,当执行步骤A351,A352,A353,A354,A355时,若DMA传输被放弃或发生错误,则跳至A356。

其中,执行步骤A321时,包括以下具体步骤:

内核驱动配置模式寄存器的[XFE]=1,[CTM]=0,[CDSM]=0,[EMS_EN]=0。

通过以上的技术方案,实现了小数据量传输和大数据量传输不同的DMA传输方式,DMA直接操作简单,数据量小;DMA链接传输模式可完成大数据量传输,传输流程较DMA直接操作模式复杂,但是可持续读写大量数据。

综上所述,本发明提供了一种飞腾处理器内置DMAC的数据传输方法,尤其适合针对不同应用场景来实现飞腾处理器平台上相应的DMA传输,操作灵活方便,能应对不同的工作状况。

附图说明

图1是本发明一实施例的DMA传输方法原理示意图

图2是本发明一实施例的直接模式DMA传输方法流程示意图

图3是本发明一实施例的链接模式DMA传输方法流程示意图

图4是本发明一实施例的扩展链接模式DMA传输方法流程示意图

具体实施方式

如图1、本发明一实施例的DMA传输方法原理示意图所示,本发明的一实施例提供一种飞腾处理器内置DMAC的数据传输方法,步骤包括:

A010.确认DMA通道空闲;

A020.内核驱动配置DMA模式参数;

A030.内核驱动配置DMA传输参数;

A040.内核驱动触发DMA操作;

A050.DMAC硬件进行DMA传输;

A060.标识一次DMA传输完成。

其中,可通过在A020中改变DMAC的传输模式实现不同应用场景下的DMAC传输。

如图2、本发明一实施例的直接模式DMA传输方法流程示意图所示,直接模式DMA传输在内核驱动上对应了DMA_MEMCPY传输模式。DMA_MEMCPY为简单的内存搬移,当所有的数据搬移完成后,DMA触发中断,需要使用DMA的设备只需要将源地址和目的地址的总线地址告诉驱动即可。在直接模式下,由内核驱动写寄存器显式触发DMA操作。本发明实施例所提供的直接模式DMA传输操作方法的软硬件流程可包括以下步骤:

A111.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A121.内核驱动配置模式寄存器,标识DMA模式为直接模式;

A131.内核驱动配置源参数寄存器、源地址寄存器、目的参数寄存器、目的地址寄存器以及字节计数寄存器;

A141.内核驱动写模式寄存器的启动位[CS],置1;

A151.DMA进行传输时,DMAC置状态寄存器的[CB]位,当DMA传输完成或传输被放弃和/或发生错误时,DMAC硬件清除状态寄存器的[CB]位;

A161.DMAC硬件判断模式寄存器的[EOSIE]位是否被置位,若是,则在完成该segment的DMA操作后触发一次中断;

A162.标识一次DMA传输完成。

其中,执行步骤A121的具体操作为:

内核驱动配置模式寄存器的[XFE]=0,[CTM]=1,[SRW]=0,[EMS_EN]=0。

如图3、本发明一实施例的链接模式DMA传输方法流程示意图所示,链接模式DMA传输在内核驱动上对应了DMA_MEMCPY和DMA_SG模式,DMA_SG模式应用于不连续的内存块的搬移,当一个内存块数据传输完成后,DMA自动加载下一个内存块的描述信息,这些内存块的描述信息包括物理地址、长度。目的地址块和源地址块都有这样的描述符。本发明实施例所提供的链接模式DMA传输操作方法的软硬件流程可包括以下步骤:

A201.内核驱动在内存中初始化一系列描述符,将所述描述符组织成link;

A211.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A221.内核驱动配置模式寄存器,标识DMA模式为链接模式;

A231.内核驱动写当前link描述符地址寄存器和当前link描述符扩展地址寄存器,指向内存中的第一个link描述符;

A241.内核驱动写模式寄存器的启动位[CS],置1;

A251.DMAC硬件置状态寄存器的[CB]位;

A252.DMAC硬件按照A231中设置,从内存中读取当前的link描述符,根据link描述符的内容更新源参数寄存器、源地址寄存器、下一link描述符地址寄存器和下一link描述符扩展地址寄存器,并按更新后的参数值进行当前segment的DMA操作;

A253.当前segment的DMA操作完成后,判断下一link描述符地址寄存器的[EOLND]位是否置1;若否,则根据下一link描述符地址寄存器和下一link描述符扩展地址寄存器更新当前link描述符地址寄存器和当前link描述符扩展地址寄存器,跳至A252;

A254.DMAC硬件清除状态寄存器的[CB]位;

A261.DMAC硬件判断模式寄存器的[EOLNIE]位是否被置位,若是,则在完成整个link的DMA操作后触发一次中断;

A262.标识一次DMA传输完成;

其中,当执行步骤A251,A252,A253时,若DMA传输被放弃或发生错误,则跳至A254。

其中,执行步骤A221时,包括以下具体步骤:

内核驱动配置模式寄存器的[XFE]=0,[CTM]=0,[CDSM]=0,[EMS_EN]=0。

在扩展链接模式下,除了可以将多个描述符组织成link外,还可以将多个link组织成list,以更加灵活的进行DMA操作。

如图4、本发明一实施例的扩展链接模式DMA传输方法流程示意图所示,在扩展链接模式下通过DMAC进行数据传输的具体步骤包括:

A301.内核驱动在内存中初始化一系列描述符,将多个描述符组织成link,多条link组织成list;

A311.内核驱动读通用状态寄存器,确认对应的DMA通道为idle状态;

A321.内核驱动配置模式寄存器,标识DMA模式为扩展链接模式;

A331.内核驱动写当前list描述符地址寄存器和当前list描述符扩展地址寄存器,指向内存中的第一个list描述符;

A341.内核驱动写模式寄存器的启动位[CS],置1;

A351.DMAC硬件置状态寄存器的[CB]位;

A352.DMAC硬件按照当前list描述符地址寄存器和当前list描述符扩展地址寄存器的设置,从内存中读取当前list描述符,根据当前list描述符的内容更新当前link描述符地址寄存器、当前link描述符扩展地址寄存器、下一list描述符地址寄存器、下一list描述符扩展地址寄存器、源跨步寄存器、目的跨步寄存器;

A353.DMAC硬件按照当前link描述符地址寄存器和当前link描述符扩展地址寄存器的设置,从内存中读取当前link描述符,根据当前link描述符的内容更新源参数寄存器、源地址寄存器、目的参数寄存器、目的地址寄存器、字节技术寄存器、下一link描述符地址寄存器和下一link描述符扩展地址寄存器;并按更新后的参数值进行当前segment的DMA操作;

A354.当前segment的DMA操作完成后,判断下一link描述符地址寄存器的[EOLND]位是否置1;若否,则根据下一link描述符地址寄存器和下一link描述符扩展地址寄存器更新当前link描述符地址寄存器和当前link描述符扩展地址寄存器,跳至A353;

A355.判断下一list描述符地址寄存器的[EOLSD]位是否被置1;若否,则根据下一list描述符地址寄存器和下一list描述符扩展地址寄存器更新当前list描述符地址寄存器和当前list描述符扩展地址寄存器,跳至A352;

A356.DMAC硬件清除状态寄存器的[CB]位;

A361.DMAC硬件判断模式寄存器的[EOLSIE]位是否被置位,若是,则在完成整个list的DMA操作后触发一次中断;

A362.标识一次DMA传输完成;

其中,当执行步骤A351,A352,A353,A354,A355时,若DMA传输被放弃或发生错误,则跳至A356。

其中,执行步骤A321时,包括以下具体步骤:

内核驱动配置模式寄存器的[XFE]=1,[CTM]=0,[CDSM]=0,[EMS_EN]=0。

以上各实施例基于飞腾处理器平台实现,可以完成内存-内存、LBC-内存以及PCIe-PCIe(peer to peer)的DMA操作。其具体参照标准可如下:

1、使用DMA直接传输模式做LBC到内存的数据搬移;

2、使用DMA直接传输模式做内存到内存的小数据量搬移;

3、使用DMA链接传输模式做PCIe到PCIe的数据搬移;

4、使用DMA扩展链接传输模式做内存到内存的大数据量搬移

以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1