介绍 Dmaegine 及其接口使用方法。适用于Linux3.4 及其以后版本内核的平台
2. Dmaengine Dmaengine 框架
2.1. 基本概述
Dmaengine 是 linux 内核 dma 驱动框架,针对 DMA 驱动的混乱局面内核社区提出了一个全新的框架驱动,目标在统一 dma API 让各个模块使用 DMA 时不用关心硬件细节,同时代码复用提高。并且实现异步的数据传输,降低机器负载。
2.1.1.术语约定
DMA: Direct Memory Access(直接内存存取)
Channel: DMA 通道
Slave: 从通道,一般指设备通道
Master: 主通道,一般指内存
2.1.2.功能简介
Dmaengine 向使用者提供统一的接口,不同的模式下使用不同的DMA 接口。
2.2基本结构
2.3. 模式
2.3.1. 内存拷贝
纯粹地内存拷贝,即从指定的源地址拷贝到指定的目的地址。传输完毕会发生一个中断,并调用回函数。
2.3.2. 散列表
散列模式是把不连续的内存块直接传输到指定的目的地址。当传输完毕会发生一个中断,并调用回调函数。
上述的散列拷贝操作是针对于 Slave 设备而言的,它支持的是 Slave 与 Master 之间的拷贝,还有另一散列拷贝是专门对内存进行操作的,即 Master 与 Master 之间进行操作
来源: