首页 > 其他分享 >ARM DMA Controller PL330 使用经验分享

ARM DMA Controller PL330 使用经验分享

时间:2023-05-19 14:55:58浏览次数:40  
标签:DMA 请求 DMAC PL330 接口 Controller 指令 AXI

总体简介

DMAC提供一个AXI主接口来执行DMA传输,并提供两个APB从接口来控制其操作。DMAC采用TrustZone技术,其中一个APB接口运行在secure状态,另一个运行在非secure状态。 secure策略是ARM的TrustZone技术一部分。
整个DMA操作受一个小的指令集控制,这是与传统链表BD模式的不同之处。
image
image
由图中可以看出,其支持外设如UART或者GPIO主动trigger发起。

主要特性

▲AXI、APB接口
▲支持mem2me,mem2perh,perh2mem
▲支持scatter-gather BD模式
▲通道security可配
▲丰富的中断/事件源

可配置

AXI数据线宽度
通道数配置
内部buffer深度配置
读指令队列深度
写指令队列深度
外设请求接口数量
中断/事件数量

DMAC Diagram

image
DMAC里面包含一个指令处理模块,指令被存储在指令cache中。最多可以配置为8个通道,每个通道都可以执行一个独立的DMA操作,每个通道线程之间采用轮询仲裁。
MFIFO用于存储读/写的数据
读指令队列深度、写指令队列深度、MFIFO的深度会影响DMA的效率
apb接口可以访问状态寄存器也可以执行DMAC中的指令
apb的地址空间被限定在4KB

接口及功能

apb的时钟与axi为同一个时钟域,且接同一个时钟,但是其提供一个pclken可以控制apb的时钟速率,pclken必须是aclk的整数分频。
DMAC不支持独占或者lock访问,arlock[1:0]、awlock[1:0]需要tie low;不支持wrapping操作,arburst[1]、awburst[1]需要tie low;awcache[2],awcache[3]需要tie low;
ID_MSB与通道数量关联。DATA_MSB和STRB_MSB与配置的数据宽度关联。AWID、WID、ARID将于channel num关联起来,比如通道4发出的请求,其ID将为b100
DMAC会控制ARLEN和ARSIZE根据指令的长度和总线宽度的关系。
指令缓存长度≤AXI数据总线宽度
•ARLEN = 1
•ARSIZE = 以字节为单位的指令缓存长度。

指令缓存长度> AXI数据总线宽度
•ARLEN = 以字节为单位的指令缓存线长度与AXI数据总线宽度之比
•ARSIZE = 以字节为单位的AXI数据总线宽度。

image
用于设置DMAC的boot地址,boot_from_pc用于指示DMA manager的状态是stopped或exccuting
指令、source data、dst data都是从一个AXI走。
单channel内部带watchdog 防止过长占用总线

DMAC使用前,需要进行一系列软件初始化,这个就不再展开。
image
外设请求接口主要采用valid和ready握手协议
drtype[1:0]:
single传输请求
burst传输请求
承认flush请求
datype[1:0]:
single传输完成
busrt传输完成
flush请求
外设请求可以被mapping到任意的DMA channel去

DMA分通道线程和管理线程

一些禁止操作

边界不能跨越4K
不能出现wrapping burst
DMAC不支持非对齐的fix burst
不能发起一次资源长度大于MFIFO的请求,有可能会导致watchdog abort

通过使用得出,ARM的DMA与自身的平台耦合过深,只能用于ARM平台的IP开发

标签:DMA,请求,DMAC,PL330,接口,Controller,指令,AXI
From: https://www.cnblogs.com/light-weight-ip/p/17414738.html

相关文章

  • Podman基本命令
      Podman是一个功能齐全的容器引擎,它是一个简单的无需守护的用来管理镜像、容器的工具。Podman提供了一个与DockerCLI兼容的操作方式,简单地说:aliasdocker=podman。大多数Podman命令都可以普通用户运行,而无需其他额外的权限。仓库=》镜像=》容器的关系:仓库:用来提供/存放镜像......
  • MATLAB仿真dscdma直接序列扩频通信系统 仿真过程使用不同的扩频码对发送
    MATLAB仿真dscdma直接序列扩频通信系统仿真过程使用不同的扩频码对发送信息进行扩频,扩频码可以使m序列或Glod序列,由自己选择,扩频后的数据经过脉冲成形滤波器后通过瑞丽衰落信道同时到达接收端,在接收端分别对不同的用户信息数据进行相关解扩,恢复各个用户的原始信息。ID:6710644052......
  • Jmeter部署到Linux实现分发压测时,controller机器回收测试报告时卡死
    问题检查与定位:检查slave-A和slave-B两台执行机,执行机已经finished,无报错,说明执行机已完成测试任务采集到的日志批量分析后得出的结论:在完成并发测试后,vuser要进行释放,由于没有完全释放导致controller机器一直等待(像卡死),而实际上是等待,问题定位后,进行检查发现:问题1: reportge......
  • AMD Xilinx AXI Interrupt Controller 中断优先级
    中断优先级AXIInterruptController支持中断优先级。在VivadoBlockDesign中,bit-0连接的中断优先级最高,越靠近bit-0的中断优先级最高。AXIInterruptController的手册pg099中的描述如下:Prioritybetweeninterruptrequestsisdeterminedbyvectorposition.Theleas......
  • flutter系列之:使用AnimationController来控制动画效果
    目录简介构建一个要动画的widget让图像动起来总结简介之前我们提到了flutter提供了比较简单好用的AnimatedContainer和SlideTransition来进行一些简单的动画效果,但是要完全实现自定义的复杂的动画效果,还是要使用AnimationController。今天我们来尝试使用AnimationController来......
  • Intel(R) Ethernet Controller X710驱动升级
    环境CentOSLinuxrelease7.9.2009(Core)升级先查看原驱动版本[root@xcdcs~]#lspci|grepnet01:00.0Ethernetcontroller:IntelCorporationEthernetControllerX710for10GbESFP+(rev02)01:00.1Ethernetcontroller:IntelCorporationEthernetController......
  • 3dmax正常卸载方法
    1.卸载在系统中搜索找到这个工具(低版本如果没有或者没找到,请在控制面板或者360或者腾讯管或者用你能想到的卸载工具进行卸载)勾选你需要卸载的版本2.删除历史文件删除以下文件夹里对应的max版本文件夹,不然重装后就和没卸载一样max根目录如果你修改了就自行找到安装目录C......
  • STM32_8(DMA)
    DMADMA(DirectMemoryAccess)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发存储器和存储器之间的数据转运用软件触发,外设到存......
  • SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕
    场景在编写Controller接口时,为避免接口因为未知的异常导致返回不友好的结果和提示。如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。 可以对Controller进行全局的异常捕获和处理,一旦发生异常,则返回通用的500响应码与通用错误提示。并将异常发生的具体的......
  • Solar_Charge_Controller:基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型
    Solar_Charge_Controller:基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型。其中,光伏MPPT控制采用扰动观测法(P和O法),蓄电池充电采用三阶段充电控制。仿真模型附加一份仿真说明文档,便于理解和修改参数。仿真条件:MATLAB/SimulinkR2015bID:8960649953263742......