S3C2410的linux 下DMA驱动程序开发

本文介绍了S3C2410处理器Linux下DMA驱动的开发,包括主要函数功能、关键技术分析和具体实例,旨在帮助有DMA开发需求的读者。文章详细阐述了DMA驱动的主要数据结构,如DMA通道数据结构和控制寄存器,并通过IIS音频驱动作为实例展示了如何使用DMA传输音频数据。
摘要由CSDN通过智能技术生成

 网上介绍LINUX下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几;近期zhaoyang因工作需要,花了几日时间开发了某设备在S3C2410处理器LinuxDMA通信的驱动程序,有感于刚接手时无资料借鉴的茫然,故写点介绍,期待能给有DMA开发任务的网友们一点帮助。

本文将包括如下内容:

  1. DMA驱动主要函数功能
  2. 驱动中关键技术分析
  3. 具体的DMA实例分析

申明:本DMA驱动开发介绍仅适合S3C2410处理器类型,分析源码为韩国MIZI研究中心维护的dma驱动代码: linux/arch/arm/mach-s3c2410/dma.hlinux/arch/arm/mach-s3c2410/dma.c,其它处理器平台DMA开发可比对此文,自行分析。

 

  1. DMA驱动主要数据结构(linux/arch/arm/mach-s3c2410/dma.h

S3C2410有四通道DMA,每通道有9个控制寄存器:6个控制寄存器控制DMA传输,其它3个监视DMA控制器状态。

1DMA单个内核缓冲区数据结构:

typedef struct dma_buf_s {

int size;    /* buffer size:缓冲大小 */

dma_addr_t dma_start;    /* starting DMA address :缓冲区起始物理地址*/

int ref;    /* number of DMA references 缓冲区起始虚拟地址*/

void *id;    /* to identify buffer from outside 标记 */

int write;    /* 1: buf to write , 0: buf to read DMA读还是写

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值