任务链表配置
GPDMA 通过链表来管理多个传输任务。每个任务单元包含多个字段,如任务 ID、配置信息、源端地址、终端地址、传输长度等。当

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