ARM DMA Controller PL330 使用经验分享

这篇具有很好参考价值的文章主要介绍了ARM DMA Controller PL330 使用经验分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总体简介

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

主要特性

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

可配置

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

DMAC Diagram

ARM  DMA Controller PL330 使用经验分享
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数据总线宽度。

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

DMAC使用前,需要进行一系列软件初始化,这个就不再展开。
ARM  DMA Controller PL330 使用经验分享
外设请求接口主要采用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开发文章来源地址https://www.toymoban.com/news/detail-450394.html

到了这里,关于ARM DMA Controller PL330 使用经验分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Floating UI 使用经验分享 - Dialog

    上文:Floating UI 使用经验分享 - Popover 在本文中,我将分享如何使用 Floating UI 来创建另一种常见的浮动 UI 组件—— Dialog(对话框) 。Dialog 是一个浮动元素,显示需要立即关注的信息,他会出现在页面内容上并 阻止与页面的交互 ,直到它被关闭。 它与弹出框有类似的交互,

    2024年02月15日
    浏览(28)
  • 【经验分享】如何使用VSCode对比两个文件

    当有两个不同版本的文件,如何使用VSCode对比两个文件 长按 ctrl 选择想要对比的两个文件-----右键选择 将已选项进行比较 ----大功告成 大功告成

    2024年02月07日
    浏览(47)
  • 手记系列之七 ----- 分享Linux使用经验

    本篇文章主要介绍的关于本人在使用Linux记录笔记的一些使用方法和经验,温馨提示,本文有点长,约1.7w字,几十张图片,建议收藏查看。 tail -500f catalina.out ctrl+c 或kill -9 pid 临时快捷键设置: 执行XShell,输入 : alias \\\'aa=cd /etc/sysconfig\\\' , aa: 快捷键名称 永久快捷键设置: 首先输入你

    2024年02月06日
    浏览(36)
  • 手记系列之五 ----- SQL使用经验分享

    CASE WHEN  意义: If(a==b) a=c; 用法:  1, CASE 字段 WHEN 字段结果1 THEN 字段显示结果1 WHEN 字段结果2 THEN 字段显示结果2 END  2, CASE WHEN 字段1=字段结果1 THEN 字段显示结果1 WHEN 字段2=字段结果2 THEN 字段显示结果2 END  意义: if(a==null) a=0; MySQL:IFNULL 用法:IFNULL(字段,0)别名 Oracle:NVL 用法:N

    2024年02月08日
    浏览(29)
  • 手记系列之六 ----- 分享个人使用kafka经验

    本篇文章主要介绍的关于本人从刚工作到现在使用kafka的经验,内容非常多,包含了kafka的常用命令,在生产环境中遇到的一些场景处理,kafka的一些web工具推荐等等。由于kafka这块的记录以及经验是从我刚开始使用kafka,从2017年开始,可能里面有些内容过时,请见谅。温馨提

    2024年02月08日
    浏览(35)
  • 前端远程调试方案 Chii 的使用经验分享

    Chii 是与 weinre 一样的远程调试工具 ,主要是将 web inspector 替换为最新的 chrome devtools frontend 监控列表页面可以看到网站的标题链接,IP,useragent,可以快速定位调试页面,监控页信息完善,支持https请求等,开发者工具能看到的都能看到。 本文主要介绍其使用,在电脑运行,

    2024年02月08日
    浏览(42)
  • 使用Unity开发手机AR项目经验分享

           AR技术发展到现在也不新鲜了,开发AR的SDK也是五花八门,怎么选择是个问题。这篇文章提供了一套整体开发AR思路,还有后续兼容性问题的解决思路。         Unity开发手机AR项目主要是集成的ARCore和ARKit,ARCore面向Android手机而ARKit面向IOS,从Unity2019后Unity官方使用

    2024年02月11日
    浏览(38)
  • Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

    大家好!最近有很多朋友询问我关于 Matlab 的使用,于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说,Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么,为什么 Matlab 这么受欢迎呢? MATLAB 是美国MathWorks 公司自2

    2024年02月10日
    浏览(30)
  • 基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

    设计需求 一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员 通过上位机发送各种不同指令,然后控制器解析指令后执行相应的伺服功能,其次控 制器将驱动信号传输至功率板驱动电机,最后控制器采集反馈信息进行闭环控制并上 传数据。 结

    2024年02月04日
    浏览(28)
  • 使用MQL4编写自己的交易策略:技巧与经验分享

    随着技术的发展,越来越多的投资者开始使用程序化交易系统进行交易,其中MQL4语言是广泛应用于MetaTrader 4平台上编写交易策略的一种语言。本文将分享一些技巧和经验,帮助读者利用MQL4编写自己的交易策略。 策略开发流程 首先,我们需要了解策略开发的流程。其基本流程

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包