学了这么多驱动,不难推出DMA的编写套路:
1)注册DMA中断,分配缓冲区
2)注册字符设备,并提供文件操作集合fops
-> 2.1)file_operations里设置DMA硬件相关操作,...来启动DMA
由于我们是用字符设备的测试方法测试的,而本例子只是用两个地址之间的拷贝来演示DMA的作用,所以采用字符设备方式编写
1.驱动编写之前,先来讲如何分配释放缓冲区、DMA相关寄存器介绍、使用...的字符设备驱动
步骤如下:
1) 注册DMA中断,分配两个DMA缓冲区(源、目的)
2) 注册字符设备,并提供文件操作集合fops
-> 2.1) 通过ioctl的cmd来判断是使用DMA启动两个地址之间的拷贝...,还是直接两个地址之间的拷贝
-> 2.2)若是DMA启动,则设置DMA的相关硬件,并启动DMA传输
2.1 所以,驱动代码如下所示:
#include
#include...
#include
#include
#include
#include <linux