标签:
在Linux驱动开发中,使用DMA可能要操作DMAC(DMA控制器)的几个管脚介绍如下:
1.数据总线:用于传输数据;
2.地址总线:用于选择存储器地址;
3.数据传送信号:MEMR为存储器读操作信号,MEMW为存储器写操作信号,IOR为外设读操作信号,IOW为外设写操作信号;
4.DRQ:DMA请求信号,外设向DMA控制器提出要求操作DMA操作的申请信号;
5.DACK:DMA应答信号,DMAC响应外设提出的DMA请求操作;
6.HOLD:总线请求信号,DMAC向CPU发出的临时占用总线的信号;
7.HLDA:总线响应信号,CPU向DMAC发出的允许临时让出总线控制权的信号;
1.DMA初始化:DMA通道申请、DMA传输方向设置(MEM->MEM、MEM->DEV、DEV->MEM)、DMA数据传输设置(每次传输一个字节或者多个字节);
2.DMA源地址和目的地址设置:DMA源地址为内存的物理地址,DMA目的地址为外设的数据寄存器的物理地址;
3.DMA传输开始函数调用;
4.DMA传输结束函数调用;
OK,这个章节就简单介绍DMA的概念,接下来的章节,将通过实际项目代码阐述驱动开发中DMA的使用。
标签:
原文地址:http://blog.csdn.net/zengxianyang/article/details/51337751