再上一篇:5.3.4 操作系统(OS)定时器
上一篇:5.3.5 脉冲宽度调制
主页
下一篇:5.4.2 数据传送
再下一篇:5.4.3 DMAC 寄存器
文章列表

5.4 DMA 控制器

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

PXA250/210 的 DMA 控制器(DMAC)有 16 通道 DMA,可响应内部或外部设备的请 求完成数据从主存贮器的读出和写入。

5.4.1 DMA 描述

DMAC 只支持流过(flow-through)传送。图5-5 为它的框图。


图 5-5 DMAC 框图
一、DMAC 通道

DMAC 有16 个通道,每个由四个32 位寄存器所控制。每个通道可设置为任一个内部或 外部设备执行流过传送。每个通道按外围器件批数据大小进行增量,宽度与器件口宽度相同。 每个器件批大小和口宽度由器件FIFO 深度和宽度决定,编程写入通道寄存器。

DMAC 支持两种寄存器装入方法:非描述器和描述器(Descriptor)装入方法。在MMU

中,应设置DMA 通道和目的和源地址为非快存的。
二、信号
图 5-5 中的 DREQ1,0 为外部芯片 DMA 请求输入脚(正跳变有效);PREQ37~0 为片内 外围器件的DMA 请求信号;DMA_IRQ 为DMAC 的中断请求输出(高有效)。
三、DMA 通道优先级

DMA 通道分为四个组,每个组包含四个通道。在一个组中通道优先级为循环

(round-robin)。组0(通道0~3)优先级最高,组1(通道4~7)优先级高于组2(通道8~11) 和3(通道12~15)。宽带外围器件应程控为组0。存贮器传送和窄带外围器件应程控为组2 或3。在所有通道同时运行时,每8 次通道服务中4 次为组0,2 次为组1,其他为组2 和3。
四、DMA 描述器

DMAC 工作于两种方式:描述器取入方式和非描述器取入方式。它由 DCSRx 的

NODESCFETCH 位决定。 不同通道可同时使用两种方式。在从一种方式切换为另一种方式时必须停止该通道。

1、非描述器取入方式

在本方式中,不使用DDADRx。软件不允许写入DDADRx,但必须装入DSADAx, DTADRx 和DCMDx 寄存器。在置位RUN 位时,DMAC 立即开始数据传送。在传送完成后停止该通 道。

典型的操作过程如下:
(1)复位后通道处于非初始化状态。
(2)清0DCSRx 的RUN 位,置位DCSRx 的NODESCFETCH 位。
(3)软件把源地址、目的地址分别写入DSADRx 和DTADRx 寄存器,命令写入DCMDx
寄存器。
(4)软件置位DCSRx 的RUN,开始执行非描述器取入操作。
(5)通道等待由DCMDx 的FLOW 源和目标位决定的请求或开始数据传递。
(6)通道传递等于DCMDx 的SIZE 和LENGTH 两者较小的字节数。
(7)通道等待下一次请求或继续数据传送,直到DCMDx 的LENGTH 等于0。
(8)置DDADRx 的STOP 位等于1,停止本通道。

2、描述器取入方式

描述器取入方式中从主存的DMA 描述器装入DMAC 寄存器。多条DMA 描述器可串连 成一列。这允许一个DMA 通道执行一连串数据传送操作。描述器的格式允许在DMA 运行 时向描述器链加入新的描述器。
典型的操作过程如下:
(1)复位后通道处于非初始化状态。
(2)软件向DDADRx 寄存器写入描述器存放起始地址。
(3)软件置位DCSRx 的RUN 位。
(4)DMAC 从由DDADRx 指向的存贮器中取出四个字的描述器。

(5)这四个字的字 0 装入 DDADRx 寄存器和一个标志位,它指向下一个四个字的描述 器。字1、字2 和字3 分别装入现行传送的DSADRx,DTADRx 和DCMDx 寄存器。

(6)通道等待由DCMDx 的FLOW 源和目标位决定的请求或开始数据传送。
(7)通道传送等于DCMDx 的SIZE 和LENGTH 两者较小的字节数。
(8)通道等待下一次请求或继续数据传送,直到DCMDx 的LENGTH 等于0。
(9)通道按DDADRx 的STOP 停止或从存贮器继续取出下一个描述器执行。

DMA 描述器字 0 的 STOP 标志描述器链的结束。在装入 STOP 置位的描述器时,在完 成由该描述器指定的数据传送后停止本通道。