ARM的DMA-330控制器简述

1.背景介绍

DMA即,direct memory access直接存储器访问,ddr内存与外设相对于cpu的core来说速度是很慢的,在内存复制数据的过程中、或者外设的数据复制等操作中,core无法做其他事情,只能等待数据复制完成才能干其他的。
总结来说:
1.是外设和内存太慢了(相对core来说),cpu的core在数据复制过程中占据了core的资源,
因此设计了一种可以直接进行数据传输的器件,就是DMA,当然DMA的传输也是需要core给指令的。
2.cpu的core给DMA发数据传输指令,DMA执行数据传输,此时cpu可以做其他的事件。

2.DMA-330的框图

通过Amba总线,实现了arm处理器的片内设备的连接,即片内总线,cpu可以作为amba的master控制总线的设备进行数据传输。
先考虑下这个问题
dma如何才能不用cpu可以进行数据传输?
说的简单了就是自己接管amba总线,在dma接管的时候,cpu是无法占用总线的。
在这里插入图片描述
现在来分析以上图,可以看见,DMAC是直接与amba的axi和apb接口进行连接,获得amba的接管权限,就可以做数据传输的事了。

2.1 DMA的数据传输方向

dma支持三种数据传输的方向:
1.内存到内存
2.外设到内存
3.内存到外设
如果理解了DMA接管了AMBA总线,那么数据搬移工作便容易理解了。

3.DMA的寄存器

arm供提供了4k的地址供DMA控制器进行使用,主要分为:
在这里插入图片描述
1.Control registers 控制寄存器
使用控制寄存器用来控制DMAC
2.DMA channel thread status registers 通道状态寄存器
用来查看dma通道的状态信息
3.AXI and loop counter status registers
4.Debug registers
5.Configuration registers 配置寄存器
6.Component ID registers

4.DMA的指令集

arm为dma控制器提供了相应的指令进行操作,所以dma更像是一个协处理器,只不过它的作用是用来做数据传输用的。
在这里插入图片描述

5.参考资料

DDI0424D_dma330_r1p2_trm

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值