k64 datasheet学习笔记22---Direct Memory Access Controller (eDMA)
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 内存映射和寄存器定义
- 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)的更多相关文章
- k64 datasheet学习笔记1---概述
1.前言 k64 datasheet描述了Freescale MCU的特性.架构和编程模型,主要是面向使用MCU的系统架构和软件应用开发人员. 2.模块划分 datasheet主要按功能对模块进行划分 ...
- k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之功能描述
1.前言 本文是对K64 datasheet 之ENET部分的功能描述,将对每个部分进行详细说明 2.Ethernet MAC frame formats MAC帧组成格式 (1)7字节前导码:如按最 ...
- k64 datasheet学习笔记4---Memory Map
1.前言 本文主要介绍K64地址空间的映射 2. System Memory Map 3. K64地址映射 4. Armv7m地址映射 4.1 Armv7M.System地址段(0XE0000000~ ...
- 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 ...
- k64 datasheet学习笔记45---10/100-Mbps Ethernet MAC(ENET)之概述
1.前言 k64 ENET CORE 实现了10M/100Mbps的Ethernet MAC,与IEEE802.3-2002标准兼容. MAC层与全双工/半双工的10M/100Mbps以太网兼容: M ...
- 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 ...
- k64 datasheet学习笔记4---Clock distribution
1.前言 本文主要讲述K64时钟配置相关的内容. 2.clock overview 2.1 clock diagram 2.2 对clock diagram的信号说明 (1)MCG决定哪个clock ...
- k64 datasheet学习笔记3---Chip Configuration之Analog
1.前言 本文主要讲述K64芯片配置,关于模拟部分的内容,主要包括:ADC, CMP, DAC, VREF 2.16bit SAR ADC 从上图可以看出ADC主要挂在外设总线0上,由于ADC的输入引 ...
- k64 datasheet学习笔记25--Multipurpose Clock Generator (MCG)
0.前言 MCG模块为MCU提供了几种可选时钟源.模块包含一个FLL和一个PLL.FLL使用内部或外部参考时钟是可控的,PLL受外部参考时钟控制 模块可以选择FLL或PLL输出时钟,或内/外部参考时钟 ...
随机推荐
- Spring:AOP面向切面编程
AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果. AOP是软件开发思想阶段性的产物,我们比较熟悉面向过程O ...
- SpringBoot 数据篇之使用JDBC
SpringBootTutorial :: Data :: Jdbc 简介 API execute update query 实战 配置数据源 完整示例 引申和引用 简介 Spring Data 包含 ...
- 微服务领域是不是要变天了?Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器!
引言 微服务这个词的热度自它出现以后,就一直是高烧不退,而微服务之所以这么火,其实和近几年互联网的创业氛围是分不开的. 与传统行业不同,互联网企业有一个特点,那就是市场扩张速度非常之快,可能也就是几天 ...
- 全国天气预报信息数据 API 功能简介与代码调用实战视频
此文章对开放数据接口 API 之「全国天气预报信息数据 API」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用,并对实战开发进行了视频演示. 1. 产品功能 接口开放了 ...
- Oracle SQLULDR2 以及 SQLLDR 进行导入导出的功能说明
Study From http://blog.itpub.net/28291944/viewspace-2142187/ 自己尝试了下 可以实现. 下载完sqluldr2,文件夹内容如下:sqluld ...
- Unit 6.标准文档流,浮动,清除浮动以及margin塌陷问题
一. 什么是标准文档流 文本流其实就是文档的读取和输出顺序,也就是我们通常看到的由左到右.由上而下的读取和输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而float和position两个 ...
- Shell命令-文件及内容处理之head、tail
文件及内容处理 - head.tail 1. head:显示文件内容头部 head命令的功能说明 head 命令用于显示文件头部内容,默认执行 head 命令会输出文件开头的 10 行. head命令 ...
- Visualize Code with Visual Studio
In this post, App Dev Manager Ed Tovsen spotlight the features and benefits of Code Maps in Visual S ...
- docker_weave
安装 curl -L git.io/weave -o /usr/local/bin/weave chmod a+x /usr/local/bin/weave 启动 weave weave launch ...
- Java【第八篇】面向对象之高级类特性
static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...