S3C2410 DMA原理与实例(23M)

本文介绍了S3C2410处理器中的DMA工作原理,包括4种运行情况、传输协议、操作流程以及外DMA请求/应答协议。通过具体的初始化设置和中断服务程序示例,展示了如何配置DMA通道进行数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. DMA的含义:Direct Memory Acess ,可以不通过CPU而在DMA控制器的控制下,高速地和I/O设备和存储器之间交换数 据。

2.S3C2410A支持4通道DMA,在以下四种情况可运行

               ① 源设备和目标都在系统总线AHB上

② 源设备和目标都在外围总线APB上

③ 源设备在系统总线,而目标设备位于外围总线

④ 源设备在外围总线,而目标设备位于系统总线

3. 传输协议

① 单步模式:一次DMA传输有两个DMA应答周期(产生两个应答信号nXDACK)指示DMA读和写周期,主要用与测试和调试模式,在读写周期之前,总线控制权可以让给其他总线控制器

② 连续模式:一次DMA请求将产生连续的的DMA传输,直到规定的DMA传输数据传输完,在DMA传输周期间,nXDACK一直有效。DMA请求信号被释放。并且每次传输一个数据单元后,释放一次总线控制权,以让其他总线控制器有机会可以占有总线。

4. DMA操作

DMA使用三态FSM(有限状态机)进行操作,以下用三个步骤描述

State-1:初始状态,DMA等待DMA请求,若请求到达,进入状态2。此阶段,DMA AC和INT REQ 为0

State-2:DMA ACK 变为1,计数器CURR_TC的值从DCON[19:0 ]装载。DMA ACK保持1,直到它被清0

State-3:对DMA进行原子操作的sub-FSM(子状态机)进行初始化。sub-FSM 从源地址读取数据后将数据写入目标地址。对于这种操作方式,数据大小和传输大小应给予考虑。在整体服务方式中(whole service mode),这种操作重复直到计数器CURR_TC变为0,然而在单一模式中只进行一次。当子FSM完成每个原子操作,主FSM倒计CURR_TC。另 外,当CURR_TC为0 和中断设置DCON[29]为1时,主FSM发出INT REQ(中断请求信号),同时清除DMA ACK 假如以下任一种情况发生

          ① 在整体服务模式(Whole service mode)CURR_TC变为0

          ② 在单一模式(Single service mode)原子操作完成

              在单一模式,主FSM的三个状态进行后停止,等待另外的DMA REQ。如果DMA REQ到达,就重复三个状态。因此,DMA ACK被声明后进行每个原子操作。

相反,在整体服务模式(Whole service mode),主FSM在状态3等待直到CURR_TC变为0。所以DMA ACK 在传输区间被声明后进行原子操作当TC达到0时。

          有可能有些朋友对“原子操作”有疑问,我没有找到标准的定义,按我的理解就是操作不可间断,一定要完成这个操作才能进行另外的操作。 相反,在整体服务模式(Whole service mode),主FSM在状态3等待直到CURR_TC变为0。所以DMA ACK 在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值