linux dmaengine编程
开发板:A33,运行linux-3.4.39 主机:Ubuntu 14.04 ---------------------------------------------- DMA是Direct Memory Access的缩写,顾名思义,就是绕开CPU直接访问memory的意思。在计算机中,相比CPU,memory和外设的速度是非常慢的,因而在memory和memory(或者memory和设备)之间搬运数据,非常浪费CPU的时间,造成CPU无法及时处理一些实时事件。因此,工程师们就设计出来一种专门用来搬运数据的器件----DMA控制器,协助CPU进行数据搬运。 DMA传输可以是内存到内存、内存到外设和外设到内存。这里的代码通过dma驱动实现了内存到内存的数据传输。linux实现了DMA框架,叫做DMA Engine,内核驱动开发者必须按照固定的流程编码才能正确的使用DMA。 1. DMA用法包括以下的步骤: 1)分配一个DMA通道; dma_request_channel() 2)设置controller特定的参数; none 3)获取一个传输描述符; device_prep_dma_memcpy() 4)提交传输描述符; tx_submit(); 5)dma_async_issue_pending() 2. 测试: 1)交叉编译成ko模块,下载到A33开发板 2)加载模块