任务链表配置
3 Mar 2025
Read time: 1 minute(s)
DMA 通过任务链表来管理多个传输任务。每个任务单元包含多个字段,如任务 ID、配置信息、源地址、目标地址、传输长度等。当

图 1. 任务链表
下一任务高 8bit 地址 +
下一任务低 32bit 地址 = 0xff_fffffffc
时,表示 DMA 任务链表结束。
多个任务组成任务链表,每个任务单元为 32 位,从低地址往高地址存放。DMA 在工作时会读出任务相关参数更新到对应寄存器中(软件可见)。
参数 | 描述 | 备注 |
---|---|---|
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 | 终端回写的数据。 | - |