DMA中断
1.1在linux中,分配释放DMA缓冲区,只能使用以下几个函数
1)
/*该函数只禁止cache缓冲,保持写缓冲区,也就是对注册的物理区写入数据,也会更新到对应的虚拟缓存区上*/
void...//GFP_USER 用来为用户空间页来分配内存; 它可能睡眠.
2)
/*该函数禁止cache缓存以及禁止写入缓冲区*/
void * dma_alloc_coherent(struct...,找到DMA3中断未被使用
所以在linux中使用:
request_irq(IRQ_DMA3, s3c_dma_irq, NULL, "s3c_dma", 1);// s3c_dma_irq:中断服务函数...,还是直接两个地址之间的拷贝
-> 2.2)若是DMA启动,则设置DMA的相关硬件,并启动DMA传输
2.1 所以,驱动代码如下所示:
#include
#include...
#include
#include
#include
#include <linux