0.前言

本文主要介绍DMA相关内容

1.简介

DMA模块包含:

1.一个DMA引擎

源和目的地址的计算

数据搬移

2.本地存储的传输控制描述TCD,对于16个传输通道中的每一个各对应一个TCD

1.1 总体框图

1.2 框图组件

1.DMA模块分为两个部分:DMA引擎和TCD

2.DMA引擎进一步分为4个子模块

3.TCD进一步分为两个部分

1.3 特性

  • 所有数据搬移都是基于两个地址
  • 16通道实现
  • TCD组织为嵌套的传输
  • 三个方法可以激活通道

(1)明确的软件启动

(2)为了连续传输,由通道到通道的链接机制启动

(3)外设硬件请求

  • 固定优先级和通道轮流
  • 通道传输完毕可以产生中断
  • 支持scatter/gatter机制
  • 支持复杂数据结构
  • 支持由软件取消传输

2 操作模式

3 内存映射和寄存器定义

  1. DMA编程模型主要包含两个区域:

(1)相关寄存器

(2)位于内存的TCD,每通道包含32字节,按通道号依次排放,每个TCD定义包含11个寄存器

每个通道需要32字节的TCD定义数据搬移操作。TCD被存放在本地内存,按照channel0  channel1 channel2...的顺序。

每个TCD都包含11个寄存器,寄存器大小是16bit或32bit

要在激活通道之前初始化TCD。

下面是TCD的结构:

4 功能描述

4.1 eDMA基本数据流

数据流被分为三个阶段:

4.2 Fault报告和处理

TODO

4.3 通道抢占

TODO

4.4 性能

TODO

5 初始化/应用信息

5.1 eDMA初始化

5.1.1 eDMA初始化

1.设置CR寄存器

2.设置DCHPRIn寄存器设置通道优先级

3.通过设置EEI 寄存器来使能错误中断

4.为每个通道写32字节TCD

5.设置ERQ寄存器来使能硬件请求

6.通过如下来发送请求服务

• Software: setting the TCDn_CSR[START]
• Hardware: slave device asserting its eDMA peripheral request signal

如下图所示,在没有CPU的干预下,一个DMA请求如何启动一个minor-loop传输。DMA仲裁可发生在每个minor loop后。

在一个major loop中minor loop的数目通过在BITER中指定

5.2 编程错误

TODO

5.3 仲裁模式

TODO

5.4 执行DMA传输的例子

5.4.1 单次请求

1.为了一次请求完成n字节的传输,通常设置major loop为1(TCDn_CITER = TCDn_BITER = 1)

2.通道服务请求得到回应且通道被选择执行后开启数据传输

3.传输完毕后TCDn_CSR[DONE] 备置位,如果中断使能的话会产生中断

4.举例:下面的TCD被配置成16字节数据用一次major迭代传输

(1)下面为TCD设置

(2)如上设置将产生如下的事件顺序

-用户写入TCDn_CSR[START] 请求DMA通道服务

-通道被仲裁选定开始服务

-TCDn_CSR[DONE] = 0, TCDn_CSR[START] = 0,TCDn_CSR[ACTIVE] = 1

-eDMA引擎从内存读取TCD写入到内部寄存器文件

-源到目的转换执行

-DMA引擎写TCDn_SADDR = 0x1000, TCDn_DADDR = 0x2000,TCDn_CITER = 1 (TCDn_BITER).

-DMA引擎写TCDn_CSR[ACTIVE] = 0, TCDn_CSR[DONE] = 1,INT[n] = 1

-通道退出,DMA进入idle或服务其它通道

5.4.2 多次请求

举例:与单次请求不同之处是传输32字节,通过两次major 迭代传输

(1)设置,与单次请求相比,则需要更改的部分如下,其它与单次请求相同:

(2)如上设置将产生如下的事件顺序

参考spec

5.4.3 Using the modulo feature

TODO

5.5 监控传输描述符状态

TODO

5.6 通道链接

TODO

5.7 动态编程

TODO

k64 datasheet学习笔记22---Direct Memory Access Controller (eDMA)的更多相关文章

  1. k64 datasheet学习笔记1---概述

    1.前言 k64 datasheet描述了Freescale MCU的特性.架构和编程模型,主要是面向使用MCU的系统架构和软件应用开发人员. 2.模块划分 datasheet主要按功能对模块进行划分 ...

  2. k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之功能描述

    1.前言 本文是对K64 datasheet 之ENET部分的功能描述,将对每个部分进行详细说明 2.Ethernet MAC frame formats MAC帧组成格式 (1)7字节前导码:如按最 ...

  3. k64 datasheet学习笔记4---Memory Map

    1.前言 本文主要介绍K64地址空间的映射 2. System Memory Map 3. K64地址映射 4. Armv7m地址映射 4.1 Armv7M.System地址段(0XE0000000~ ...

  4. k64 datasheet学习笔记21--Direct Memory Access Multiplexer (DMAMUX)

    0.前言 本章主要介绍DMA MUX的相关内容 1.简介 1.1 概述 用来路由DMA源到16路DMA通道: 1.2 特性 1.52个外设slot和10个常开slot可以路由到16路DMA通道 2.1 ...

  5. k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之概述

    1.前言 k64 ENET CORE 实现了10M/100Mbps的Ethernet MAC,与IEEE802.3-2002标准兼容. MAC层与全双工/半双工的10M/100Mbps以太网兼容: M ...

  6. k64 datasheet学习笔记52---Universal Asynchronous Receiver/Transmitter (UART)

    1.前言 UART实现与外设或CPU的通信 2. UART概述 2.1基本特性 (1)Full-duplex operation (2)Standard mark/space non-return-t ...

  7. k64 datasheet学习笔记4---Clock distribution

    1.前言 本文主要讲述K64时钟配置相关的内容. 2.clock overview 2.1 clock diagram 2.2 对clock diagram的信号说明 (1)MCG决定哪个clock ...

  8. k64 datasheet学习笔记3---Chip Configuration之Analog

    1.前言 本文主要讲述K64芯片配置,关于模拟部分的内容,主要包括:ADC, CMP, DAC, VREF 2.16bit SAR ADC 从上图可以看出ADC主要挂在外设总线0上,由于ADC的输入引 ...

  9. k64 datasheet学习笔记25--Multipurpose Clock Generator (MCG)

    0.前言 MCG模块为MCU提供了几种可选时钟源.模块包含一个FLL和一个PLL.FLL使用内部或外部参考时钟是可控的,PLL受外部参考时钟控制 模块可以选择FLL或PLL输出时钟,或内/外部参考时钟 ...

随机推荐

  1. Spring:AOP面向切面编程

    AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果. AOP是软件开发思想阶段性的产物,我们比较熟悉面向过程O ...

  2. SpringBoot 数据篇之使用JDBC

    SpringBootTutorial :: Data :: Jdbc 简介 API execute update query 实战 配置数据源 完整示例 引申和引用 简介 Spring Data 包含 ...

  3. 微服务领域是不是要变天了?Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器!

    引言 微服务这个词的热度自它出现以后,就一直是高烧不退,而微服务之所以这么火,其实和近几年互联网的创业氛围是分不开的. 与传统行业不同,互联网企业有一个特点,那就是市场扩张速度非常之快,可能也就是几天 ...

  4. 全国天气预报信息数据 API 功能简介与代码调用实战视频

    此文章对开放数据接口 API 之「全国天气预报信息数据 API」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用,并对实战开发进行了视频演示. 1. 产品功能 接口开放了 ...

  5. Oracle SQLULDR2 以及 SQLLDR 进行导入导出的功能说明

    Study From http://blog.itpub.net/28291944/viewspace-2142187/ 自己尝试了下 可以实现. 下载完sqluldr2,文件夹内容如下:sqluld ...

  6. Unit 6.标准文档流,浮动,清除浮动以及margin塌陷问题

    一. 什么是标准文档流 文本流其实就是文档的读取和输出顺序,也就是我们通常看到的由左到右.由上而下的读取和输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而float和position两个 ...

  7. Shell命令-文件及内容处理之head、tail

    文件及内容处理 - head.tail 1. head:显示文件内容头部 head命令的功能说明 head 命令用于显示文件头部内容,默认执行 head 命令会输出文件开头的 10 行. head命令 ...

  8. Visualize Code with Visual Studio

    In this post, App Dev Manager Ed Tovsen spotlight the features and benefits of Code Maps in Visual S ...

  9. docker_weave

    安装 curl -L git.io/weave -o /usr/local/bin/weave chmod a+x /usr/local/bin/weave 启动 weave weave launch ...

  10. Java【第八篇】面向对象之高级类特性

    static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...