努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/06/02/6462149.aspx
DMA通道的使用:申请通道,申请中断,设置寄存器,安装回调函数,设置标志,将数据放入队列,最后就是调用static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)来开始DMA的传输了。
首先看通道的申请:
下面的函数是找通道好,先在板子通道映射中找,再在芯片通道映射中找。
设置寄存器,设置寄存器的工作由s3c2410_dma_devconfig和s3c2410_dma_config完成:
设置回调函数:
设置标志:
将数据放入队列,先看一下一个结构:
每个struct s3c2410_dma_chan维护了一个缓冲区队列,每个缓冲区用上边的结构表示。在struct s3c2410_dma_chan中的结构是:
下边这个函数就是完成将s3c2410_dma_buf放入这个队列中排队:
channel在运行的时候会有很多状态,在arch/arm/mach-s3c2410/include/mach/dma.h,注意已经很清楚了,我就不多解释了。
中断处理函数:
可以选择不同的dma操作:
分享到:
相关推荐
Linux驱动修炼之道-DMA框架源码分析(下).pdf Linux驱动修炼之道-DMA框架源码分析(上).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(中).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(下)....
Linux驱动drm_dma源码分析
Linux DMA驱动构架分析 很好的DMA源代码分析
pg195-pcie-dma
STM32F4XX ADC模数转换应用多通道采集--DMA方式程序源码,有使用到STM32F4XX系列ADC多通道的可以参考!
Petalinux如何加载AXI-DMA驱动
xilinx-axidma petalinux2020,使用说明参见《xilinx_axidma 驱动移植与使用》 包含测试例程hello_dma
W5500驱动,STM32-DMA-W5500驱动,使用LL库,下载直接可用,附带cubemx配置文件,注释详细,方便移植修改
DMA enabled Zynq PS-PL communication to implement high throughput data transfer between Linux applications and user IP core. (based on Xilinx UG873 chapter 6) This is a simple loop-back project in ...
此资源是我的博客下,《ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输》文章对应的所有工程,可以按照此博客进行简单的测试和学习
u-dma-buf是Linux设备驱动程序,用于在内核空间中分配连续的内存块作为DMA缓冲区,并使它们在用户空间中可用。 当用户应用程序使用UIO(用户空间I / O)在用户空间中实现设备驱动程序时,打算将这些存储块用作DMA...
xilinx-axidma-master DMA驱动
Xilinx-FPGA-PCIE-Linux驱动程序.rar
STM32CubeMX配置STM32F407的SDCard-DMA-FatFs
S32K144-PDB-ADC_backtoback-DMA-ISR-S32DS_s32k144pdb定时器ADCDMA_s32k144+ADC+PDB_s32kadc_s32k144adcdma_源码.zip
STM32F4xx ADC模数转换应用单通道采集--DMA方式程序源码,有使用到STM32FFxx系列ADC的可以参考!
基于zynq的AXI-DMA驱动,在linux驱动层做出注册、发送、读取等处理,基于原版哈佛版本驱动新增DMA中断处理
u-dma-buf(用户空间可映射 DMA 缓冲区)\n概述\nu-dma-buf介绍\nu-dma-buf 是一个 Linux 设备驱动程序,它在内核空间中分配连续的内存块作为 DMA 缓冲区,并使它们在用户空间中可用。当用户应用程序使用 UIO(用户...
ADC1独立模式,使用通道4,PA4(配置为模拟模式),使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则...