首页 > 其他分享 >dw_axi_dmac简介

dw_axi_dmac简介

时间:2024-03-24 14:23:57浏览次数:28  
标签:DMA dmac 传输 block dw axi CPU 外设 dma

参考资料: https://blog.csdn.net/as480133937/article/details/104927922 【ARM AMBA AXI 入门 2 - AXI协议中的BURST】 AXI3/4协议_axi3协议-CSDN博客 【注】:关于dw_axi_dmac的理解是我个人理解,无法保证理解的正确性   基本概念: DMA:全称direct memory access,即直接存储器访问。dma可以在中央处理器CPU不参与的情况下,实现外设和内存之间的数据直接传输,从而提高数据传输效率 0   外设与计算机内存之间的数据传输,一般可通过程序查询方式和中断方式进行

  1. 在程序查询方式时,CPU要反复测试外设状态,在外设未准备好的情况下,CPU就处于等待状态,直到外设准备好,才进行数据传送
  2. 中断方式下,每实现一次数据传送,CPU都要进入中断处理程序、保护断点、保护现场、恢复现场、返回主程序的操作
这两种方式都是在CPU的控制下,通过CPU执行指令来完成的。数据传送方向为外设->CPU->内存。这两种方式没传送一字节都需要耗用较长时间   使用CPU搬运外设数据的缺点:
  • CPU的工作速度与外设的工作速度相差很大,降低系统的效率
  • CPU操作一次总线只能进行一次存取
  • 搬运数据时需要先把数据放在寄存器,然后再从寄存器搬到另一个地址
  • 外设数据类型繁多,CPU无法直接存取,需要进行格式转换
  使用DMA搬运数据的效果:
  • 多通道同时可以传输,提高搬运效率
  • 基于burst类型传输,操作一次总线可进行多个数据的读写
  • 搬运外设数据时,数据可先存放在通道内部的fifo,再转发
  • 可以根据外设的数据格式设置后进行读写搬运数据
  DMA概念介绍: 1、源外设:DMA搬运数据的起点,读取数据的地方 2、目的外设:DMA搬运数据的终点,写入数据的地方 3、通道channel:DMA多个通道,每个通道配置后都可以进行数据的搬运。可理解为传输数据的管道 4、master接口:作为master访问读写数据的接口,一般使用AXI接口 5、slave接口:CPU读写配置DMA的接口,一般使用AHB或者APB 6、硬件握手:外设与DMA交互时的握手信号,例如dma_req、dma_single、dma_last等信号 7、流控:决定DMA传输中,传输的数据量、传输结束的控制信号等   数据流向简介: 下图展示的是源外设到目的外设的数据流向: 0 1、CPU通过APB/AHB总线将DMA具体的配置进行配置,上图选择channel0,通过AHB配置传输的源地址、目的地址、传输的数据量等 2、源外设,发送DMA握手信号之后,DMA才会启动传输,在此之前会等待硬件握手信号   传输层次 针对非内存外设的DMA传输层次结构: 0 DMA传输中,分为block为传输,对应的就是Block Transfer level,DMA Transaction Level的Burst Transaction指的是外设配置的channel CTL寄存器中的msize,会根据msize的设置进行burst/signal传输;AMBA Transfer Level相当于AXI总线传输层次上面的,这个跟arlen/awlen的设置相关。如果想自己设置可通过channel CTL寄存器中的awlen/arlen设置,如果没设置或者设置异常则会由dma随机设置。 针对内存外设的DMA传输层次结构: 0   传输类型: DMA的作用就是实现数据的直接传输,主要涉及四种情况的数据传输。四种传输情况如下: 1、外设到内存 2、内存到外设 3、外设到外设 4、内存到内存 上面四种传输情况,可根据具体的使用情况分为两种流控方式:DMA流控、外设流控   DMA硬件握手信号: 1、dma_req:外设burst请求信号 2、dma_singal:外设single请求信号 3、dma_last:外设流控时信号有效,指示此次传输为最后一次burst/single传输 4、dma_ack:dma回应外设信号 5、dma_finish:dma传输完成信号   0 当DMA流控的时候,dma_last信号是会被忽略的,会根据block_ts传输完成之后,就会给外设发出dma_finish信号,表示传输完成 当外设流控的时候,当外设传输最后一块数据时,就发送dma_last信号给到DMA,DMA收到dma_last信号就知道传输的是最后一块数据,传输完成之后发送dma_finish信号给到外设,表示传输完成 0   DMA传输类型: DMA single block: contiguous:连续地址访问的方式,按照地址递增的方式传输数据   DMA multi blocks传输: shadow register:阴影寄存器方式,block传输之前会将信息重新从寄存器中读取再进行传输 auto-reload:自动重载方式,每一个block传输开始前重新加载初始传输信息,重新传输 lllp:链表方式进行multi-block类型传输时,下一个block传输的信息会存储在链表指向的地址中     对DMA不同传输方式的理解: 1、contiguouts进行源地址、目的地址递增的数据传输,最常见的就是读写memory的方式 2、atuo-reload是传输完成之后又会回到起始状态,加载的数据量、源地址和目的地址都不变 3、shadow和llp都需要将传输block信息配置好,区别是llp要分配一块内存,但可以构造较多的即将传输的block信息,shadow不会用到系统内存,但只能提前构造下一块传输的block信息 4、llp模块可以静态创建一块链表,也可以动态扩展    

标签:DMA,dmac,传输,block,dw,axi,CPU,外设,dma
From: https://www.cnblogs.com/lethe1203/p/18092378

相关文章

  • C# 异步控件 backgroundWorker
    //.net4.8WinformusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Threading......
  • SOLIDWORKS二次开发的优势和价格 慧德敏学
    在当今数字化时代,各行各业都在不断追求创新和效率的提升。作为一款广泛应用于工程设计领域的软件,SOLIDWORKS在市场上占据着重要地位。然而,对于一些特定行业的用户来说,SOLIDWORKS的功能可能无法完全满足他们的需求。为了解决这个问题,SOLIDWORKS提供了二次开发的功能,让用户能够根据......
  • P10173 「OICon-02」maxiMINImax
    P10173「OICon-02」maxiMINImax首先观察所求的式子,我们可以很容易发现\(\min_{[l_2,l_2]}>\max(\max_{[l_1,r_1]},\max_{[l_3,r_3]})\),否则贡献一定为\(0\)。此时如果要考虑枚举其中一个区间,我们肯定选择中间的\([l_2,r_2]\),但是这样复杂度仍然至少是\(O(n^2)\)。我们思考......
  • Maximum Sum(Round 936)
    #include<bits/stdc++.h>#defineendl'\n'usingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();constllmod=1e9+7;llmaxSum(vector<ll>a,intw){llsum=0;llb=0;for(inti......
  • vue3 + ts +element-plus + vue-router + scss + axios搭建项目
    本地环境:node版本:20.10.0目录一、搭建环境二、创建项目三、修改页面四、封装路由vue-router五、element-plus六、安装scss七、封装axios一、搭建环境1、安装vue脚手架npmi-g@vue/cli2、查看脚手架版本vue-V3、切换路径到需要创建项目的地方二、创建......
  • Vue学习笔记56--vue常用Ajax库(axios)
    vue常用Ajax库:1.vue-resource插件库npmivue-resource使用方式略,不建议使用,vue1.x使用广泛,官方已不维护2.axios通用的Ajax请求库,官方推荐,使用广泛axios在Vue项目中可以用来向后台发送请求(调接口API),获取响应信息的一个方法。Axios 是一个基于 promise 的 HTTP 库,可以......
  • 论文精读系列文章——Point-LIO: Robust High-Bandwidth Light Detection and Ranging
    论文精读系列文章下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此论文精读系列文章链接下面是专栏地址:论文精读系列文章专栏文章目录论文精读系列文章论文精读系列文章链接论文精读系列文章专栏前言论文精读系列文章——......
  • AXI Memory Mapped to PCI Express学习笔记(二)——PCIe中断
    AXIMemoryMappedtoPCIExpress IP核的中断包括Local中断,MSI中断和 Legacy中断。1Local中断   在配置AXI桥接器时,中断输出(interrupt_out)引脚可以根据中断掩码寄存器(InterruptMaskregister)的设置来发送中断。这个中断输出引脚会向连接到桥接器内存映射AXI4侧......
  • AWS EC2 实例和本地服务器配置 Amazon CloudWatch 代理
    为什么需要Cloudwatch代理本地服务器?统一的监控视图,高级数据分析和可视化,自动化的响应,简化日志管理,提高可靠性和可用性,符合合会性要求这样子做有什么好处?集中监控:CloudWatch代理使能够将本地服务器的监控数据,(如CPU使用率、内存消耗、网络流量和应用程序日志)发送到CloudW......
  • LeetCode 1161. Maximum Level Sum of a Binary Tree
    原题链接在这里:https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/description/题目:Giventhe root ofabinarytree,thelevelofitsrootis 1,thelevelofitschildrenis 2,andsoon.Returnthe smallest level x suchthatthesumofa......