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