努力成为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驱动修炼之道》是李万鹏先生撰写的一本深入探讨Linux驱动程序开发的专业书籍,旨在帮助读者理解和掌握Linux系统下的驱动程序设计与实现。这本书的内容涵盖了从基础概念到高级技术,适合对嵌入式系统、Linux...
标题和描述均提到了“Linux驱动修炼之道-platform”,这表明文章的主题聚焦于Linux平台驱动的开发,特别是关于如何理解和操作Linux内核中的platform子系统。平台(Platform)模型是Linux内核用于处理嵌入式系统中...
基于Zynq的AXI-DMA驱动主要是为了实现在Linux操作系统下对硬件DMA功能的控制。Linux驱动程序是操作系统内核的一部分,负责与硬件设备进行交互,使上层应用能够透明地使用硬件资源。在AXI-DMA驱动中,有以下几个关键...
《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入探讨Linux设备驱动程序开发的专业书籍,其源码提供了丰富的实践示例,帮助读者理解如何在Linux操作系统下编写和调试驱动程序。该书涵盖了从基础概念到...
在Petalinux中加载AXI-DMA驱动是一个关键步骤,特别是在设计Zynq SoC系统时,AXI-DMA(Advanced eXtensible Interface Direct Memory Access)用于在处理器和外设之间高效地传输数据,无需CPU参与。以下是加载AXI-...
《ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输》这篇文章对应的工程资源“ZedBoard-Linux-pl-ps单个dma回环测试成功.rar”是针对赛灵思ZYNQ7000系列SoC的一个实践教程。ZYNQ7000是Xilinx公司推出的一种...
这本书是“Linux kernel hacker修炼之道”的一部分,通过深入剖析各种常见的驱动源码,帮助读者提升在Linux系统中的驱动开发能力。 在Linux操作系统中,驱动程序是连接硬件与内核的桥梁,它们负责管理和控制硬件...
总之,《Linux设备驱动开发详解-基于最新的Linux4.0内核》一书提供了丰富的实践案例,结合源码分析,是学习Linux驱动开发的宝贵资源。通过学习和实践,开发者不仅能掌握Linux内核的工作原理,还能提高解决硬件问题的...
《Linux驱动修炼之道》这本书是Linux驱动开发领域的经典之作,旨在帮助读者深入理解Linux内核驱动程序的原理和实现,从而提升在Linux系统中的驱动开发技能。以下将围绕标题、描述以及标签,详细阐述Linux驱动的相关...
Linux驱动drm_dma源码分析
通过李万鹏的“linux常见驱动源码分析”,读者将能够深入了解Linux驱动的内部工作原理,学习如何编写、调试和优化驱动程序,从而更好地掌控Linux系统的硬件资源。这份资料可能涵盖了以上所有知识点,并可能包含具体...
《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入讲解Linux设备驱动程序开发的专业书籍,配套代码存放在"learn-ldd-master-main"这个压缩包中,旨在帮助开发者理解并掌握在嵌入式Linux系统上编写驱动...
AXI Direct Memory Access (DMA)是Xilinx FPGA设计中的一个重要组件,它允许数据在没有CPU干预的情况下高效地在存储器和外设之间传输。在嵌入式系统中,这种低延迟、高性能的数据传输机制对于处理大量数据流的应用至...
总的来说,STM32-DMA-W5500驱动涉及到的知识点主要包括:STM32的DMA和SPI接口操作、LL库的使用、W5500的SPI通信协议、cubemx配置文件的理解以及良好的编程注释规范。通过深入理解和实践这些知识点,可以有效地实现...
在"Xilinx_axidma-master"这个项目中,包含了实现这些功能的相关代码和文档。开发者可以通过阅读源码,理解驱动的实现细节,并根据自己的需求进行定制化开发。此外,Xilinx提供的SDK(Software Development Kit)和...
Linux DMA Framework是一个框架,它允许访问DMA控制器驱动程序(例如AXI DMA、AXI CDMA和AXI VDMA),以便在不同的设备驱动程序之间提供一致的抽象接口。该框架提供了一个统一的接口,用于访问不同的DMA控制器驱动...
嵌入式Linux驱动开发是将Linux操作系统应用于特定硬件平台的过程,它涉及到系统级编程、硬件接口操作以及设备驱动程序的编写。本教程旨在帮助开发者掌握这一领域的核心技能,以实现高效、稳定的嵌入式系统。 在...
6. **文档“Xilinx-FPGA-PCIE-Linux驱动程序.docx”** 很可能包含了关于如何设计和实现PCIe FPGA在Linux下的驱动程序的详细步骤、示例代码和注意事项。它可能涵盖了以下内容:PCIe协议的理解、FPGA配置、Linux驱动...