之所以要介绍DMA,因为它对性能太重要了!只有活用了DMA,CPU的性能才能上去!S3c2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同,具体见Datasheet。
这里具体DMA CONTROL寄存器(DCON)的配置说明,进而引出DMA的各种工作方式。
Atomic transfer:指的是DMA的单次原子操作,它可以是Unit模式(传输1个data size),也可以是burst模式(传输4个data size),具体对应DCON[28]。
Data Size:指的是单次原子操作的数据位宽,8、16、32,具体对应DCON[21:20]。
Request Source:DMA请求的来源有两种,软件&硬件模块,由DCON[23]控制;当为前者时,由软件对DMASKTRIG寄存器的位0置位触发一次DMA 操作。当为后者时,具体来源由DCON[26:24]控制,不同硬件模块的某时间触发一次DMA操作,具体要见不同的硬件模块。
DMA service mode:DMA的工作模式有两种,单一服务模式&整体服务模式。前一模式下,一次DMA请求完成一项原子操作,并且transfer count的值减1。后一模式下,一次DMA请求完成一批原子操作,直到transfer count等于0表示完成一次整体服务。具体对应DCON[27]。
RELOAD:在reload模式下,当transfer count的值变为零时,将自动加src、dst、TC的值加载到CURR_DST、CURR_SRC、CURR_TC,并开始一次新的DMA传输。该模式一般和整体服务模式一起使用,也就是说当一次整体服务开始后,src、dst、TC的值都已经被加载,因此可以更改为下一次服务的地址,2410说明文档中建议加入以下语句来判断当前的服务开始,src、dst、TC的值可以被更改了:while((rDSTATn & 0xfffff) == 0) ;
Req&Ack:DMA请求和应答的协议有两种,Demard mode 和 Handshake mode。两者对Request和Ack的时序定义有所不同:在Demard模式下,如果DMA完成一次请求如果Request仍然有效,那么DMA就认为这是下一次DMA请求;在Handshake模式下,DMA完成一次请求后等待Request信号无效,然后把ACK也置无效,再等待下一次Request。这个设计外部DMA请求时可能要用到。
传输总长度:DMA一次整体服务传输的总长度为:
Data Size × Atomic transfer size × TC(字节)。
2410的DMA支持四类DMA传输:系统总线到系统总线(ASB/AHB to ASB/AHB),系统总线到外设总线(ASB/AHB to APB),外设总线到系统总线(APB to ASB/AHB),外设总线到外设总线(APB to APB)。
2410共有四条DMA通道,每条通道5个请求源。
Ch0:nXDREQ0,UART0,SDI,Timer,USB EP1
Ch1: nXDREQ1,UART1,I2SSDI,SPI0,USB EP2
Ch2:I2SSDO,I2SSDI,SDI,Timer, USB EP3
Ch3:UART1,SDI,SPI1,Timer, USB EP4
2410 DMA 三个比较重要的信号,引用2410官方文档:
DMA REQ: In the Single service mode, these three states of main FSM are performed and then stops, and waits for another DMA REQ. And if DMA REQ comes in, all three states are repeated.
DMA ACK: DMA ACK is asserted and then deasserted for each atomic transfer. In contrast, in the Whole service mode, main FSM waits at state-3 until CURR_TC becomes 0. Therefore, DMA ACK is asserted during all the transfers and then deasserted when TC reaches 0.
INT REQ: INT REQ is asserted only if CURR_TC becomes 0 regardless of the service mode (Single service mode or Whole service mode).
2410 DMA状态机:
2410 的DMA使用一个具有三个状态的有限状态机进行DMA 传输的流程控制,引用2410官方文档:
State-1. As an initial state, the DMA waits for a DMA request. If it comes, it goes to state-2. At this state, DMA ACK and INT REQ are 0.
State-2. In this state, DMA ACK becomes 1 and the counter (CURR_TC) is loaded from DCON[19:0] register. Note that the DMA ACK remains 1 until it is cleared later.
State-3. In this state, sub-FSM handling the atomic operation of DMA is initiated. The sub-FSM reads the data from the source address and then writes it to destination address. In this operation, data size and transfer size(single or burst) are considered.
每当一次DMA操作结束,不管是使用什么服务模式,DMA状态机都会自动地从状态三回到状态一,开始另一次操作。注意这里信号是DMA REQ 和 DMA ACK,而最终引脚信号是nXDREQ 和 nXDACK,所以最后实际输出的电平与这里的描述是相反的。
2410 DMA 的服务模式:
共有两种服务模式,一种是单一服务模式(single service),另外一种是整体服务模式(whole service)。
在单一服务模式下,不使用传统的DMA计数器,三个DMA状态被顺序执行一次后停止,等待DMA 请求再一次来临后再重新开始另一次循环。
在整体服务模式下,使用传统的DMA 计数器,状态机会停留在状态三,直到DMA计数器的值减为零,再回到状态一,等待下一次DMA请求。
2410 DMA 数据传输模式:
共有两种数据传输模式:
单位数据传输模式:执行一次读操作和一次写操作。
并发数据传输模式:执行四次读操作和四次写操作。
上一篇:s3c2440学习系列6(dma 续)
下一篇:S3C2410 DMA原理与实例
推荐阅读最新更新时间:2024-11-11 10:39
推荐帖子
- 参与问卷调查赢好礼:罗德与施瓦茨-车载以太网及其一致性测试方案 回馈您的需求!
- 观看罗德与施瓦茨-车载以太网及其一致性测试方案的精彩视频,你不可错过的精华都在这里。活动详情罗德与施瓦茨-车载以太网及其一致性测试方案回馈您的需求看视频有好礼活动时间:即日起-2017年11月05日活动流程:1、观看车载以太网及其一致性测试方案的精彩视频;2、点击“立即参与”按钮,参与问卷调查,即有机会获赠精美礼品。(共50份)活动奖品:参与问卷调查赢好礼:罗德与施瓦茨-车载以太网及其一致性测试方案回馈您的需
- EEWORLD社区 测试/测量
- motorola 锁相环PLL教材
- 很不错的资料,拿出来分享一下,回帖我再发新的内容motorola锁相环PLL教材我的金币都不够用了Re:motorola锁相环PLL教材
- netkernel 模拟电子
- 51键盘扫描问题
- 我的学习板上是3*3的键盘,数码管位选是直接接P2口的,我的目的是按几数码管就显几,不按的时候就不显,但现在发现我按几是显示了几,但不按的时候数码管还是有显示程序如下,看看问题出在哪,有位高手说要用定时动态扫描,能不能具体说下#includereg52.h#defineuintunsignedint#defineucharunsignedcharsbitdig1=P2^0;sbitdig2=P2^1;sbitdig3=P2^2;sbitdig4=P2
- zjjone1023 51单片机
- 在交流固态继电器输出串一个整流二极管可用来控制直流电机
- 原先一直担心这种接法不能用:交流固态继电器(非增强型)是双向可控硅输出的,串上一个二极管后输出原理上是输出脉动的直流(半波),原理上相当与单向可控硅输出的方式,因为没实际做实验,所以老感觉有什么地方不踏实,今天我用电灯炮做负载,用示波器看了负载波形,是半波的脉动直流,这下总算安心了,可惜没有直流电机,不然就试试控制电机调速怎么样(这种脉动的直流当然对电机的损坏要比直流电大,一般的应用不考虑损耗的话是可以用的。)以后还是多多做实验啊,这样会更安心点。在交流固态继电器输出串一个整流二极管可用来控
- gsy 工控电子
- 保持电源系统中高效可靠的设计方案
- DC-DC转换器输入端的电容在保持转换器稳定性方面发挥着重要的作用,并有助于滤除输入端的电磁干扰(EMI)。DC-DC转换器输出端的大电容则会给电源系统带来艰巨的挑战。DC-DC转换器的许多下游负载需要电容才能正确工作。这些负载可以是脉冲式功率放大器或输入端需要电容的其它转换器。如果负载端的电容值超过直流电源系统设计能够处理的极限,电源系统的电流可能在启动和正常工作期间超出其最大额定值。电容还能引起电源系统的稳定性问题,导致错误的系统操作和过早的电源系统失效。 遇到给大电容负载供电
- fish001 模拟与混合信号
- 模拟设计为工程师软肋,教育缺失是根本
- 分析2304份有效调查问卷发现,工程师认为最具挑战性的设计前五位分别为EMI/EMC设计、射频设计、低噪声电路设计、信号处理和电源管理,分别占到受访工程师总数的42%、33%、30%、27%和24%,而EMI/EMC设计、射频设计、低噪声电路设计和电源管理都直接关系到模拟电路设计。模拟电路设计成为中国电子设计工程师面临的最大设计挑战。模拟电路设计挑战分析“模拟电路设计更像一门艺术而不是一门科学。”这是业界对模拟设计特点的高度总结,而艺术的东西是需要时间去沉淀的,本次参加调查的所有回复
- fighting 模拟电子
设计资源 培训 开发板 精华推荐
- LTC3895IFE 高效 140V 至 12V 降压转换器的典型应用电路
- AD8310-EVALZ,AD8310 评估板,快速、电压输出、DC 至 440 MHz、95 dB 对数放大器
- AM2G-2405SZ 5V 2 瓦 DC-DC 转换器的典型应用
- Thermal_sensor0.2
- EVAL-ADM1065LFEB,评估 ADM1065ACP 电压监控器排序器的评估板
- LT4275CHMS IEEE 802.3at (Type 2) 25.5W 受电设备的典型应用电路
- AKD4556-B,AK4556 24 位音频编解码器评估板
- LT3460ESC6-1 5V 至 12V 升压转换器的典型应用电路
- 单手小键盘
- LTC3130IUDC-1 5V 转换器的典型应用在收集能量的打嗝式模式下运行