本笔记不记录 DMA 的 Scatter/Gather 特性. DMA 上有三种总线: AXI4-LIte(对寄存器进行配置),AXI4-Memory Map(用于与内存交互) 和 AXI4 Stream(用于与外设交互). 在寄存器模式下, 寄存器分为两部分: MM2S 和 S2MM, 每个部分包括 Control Register, Status Register, Source Address, 和 Transfer Length 四个寄存器部分.
表: DMA 在 Direct Register 模式下的 Register Address Map
其中 Soure Addresss 和 Destation Address 指的是内存地址.
下图是控制寄存器 MM2S_DMACR,bit0 用来控制 DMA 的开启和关闭.
图: MM2S_DMACR
图: 控制寄存器的 bit0 详细介绍
该控制寄存器的第 12,13 和 14bit 是有关中断设置的, 分别是完成中断, 延迟中断和错误中断.
表: 控制寄存器有关中断的 bit 位
下一个比较重要的寄存为状态寄存器 MM2S_DMASR, 如下图所示.
图: DMA 的状态寄存器 (SR)
其中第 12,13 和 14bit 位表示中断的状态, 写 1 可以清除中断. 从表格可以看出, 这三个寄存器分别与控制寄存器中的三个中断一一对应的.
表: DMA 状态寄存器中用来表示中断状态的 bit 位
另外两个寄存器 MM2S_SA 和 MM2S_LENGTH 分别表示地址和长度, 如下图所示.
在 DMA 的 IP 设置时, 会设置 Width of Buffer Length Register(8-23), 默认的是 14. 这里设置的就是上面的 MM2S_LENGTH Register, 如果设置为 23, 那么最大传输就是 2^23=8388608byte.
来源: http://www.bubuko.com/infodetail-2981142.html