DMA学习笔记(一)

    DMA是DSP内的一个硬件模块,它独立于CPU在外围设备和内存之间进行数据传输,解放了CPU。每个型号的DSP有多个个DMA,每个DMA有一定数量的Channel。每个Channel两端分别绑定到外围设备和内存。每个Channel可与哪种外围设备绑定,这是在设计时固定下来的,要查询参考手册得知。

    在ADSP-SC589官方资料中给出了有关于DMA的五个例程,简单的介绍了在ADI中可以直接调用的一些DMA相关函数。

    例程分别是MemCopyOneShot1D(单步一维传输)、MemCopyOneShot2D(单步二维传输)、MemCopyArrayMode(块传输)、MemCopyListMode(链表传输)、MemCopyOneToMany(一到多传输)。具体程序的操作流程如下:

    1.在进行数据传输前,DSP需要先进行一系列初始化的配置,配置失败则报错

  

  2.在配置结束后打开一个DMA内存流,对传输的通道进行配置

    SC589中进行DMA传输的通道共有22条,其中有四条能作为内存传输

    

  3.对DMA是否开启回调模式进行配置。

  如果启用了回调模式,内存dma管理器将使用特定的事件id向应用程序发送回调,以报告内存复制的完成情况。

   在非回调模式下,该示例连续向内存dma管理器查询内存复制状态,并使用内存dma管理器来标识数据传输的结束。存储器dma流在数据传输完成时关闭。

  4.在DMA中所有传输都需要进行设置的基本参数有数据源地址、目标端地址和带传送数据的个数。

  如果想要将传输模式设置为二维模式要注意对于链路只有一个公共的DMA二维设置位,当设置为二维模式后所有的链路都变成了二维模式,如果想要使用一维模式,将外循环次数定为1即可。

  

    ADI可以直接用来调用的DMA传输函数:

    

    其中MemCopyOneShot1D、MemCopyOneShot2D为单步模式下的一维和二维DMA传输。

    单步模式下每次只能对一个单元的数据进行读或写操作。

    MemCopyArrayMode为块传输模式。不同于单步传输模式,块传输模式可以更改每次传输数据的大小,也可以选择一维或二维方式下进行传输。

    MemCopyListMode为链表传输模式。链式DMA的优点是能够让多个DMA自动进行传输,当配置好链式DMA的各块参数后,当第一个DMA传输技术后会自动启动第二个DMA,依次执行直到链中所有的DMA执行完毕。链式DMA省去了多次配置DMA参数的时间,也使得多个DMA的执行更加的紧凑。

   MemCopyOneToMany(一到多传输)为将数据从内存或单个字符串传输到多个位置,其实是基于链表传输的一种应用。

   5.检查传输是否已经完成

   

  6.检查传输后的数据是否正确,并关闭DMA通道

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PCIE-DMA是一种基于PCIe接口的直接内存访问技术,能够实现高速数据传输。在我的学习笔记中,我详细记录了与PCIE-DMA相关的知识和学习心得。 首先,我了解到PCIE-DMA技术的基本原理和作用。PCIE-DMA可以通过PCIe总线直接访问系统内存中的数据,而不需要过多的CPU干预,提高数据传输的速度和效率。这种技术在需要大量数据传输的场景下非常有效,比如高性能计算、数据采集等。 其次,我深入学习了PCIE-DMA的工作原理。PCIE-DMA的核心是DMA控制器,它负责管理和控制数据传输的流程。当设备需要读写内存中的数据时,它通过DMA控制器发送请求,然后DMA控制器生成一个事务,将数据直接传输到或从内存中。这样就大大减少了CPU的参与,提高了数据传输的效率。 另外,我还学习了PCIE-DMA的配置和编程方法。PCIE-DMA的配置主要包括硬件配置和软件配置两个部分。硬件配置通常涉及到DMA控制器和PCIe接口的初始化和配置,软件配置则需要编写驱动程序来驱动DMA控制器和处理数据传输过程中的事件和异常。这部分内容对于我来说还比较新颖,需要更多的实践和实践。 最后,我总结了PCIE-DMA的应用场景和发展前景。PCIE-DMA在高性能计算、数据采集等领域具有广阔的应用前景。随着数据量的不断增加和传输速度的要求越来越高,PCIE-DMA技术的需求也将越来越大。因此,对于我来说,学习掌握PCIE-DMA技术非常有价值。 通过学习和记录PCIE-DMA的相关知识和经验,我对这项技术有了更深入的理解和掌握。希望将来能通过应用PCIE-DMA技术解决实际问题,为科研和工程项目的顺利进行做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daijingxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值