ARM之光(4)----DMA

发布者:AngelicWhisper最新更新时间:2017-01-17 来源: eefocus关键字:ARM  DMA 手机看文章 扫描二维码
随时随地手机看文章

    之所以要介绍S3C2410 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(字节)。

S3C2410的DMA支持四类DMA传输:

  • 系统总线到系统总线(ASB/AHB to ASB/AHB)

  • 系统总线到外设总线(ASB/AHB to APB)

  • 外设总线到系统总线(APB to ASB/AHB)

  • 外设总线到外设总线(APB to APB)。

S3C2410共有四条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

S3C2410 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).

S3C2410 DMA状态机:
S3C2410 的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,所以最后实际输出的电平与这里的描述是相反的。

S3C2410 DMA 的服务模式:
共有两种服务模式,一种是单一服务模式(single service),另外一种是整体服务模式(whole service)。
在单一服务模式下,不使用传统的DMA计数器,三个DMA状态被顺序执行一次后停止,等待DMA 请求再一次来临后再重新开始另一次循环。
在整体服务模式下,使用传统的DMA 计数器,状态机会停留在状态三,直到DMA计数器的值减为零,再回到状态一,等待下一次DMA请求。

S3C2410 DMA 数据传输模式:
共有两种数据传输模式:

  • 单位数据传输模式:执行一次读操作和一次写操作。

  • 并发数据传输模式:执行四次读操作和四次写操作。

S3C2410 DMA 的基本时序:
nXDREQ请求生效并经过2CLK周期同步后,nXDACK响应并开始生效,但至少还要经过3CLK的周期延迟,DMA控制器才可获得总线的控制权,并开始数据传输。

S3C2410 DMA 的两种协议模式:

  • 请求模式:If XnXDREQ remains asserted, the next transfer starts immediately. Otherwise it waits for XnXDREQ to be asserted.

  • 握手模式:If XnXDREQ is deasserted, DMA deasserts XnXDACK in 2cycles. Otherwise it waits until XnXDREQ is deasserted.

S3C2410 DMA REQ与ACK 协议类型:
共有三种协议类型:

  • 单一服务请求:

  • 单一服务握手:

  • 整体服务握手:

根据上面所说的服务模式和协议模式,很容易推知这三种协议的时序分别是什么。


关键字:ARM  DMA 引用地址:ARM之光(4)----DMA

上一篇:ARM之光(3)-----UART
下一篇:TQ2440开发板网络配置方式

推荐阅读最新更新时间:2024-03-16 15:30

Arm汇编 位置无关代码 adr 指令
adr r0, _start 得到的是_start的当前执行位置,由 pc+offset 决定的 得到有效地址 ldr r0, =_start 得到的是绝对的地址,链接时决定; ------------------------------------------------------------------------ /* 重定位Boot代码到RAM内存,将Boot代码从FLASH移到RAM中 */ relocate: /* relocate U-Boot to RAM */ adr r0, _start /* r0 - current position of code */ /*********************
[单片机]
Arm推出Mbed Edge延伸Mbed Cloud设备管理能力到物联网边缘
电子网消息,Arm宣布推出Mbed Edge,进一步拓展Mbed Cloud的设备管理能力,在边缘侧,即物联网网关上实现设备的接入、控制和管理。  网关在物联网网络中发挥着至关重要的作用,是本地连网设备(包含有线与无线设备)与云端之间的桥梁,通常在本地运行应用程序以实现设备控制。网关失效将对本地生产运营带来灾难性的后果,可能导致生产线停滞,甚至是关停风力发电机组。得益于Mbed Cloud新增的Mbed Edge能力,Mbed Cloud将能够实现三大功能,包括连接和管理异构连网设备、网关管理和诊断以及边缘计算。   协议转换:许多传统连网设备使用的通信协议与IP网络协议不兼容,比如 Modbus和BACnet,Mbed
[网络通信]
东芝基于Arm Cortex-M3且具备先进功能的低功耗微控制器
东京-- 东芝电子元件及存储装置株式会社(“东芝”)面向消费设备和工业设备推出“M3H族”微控制器,成功扩大其基于Arm® Cortex®-M的“TXZ™系列”微控制器的产品阵容。 该新微控制器目前已批量生产。 根据产品功能,M3H族分为两个产品组。“M3H族(1)”提供标准功能,而“M3H族(2)”提供更多封装和存储容量选项,并支持高速处理器(80MHz)。两个产品组共提供13种丰富的封装选项(32引脚至144引脚)和32KB-512KB的闪存。 M3H族基于全球标准的Arm Cortex-M3内核,专为电机控制而设计,可满足消费设备和工业设备的各种需求。M3H族(1)的工作频率高达40MHz;M3H族(2)的工作频率高达80
[工业控制]
东芝基于<font color='red'>Arm</font> Cortex-M3且具备先进功能的低功耗微控制器
基于ARM的车辆检测系统控制单元设计
   引言   由于交通需求的不断增加,有越来越多的环形感应线圈检测器用于交通检测。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的。通常高速公路车辆检测系统由多通道环形检测单元LD4和控制单元CCU组成,本文采用PHILIPS公司最新推出的ARM7内核微处理器LPC2114设计实现了车辆检测系统控制单元部分,并且和5个LD4环形检测器一起构成10通道高速公路车辆检测系统,其原理框图如图1所示。   
[应用]
基于ARM的全数字双闭环无刷直流电动机控制系统设计
传统的直流电机具有运行效率高、调速性能好等诸多优点因而在工业传动中占据着重要的地位,但其本身固有的机械换相器和电刷导致了电机容量有限、噪音大、容易产生火花和可靠性差等缺点。随着计算机技术和微电子技术的发展,无刷直流电动机用位置传感器和电子换相器取代了有刷直流电动机的电刷和机械换向器,同时很好的保持了传统直流电机的优点且具有比有刷直流电机更高的运行效率。因此直流无刷电机一经产生就在工业生产中取得了广泛的应用,尤其在节能减排已成为时代主题的今天,无刷直流电机高效率的特点更显示了其巨大的应用价值。 1 全数字双闭环直流调速系统简介 在稳态的情况下,直流电动机仅仅采用单闭环转速PI调节就可以在保证直流调速非常系统稳定的前提下实现转速没有静
[单片机]
基于<font color='red'>ARM</font>的全数字双闭环无刷直流电动机控制系统设计
ARM处理器出货量超过100亿个
  ARM宣布由其合作伙伴所出货的处理器总量已超过100亿个。ARM公司于1991年开发出其第一个嵌入式RISC内核——ARM6™处理器;如今,ARM公司的半导体合作伙伴所生产的基于ARM技术的处理器每年的出货量已近30亿个。   “ARM的合作伙伴截止目前的累计出货量,足以使地球上每一个人拥有一个以上的基于ARM技术的处理器。”ARM公司首席执行官Warren East表示。“共计100亿个基于ARM技术的处理器已投入使用,这是ARM发展历程中的一个重大里程碑,同时也体现了ARM®处理器架构被全球主要电子公司中的绝大部分所采用,并且用于最广泛的应用领域这一增长趋势。”   ARM处理器产品线覆盖了微处理器应用的每一个领域,从
[嵌入式]
ARM7嵌入式系统中Bootloader分析与设计
1.引言 作为一种16/32位的高性能、低成本、低功耗的嵌入式RISC(Reduced Instruction Set Computer)微处理器,ARM(Advanced RISC Machines )微处理器目前已经成为应用最为广泛的嵌入式微处理器 。在嵌入式系统开发中Bootloader常常是嵌入式系统开发中可能遇到的第一个技术难点。应用程序运行环境能否正确构建,内核能否启动成功,都取决于Bootloader能否正确的工作。一个功能完善的嵌入式系统Bootloader还要求能够提供系统更新的能力,以及为了实现这一操作所需要的一个简单的命令控制台。本文在基于ARM7-uClinux嵌入式系统的硬件平台和软件平台基础上,描述了系统
[单片机]
<font color='red'>ARM</font>7嵌入式系统中Bootloader分析与设计
基于ARM和Clinux的家庭网关系统
本文以ARM核的32位嵌入式微处理器作为硬件平台,结合无线通信技术,通过移植嵌入式操作系统mClinux,并在其上开发相应的驱动程序、应用程序和嵌入式Web服务器,实现了一个方便、实用的家庭网关。   系统的硬件设计   系统结构及工作原理   家庭网关的系统结构如图1所示,它以三星公司的32位RISC处理器S3C44B0X为核心,通过外扩存储器(Flash / SDRAM)、蓝牙模块、液晶显示屏、小键盘、以太网接口模块、电话语音控制模块和红外收发模块等来构建硬件平台,并可实现多种控制方式。 图1 家庭网关系统结构图   1) 在本地用键盘及显示器进行控制:系统设有16按键和一块128×32点阵的液晶显示器,便于用户
[单片机]
基于<font color='red'>ARM</font>和Clinux的家庭网关系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved