Edit online

任务链表配置

3 Mar 2025
Read time: 1 minute(s)
DMA 通过任务链表来管理多个传输任务。每个任务单元包含多个字段,如任务 ID、配置信息、源地址、目标地址、传输长度等。当下一任务高 8bit 地址 + 下一任务低 32bit 地址 = 0xff_fffffffc 时,表示 DMA 任务链表结束。


1. 任务链表

多个任务组成任务链表,每个任务单元为 32 位,从低地址往高地址存放。DMA 在工作时会读出任务相关参数更新到对应寄存器中(软件可见)。

1. 任务链表参数描述
参数 描述 备注
LINK ID 当前任务链表的 ID 号。 确保任务链表中的 LINK_ID 与 DMA_LINK_ID_SET 一致。
TASK_CFG_1 当前任务配置,包括源端和终端的 BURST 和 WIDTH 等。 外设模块的 WIDTH 需要与自身 FIFO 寄存器位宽对齐。
BLOCK_LEN 当前任务块长度设置。 -
SRC_ADDR 当前任务源端低 32bit 起始地址。 需要 4 byte 对齐。
DST_ADDR 当前任务终端低 32bit 起始地址。 需要 4 byte 对齐。
TASK_LENGTH 当前任务传输字节数,最大可设置为 32M-1 字节。 外设模块的总传输长度需要与 WIDTH 对齐,回写使能。
TASK_CFG_2 当前任务访问总线 qos、终端高 8bit 起始地址、源端高 8bit 起始地址、下一任务高 8bit 地址。 下一任务高 8bit 地址 + 下一任务低 32bit 地址 =0xff_fffffffc,表示 DMA Link 结束。
NEXT_TASK_ADDR 下一任务低 32bit 地址。 下一任务高 8bit 地址 + 下一任务低 32bit 地址 =0xff_fffffffc,表示 DMA Link 结束。
SRC_WB_DATA 源端回写的数据。 -
DST_WB_DATA 终端回写的数据。 -