280 likes | 491 Views
第十四讲 直接存储器访问 DMA/EDMA. 内容简介. DMA EDMA 特点、机制 如何运用. 概述 — 直接存储器访问. From: To: 外部存储器 片内数据存储器 片内数据存储器 片内程序存储器 外部存储器. 传输的实现: CPU DMA. 概述 — 直接存储器访问. 为了建立任何一种方式的传输,我们需要:. 概述 — C6000 DMA. 概述 — C6000 DMA 特点. 后台操作,吞吐率高 四个通道,一个辅助通道 单通道分割( split-channel )操作 支持多帧 (frame) 传输方式 多种地址产生方式
E N D
第十四讲 直接存储器访问DMA/EDMA BIT / TI
内容简介 • DMA • EDMA • 特点、机制 • 如何运用 BIT / TI
概述—直接存储器访问 From: To: 外部存储器 片内数据存储器 片内数据存储器 片内程序存储器 外部存储器 • 传输的实现: • CPU • DMA BIT / TI
概述—直接存储器访问 为了建立任何一种方式的传输,我们需要: BIT / TI
概述— C6000 DMA BIT / TI
概述— C6000 DMA特点 • 后台操作,吞吐率高 • 四个通道,一个辅助通道 • 单通道分割(split-channel)操作 • 支持多帧(frame)传输方式 • 多种地址产生方式 • 32位地址范围,支持8-/16-/32-bit字长 • 传输支持自动初始化 • 可以设定同步事件控制传输过程 BIT / TI
概述—控制寄存器 • 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辅助控制 BIT / TI
传输—启动 • 程序启动 • 向主控制寄存器START域写入00b,停止当前通道 • 设定源地址 • 设定目的地址 • 设定传输个数 • 设置其他的有关模式,向START域写入01b,启动传输 • 自动初始化方式启动 • 多次传输,只需设置一次 BIT / TI
传输—例子(参数) 我们需要知道那些参数? BIT / TI
传输—例子(参数) 源地址: A_D_SRC 目的地址: DMEM_DST 传输计数值: 200h 源地址的方向: Inc/Dec/None 目的地址的方向: Inc/Dec/None 中断CPU: Yes/No 同步: Yes/No 同步事件 A/D(RDY) 利用: INT4/5/6/7 BIT / TI
传输—同步 • 读同步 • 写同步 • 帧同步 BIT / TI
传输—地址产生 • 32-bit 地址寄存器 • 地址的基本调整 • 递增/递减/固定不变 • 索引值调整 • 16-bit 索引值 • 帧索引和数据单元索引 BIT / TI
传输—几种用法 • 一帧传输个数<65536 • 多帧模式传输的数据最多可达65536*65536*4=16GB • 利用帧索引代替重载地址 • 例子:每帧从固定的外部地址移动10 bytes,在目的处彼此相距一个字节排列 • 设置 • SRC DIR=00b(源固定) • DST DIR=11b(目的用索引调整) • ELEMENT INDEX=10b(以步幅2递增) • FRAME INDEX= -(9×2)= -18 =FFEEh BIT / TI
传输—几种用法 • 数据整序 BIT / TI
传输—分裂通道&辅助通道 • 分裂通道模式 • 使得一个通道可以提供双向的数据流传输 • 收发利用同一个计数器 • 需要利用DMA global address register作为分裂地址控制 • 辅助通道 • HPI主机口专用 BIT / TI
后处理—状态与中断 BIT / TI
EDMA—概述 • 扩展的直接存储器访问,是C6211/C6711的独有特征 • EDMA控制器基于RAM结构 • 增强之处 • 提供了16个通道 • 由事件触发相应通道的传输 • 通道优先级设置更加灵活 • 可以实现数据传输的链接 • 独特的快速DMA(QDMA) BIT / TI
EDMA —框图 BIT / TI
EDMA —传输类型 • 数据单元(element)的传输 • 帧(frame)的传输 • 阵列(array)的传输 • 块(block)的传输 • 2-维(2-D)的传输 • 非2-维(non 2-D)的传输 BIT / TI
EDMA —结构 • 16组通道传输参数 • 69组重加载参数 • 空闲区 BIT / TI
EDMA —事件控制 • 16个通道,每个通道都有一个事件与之关联,由这些事件触发相应通道的传输 • 由有关的控制寄存器完成对事件的不同处理 • ER/EER/ECR/ESR/PQSR/CIPR/CIER/CCER • 事件编码器 BIT / TI
EDMA —参数RAM 参数RAM(Parameter RAM,PaRAM)的容量为2K byte,其中存放EDMA的传输参数,以控制不同的传输行为。另外,参数入口还可以被彼此链接起来,以实现某些复杂数据流的处理 BIT / TI
EDMA —传输链 • 类似于DMA中的自动初始化 • 更灵活,参数可变 • 便于实现某些复杂的数据传输的应用要求 • 传输链 • 多种参数的EDMA传输过程相连接 • 链的长度没有限制 • 在传输链中,一次传输的结束会导致自动从参数RAM中装载下一次事件应用的传输参数 BIT / TI
EDMA —传输链参数重加载 • 16-bit的链接地址和LINK位控制链接 • 链中的参数都是对应同一个事件触发的传输过程 • 参数一般互不相同 BIT / TI
EDMA —中断 • 通道传输结束可以产生中断—EDMA_INT • 16个通道,一个中断 • 谁来触发EDMA_INT • 该通道需要使能TINT • 设置传输结束代码(TCC ,transfer complete code) • 控制器根据TCC值设置CIPR对应的位 • 看CIER中对应的位是否已经被使能 • TCC的值与通道编号不需要一一对应 • 多个EDMA通道允许具有相同的TCC值 • 拥有同一个中断服务程序 BIT / TI
EDMA —通道连接 • 多个EDMA通道的传输过程相互链接 • 某一个外设/外部器件产生的事件,将多个EDMA通道传输链接起来 • 利用四个特殊的传输结束代码TCC=8/9/10/11,实现通道(事件)连接 • 只有通道8~11支持这种链接 • 第一个通道结束会产生所选通道的触发事件 • 设置: • 第一个通道的TCINT必须设为1 • 设置TCC和CCER 通道链接使能寄存器 BIT / TI
EDMA — QDMA • QDMA是C6211/C6711中搬移数据的最有效率的一种手段之一 • 由两组(2*5)存储器映射的寄存器来进行控制 • 第二组是第一组的“伪映射”(pseudo-mapping) • 第一组接受用户的设置 • 第二组进行实际的申请递交 • 不支持被事件链接,但是仍然支持通道的完成中断,以及产生EDMA链接事件 • QDMA@5个周期(or 1个周期) QDMA@36个周期 BIT / TI
实验 • 题目: • 使用channel0,实现数组间元素数据的传输 • 要求: • 数据的初始化在main函数完成 • DMA数据传输子函数是线性汇编程序 • 具体参见实验计划书 BIT / TI