Edit online

DMA 使用指南

1. 术语定义
术语 定义 注释说明
DMA Direct Memory Access 直接存储器访问
DRQ DMA Request 指 DMA 请求的端口号

DMA 模块允许总线上的不同设备间的数据自动直接传输,最大优点是可减少 CPU 负载,并且具有高带宽、低延迟的特性:

  • 支持八个 DMA 通道,每通道有 32 个源端和 32 个终端可选

  • 采用链表配置方式,寄存器描述通道状态

  • 设备位宽支持 8/16/32/64 位,Burst 长度支持 1/4/8/16 个

  • DMA 源端、终端地址 8Byte 对齐

../images/hw_system10.png

1. DMA 硬件的原理框图

DMA 硬件的原理框图可以看出,根据数据的源、目的分类,DMA 操作分为以下几种情况:

- 内核中类型定义 含义
1 DMA_MEM_TO_MEM 从内存到内存(包括 DRAM、SRAM),可看作 memcpy()的硬件加速
2 DMA_MEM_TO_DEV 从内存到设备,支持 DMA 操作的设备一般需要提供握手信号、FIFO
3 DMA_DEV_TO_MEM 从设备到内存,是情况 2 的逆操作
4 DMA_DEV_TO_DEV 从设备到设备,这种比较少用
注:

USB、GMAC、eMMC 等模块都有自己内置的 DMA,为了区分开,所以有时候也将本 模块称作 “通用 DMA” 模块。