再上一篇:5.4.2 数据传送
上一篇:5.4.3 DMAC 寄存器
主页
下一篇:5.5 系统存贮器接口
再下一篇:5.5.2 存贮器接口功能
文章列表

5.4.4 应用举例

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

一、设置和启动通道。
下例中设置通道 0 从地址 DSADR 传送 LENGTH 字节至 I/O 地址 DTADR。它置位

DDADR 中的停止位,在DMA 通道在完成LENGTH 字节数据传送后停止运行。


二、为一个正在运行的通道初始化一个描述器链表

该通道启动、装入描述器至寄存器,然后因为传送长度为0 且STOP 置位而停止。本例
中无数据传。可向DDADR 写入和置位DCSR 的RUN 位而重新启动它。
三、为一个正在运行的通道在其描述器链表加入一个描述器。
本例假设描述器取入方式处于活动状态。

DMA 描述器链表用作网络发送器的满缓冲器队列和网络接收器的空缓冲器队列。 因为队列中的缓冲器通常较小(特别象ATM 的单元),运行中DMA 描述器链表设置必

须高效。

1、向DCSR 的RUN 写入0。

2、等待通道停止(DCSR 的STOPSTATE 位=1)。

3、在存贮器中建立要加入的描述器,置STOP 位为1。

4、在存贮器中,修改现行链中最后一个描述器的DDADR 指向步3 中建立的描述器。

5、在存贮器中,建立与停止的DMA 通道的DDADR,DSADR,DTADR,DCMD 相同的描 述器,它为链表的下一个描述器。

6、检查DMA 通道寄存器,决定停止的通道是否为链的最后一个描述器。如是,则修改 存贮器的最后一个描述器的DDADR 以指向步3 建立的描述器,否则继续步7。

7、按步5 建立的描述器编程通道的DDADR。

8、置DCSR 的RUN 为1。