DMA机制(基于S3C6410)

1.DMA概括

DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。上节我们做的串口驱动就是由CPU完成数据的传输的,现在我们打开DMA,让DMA去完成这项工作,这样就可以解放CPU,让CPU去做其他的事情。

2.关于DMA控制器

(1)通道数:6410有4个DMA控制器(初始化的时候要选择),每个控制器有8个通道,所以一共有32个通道。
(2)请求源:这里列出部分请求源,从图中可以看出每个串口源对应的控制器有两个DMAx和SDMAx,但是在实际中只能选择一个控制器来用,默认情况下使用SDMAx。
这里写图片描述
(3)基本时序
  nXDREQ请求生效并经过2CLK周期同步后,nXDACK响应并开始生效,但至少还要经过3CLK的周期延迟,DMA控制器才可获得总线的控制权,并开始数据传输
(4)工作模式:
•Demond模式:
如果DMA完成一次请求后如果Request仍然有效,那么DMA就认为这是下一次DMA请求,并立即开始下一次的传输
•Handshake模式:
DMA完成一次请求后等待Request信号无效,如果Request无效,DMA会无效ACK两个时钟周期,再等待下一次Request。

3.初始化DMA

DMA控制器的作用就是将内存中的数据放到串口中去,所以其实主要就是对源地址和目的地址的初始化。初始化工作分为以下几个步骤。

选择DMA控制器

由上文可知,使用串口时有两个控制器,但是只能用一个,这里引入SDMA_SEL寄存器。
这里写图片描述
因为使用串口0,选择SDMA控制器,所以应该选择SDMA_SEL寄存器中第0位,写入0即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值