28
第第第第 DMA/EDMA BIT / TI 1 第第第第 第第第第第第第 DMA/EDMA

第十四讲 直接存储器访问 DMA/EDMA

  • Upload
    berit

  • View
    141

  • Download
    3

Embed Size (px)

DESCRIPTION

第十四讲 直接存储器访问 DMA/EDMA. 内容简介. DMA EDMA 特点、机制 如何运用. 概述 — 直接存储器访问. From:To: 外部存储器片内数据存储器 片内数据存储器片内程序存储器 外部存储器. 传输的实现: CPU DMA. 概述 — 直接存储器访问. 为了建立任何一种方式的传输,我们需要:. 概述 — C6000 DMA. 概述 — C6000 DMA 特点. 后台操作,吞吐率高 四个通道,一个辅助通道 单通道分割( split-channel )操作 支持多帧 (frame) 传输方式 多种地址产生方式 - PowerPoint PPT Presentation

Citation preview

Page 1: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 1

第十四讲 直接存储器访问DMA/EDMA

Page 2: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 2

内容简介• DMA

• EDMA

• 特点、机制• 如何运用

Page 3: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 3

概述—直接存储器访问

From: To:外部存储器 片内数据存储器片内数据存储器 片内程序存储器外部存储器传输的实现:•CPU•DMA

Page 4: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 4

概述—直接存储器访问为了建立任何一种方式的传输,我们需要:

Page 5: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 5

概述— C6000 DMA

Page 6: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 6

概述— C6000 DMA 特点• 后台操作,吞吐率高• 四个通道,一个辅助通道• 单通道分割( split-channel )操作• 支持多帧 (frame) 传输方式• 多种地址产生方式• 32 位地址范围,支持 8-/16-/32-bit 字长• 传输支持自动初始化• 可以设定同步事件控制传输过程

Page 7: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 7

概述—控制寄存器• DMA 通道 0/1/2/3:

– 源地址寄存器 (32-bit)– 目的地址寄存器 (32-bit)– 主控寄存器– 副控寄存器– 传输计数寄存器 (16-bit/16-bit))

• DMA 全局地址寄存器 A/B/C/D• DMA 全局计数重装载寄存器 A/B• DMA 全局索引寄存器 A/B• DMA 辅助控制

Page 8: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 8

传输—启动

•程序启动–向主控制寄存器 START 域写入 00b ,停止当前通道–设定源地址–设定目的地址–设定传输个数–设置其他的有关模式,向 START 域写入 01b ,启动传输

•自动初始化方式启动–多次传输,只需设置一次

Page 9: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 9

传输—例子 ( 参数 )

C6201

DMA

DATAMEMORY

A/D

我们需要知道那些参数?

Page 10: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 10

传输—例子 ( 参数 )

源地址: A_D_SRC目的地址: DMEM_DST传输计数值: 200h源地址的方向: Inc/Dec/None目的地址的方向: Inc/Dec/None中断 CPU : Yes/No同步: Yes/No同步事件 A/D(RDY)利用: INT4/5/6/7

Page 11: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 11

传输—同步• 读同步• 写同步• 帧同步

事件号(二进制) 事件缩写 同步事件00000 NONE 没有同步事件00001 TINT0 定时器 0中断00010 TINT1 定时器 1中断00011 SD_INT EMIF SDRAM定时器中断00100 EXT_INT4 外中断 400101 EXT_INT5 外中断 500110 EXT_INT6 外中断 600111 EXT_INT7 外中断 701000 DMA_INT0 DMA通道 0中断01001 DMA_INT1 DMA通道 1中断01010 DMA_INT2 DMA通道 2中断01011 DMA_INT3 DMA通道 3中断01100 XEVT0 串口 0发送事件01101 REVT0 串口 0接收事件01110 XEVT1 串口 1发送事件01111 REVT1 串口 1接收事件10000 DSPINT 主机向 DSP发出的中断

10001[注] XEVT2 串口 2发送事件10010[注] REVT2 串口 2接收事件其它 保留

Page 12: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 12

传输—地址产生• 32-bit 地址寄存器• 地址的基本调整

– 递增 / 递减 / 固定不变• 索引值调整

– 16-bit 索引值– 帧索引和数据单元索引

SRC/DST ADDRESS

31 0

Page 13: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 13

传输—几种用法• 一帧传输个数 <65536• 多帧模式传输的数据最多可达 65536*655

36*4=16GB• 利用帧索引代替重载地址

– 例子:每帧从固定的外部地址移动 10 bytes ,在目的处彼此相距一个字节排列– 设置

• SRC DIR=00b (源固定)• DST DIR=11b (目的用索引调整)• ELEMENT INDEX=10b (以步幅 2 递增)• FRAME INDEX= -(9×2)= -18 =FFEEh

Page 14: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 14

传输—几种用法• 数据整序

Page 15: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 15

传输—分裂通道 & 辅助通道• 分裂通道模式

– 使得一个通道可以提供双向的数据流传输– 收发利用同一个计数器– 需要利用 DMA global address register 作为分裂地址控制

• 辅助通道– HPI 主机口专用

Page 16: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 16

后处理—状态与中断

Page 17: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 17

EDMA— 概述• 扩展的直接存储器访问,是 C6211/C6711 的独有特征• EDMA 控制器基于 RAM 结构• 增强之处

– 提供了 16 个通道– 由事件触发相应通道的传输– 通道优先级设置更加灵活– 可以实现数据传输的链接– 独特的快速 DMA(QDMA)

Page 18: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 18

EDMA — 框图

Page 19: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 19

EDMA — 传输类型• 数据单元( element )的传输• 帧( frame )的传输• 阵列( array )的传输• 块( block )的传输• 2- 维( 2-D )的传输• 非 2- 维( non 2-D )的传输

Page 20: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 20

EDMA — 结构

•16 组通道传输参数•69 组重加载参数•空闲区

Page 21: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 21

EDMA — 事件控制• 16 个通道,每个通道都有一个事件与之关联,由这些事件触发相应通道的传输• 由有关的控制寄存器完成对事件的不同处理

– ER/EER/ECR/ESR/PQSR/CIPR/CIER/CCER• 事件编码器

Page 22: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 22

EDMA — 参数 RAM参数 RAM ( Parameter RAM , PaRAM )的容量为2K byte ,其中存放 EDMA 的传输参数,以控制不同的传输行为。另外,参数入口还可以被彼此链接起来,以实现某些复杂数据流的处理事件参数事件 1的参数(6 words)事件 2的参数(6 words)……事件 14的参数(6 words)事件 15的参数(6 words)重加载/连接参数事件 N重加载/连接参数……事件 Z的重加载参数没用使用的区域Scratch pad area (2 words)

Page 23: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 23

EDMA — 传输链• 类似于 DMA 中的自动初始化

– 更灵活,参数可变– 便于实现某些复杂的数据传输的应用要求

• 传输链– 多种参数的 EDMA 传输过程相连接– 链的长度没有限制

• 在传输链中,一次传输的结束会导致自动从参数 RAM 中装载下一次事件应用的传输参数

Page 24: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 24

EDMA — 传输链参数重加载•16-bit 的链接地址和 LINK 位控制链接•链中的参数都是对应同一个事件触发的传输过程•参数一般互不相同

Page 25: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 25

EDMA — 中断• 通道传输结束可以产生中断— EDMA_INT• 16 个通道,一个中断• 谁来触发 EDMA_INT

– 该通道需要使能 TINT– 设置传输结束代码 (TCC ,transfer complete code)– 控制器根据 TCC 值设置 CIPR 对应的位– 看 CIER 中对应的位是否已经被使能

• TCC 的值与通道编号不需要一一对应– 多个 EDMA 通道允许具有相同的 TCC 值– 拥有同一个中断服务程序

Page 26: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 26

EDMA — 通道连接• 多个 EDMA 通道的传输过程相互链接• 某一个外设 / 外部器件产生的事件,将多个 ED

MA 通道传输链接起来• 利用四个特殊的传输结束代码 TCC=8/9/10/11 ,实现通道(事件)连接

– 只有通道 8~11 支持这种链接– 第一个通道结束会产生所选通道的触发事件– 设置:

• 第一个通道的 TCINT必须设为 1• 设置 TCC 和 CCER

通道链接使能寄存器

Page 27: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 27

EDMA — QDMA

• QDMA 是 C6211/C6711 中搬移数据的最有效率的一种手段之一• 由两组 (2*5) 存储器映射的寄存器来进行控制

– 第二组是第一组的“伪映射”( pseudo-mapping )– 第一组接受用户的设置– 第二组进行实际的申请递交

• 不支持被事件链接,但是仍然支持通道的完成中断,以及产生 EDMA 链接事件• QDMA@5 个周期( or 1 个周期) QDMA@3

6 个周期

Page 28: 第十四讲 直接存储器访问 DMA/EDMA

第十四讲 DMA/EDMABIT / TI 28

实验• 题目:

– 使用 channel0 ,实现数组间元素数据的传输• 要求:

– 数据的初始化在 main函数完成– DMA 数据传输子函数是线性汇编程序– 具体参见实验计划书