Edit online

任务链表配置

GPDMA 通过链表来管理多个传输任务。每个任务单元包含多个字段,如任务 ID、配置信息、源端地址、终端地址、传输长度等。当下一任务高 8bit 地址 + 下一任务低 32bit 地址 = 0xff_fffffffc 时,表示 GPDMA 链表结束。


1. 任务链表

多个任务组成链表,每个任务包含 10 项(每项占 4Bytes),从低地址往高地址存放。GPDMA 在工作时会读出任务相关参数更新到对应寄存器中 (软件可见)。

1. 任务链表参数描述
参数 描述 备注
GPDMA_LINK_ID 当前链表的 ID 号。(链表中每个任务的 LINK_ID 都是相同的) 链表中的 LINK_ID 必须与 GPDMA_LINK_ID_SET 一样。
GPDMA_TASK_CFG_1 当前任务配置,包括源端和终端的 BURST 和 WIDTH 等。 外设模块的 WIDTH 需要与自身 FIFO 寄存器位宽对齐。
GPDMA_BLOCK_LEN 当前任务块长度设置。 当 FIFO 内数据量达到配置的 block_len 时,GPDMA 启动将这批数据一次性写入终端。
GPDMA_SRC_ADDR 当前任务源端低 32bit 起始地址。 需要 4 Bytes 对齐。
GPDMA_DST_ADDR 当前任务终端低 32bit 起始地址。 需要 4 Bytes 对齐。
GPDMA_TASK_LEN 当前任务传输字节数,最大可设置为 32M-1 字节。 外设模块的总传输长度需要与 WIDTH 对齐,回写使能。
GPDMA_TASK_CFG_2 当前任务访问总线 qos、终端高 8bit 起始地址、源端高 8bit 起始地址、下一任务高 8bit 地址。 下一任务高 8bit 地址 + 下一任务低 32bit 地址 =0xff_fffffffc,表示 GPDMA Link 结束。
GPDMA_NEXT_TASK_ADDR 下一任务低 32bit 地址。 下一任务高 8bit 地址 + 下一任务低 32bit 地址 =0xff_fffffffc,表示 GPDMA Link 结束。
GPDMA_WB_DATA1

回写的数据 1

从源端 1(回写),获取的数据

GPDMA_WB_DATA2

回写的数据 2

从源端 2(回写),获取的数据