`
helloyesyes
  • 浏览: 1306555 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Linux驱动修炼之道-DMA框架源码分析(下)

阅读更多

努力成为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常见驱动源码分析(kernel hacker修炼之道全集)--李万鹏

    Linux驱动修炼之道-DMA框架源码分析(下).pdf Linux驱动修炼之道-DMA框架源码分析(上).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(中).pdf Linux驱动修炼之道-DM9000A网卡驱动框架源码分析(下)....

    linux驱动修炼之道-- 李万鹏

    《Linux驱动修炼之道》是李万鹏先生撰写的一本深入探讨Linux驱动程序开发的专业书籍,旨在帮助读者理解和掌握Linux系统下的驱动程序设计与实现。这本书的内容涵盖了从基础概念到高级技术,适合对嵌入式系统、Linux...

    Linux驱动修炼之道-platform

    标题和描述均提到了“Linux驱动修炼之道-platform”,这表明文章的主题聚焦于Linux平台驱动的开发,特别是关于如何理解和操作Linux内核中的platform子系统。平台(Platform)模型是Linux内核用于处理嵌入式系统中...

    基于zynq的AXI-DMA驱动

    基于Zynq的AXI-DMA驱动主要是为了实现在Linux操作系统下对硬件DMA功能的控制。Linux驱动程序是操作系统内核的一部分,负责与硬件设备进行交互,使上层应用能够透明地使用硬件资源。在AXI-DMA驱动中,有以下几个关键...

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》源码

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入探讨Linux设备驱动程序开发的专业书籍,其源码提供了丰富的实践示例,帮助读者理解如何在Linux操作系统下编写和调试驱动程序。该书涵盖了从基础概念到...

    Petalinux如何加载AXI-DMA驱动.docx

    在Petalinux中加载AXI-DMA驱动是一个关键步骤,特别是在设计Zynq SoC系统时,AXI-DMA(Advanced eXtensible Interface Direct Memory Access)用于在处理器和外设之间高效地传输数据,无需CPU参与。以下是加载AXI-...

    ZedBoard-Linux-pl-ps单个dma回环测试成功.rar

    《ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输》这篇文章对应的工程资源“ZedBoard-Linux-pl-ps单个dma回环测试成功.rar”是针对赛灵思ZYNQ7000系列SoC的一个实践教程。ZYNQ7000是Xilinx公司推出的一种...

    常见驱动源码分析(kernel hacker修炼之道)-李万鹏

    这本书是“Linux kernel hacker修炼之道”的一部分,通过深入剖析各种常见的驱动源码,帮助读者提升在Linux系统中的驱动开发能力。 在Linux操作系统中,驱动程序是连接硬件与内核的桥梁,它们负责管理和控制硬件...

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》源码.zip

    总之,《Linux设备驱动开发详解-基于最新的Linux4.0内核》一书提供了丰富的实践案例,结合源码分析,是学习Linux驱动开发的宝贵资源。通过学习和实践,开发者不仅能掌握Linux内核的工作原理,还能提高解决硬件问题的...

    Linux驱动修炼之道

    《Linux驱动修炼之道》这本书是Linux驱动开发领域的经典之作,旨在帮助读者深入理解Linux内核驱动程序的原理和实现,从而提升在Linux系统中的驱动开发技能。以下将围绕标题、描述以及标签,详细阐述Linux驱动的相关...

    Linux驱动drm-dma

    Linux驱动drm_dma源码分析

    linux常见驱动源码分析--李万鹏

    通过李万鹏的“linux常见驱动源码分析”,读者将能够深入了解Linux驱动的内部工作原理,学习如何编写、调试和优化驱动程序,从而更好地掌控Linux系统的硬件资源。这份资料可能涵盖了以上所有知识点,并可能包含具体...

    Linux设备驱动开发详解-基于最新的Linux4.0内核》配套代码.zip

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》是一本深入讲解Linux设备驱动程序开发的专业书籍,配套代码存放在"learn-ldd-master-main"这个压缩包中,旨在帮助开发者理解并掌握在嵌入式Linux系统上编写驱动...

    xilinx-axidma 驱动模块 petalinux2020

    AXI Direct Memory Access (DMA)是Xilinx FPGA设计中的一个重要组件,它允许数据在没有CPU干预的情况下高效地在存储器和外设之间传输。在嵌入式系统中,这种低延迟、高性能的数据传输机制对于处理大量数据流的应用至...

    W5500驱动,STM32-DMA-W5500驱动,使用LL库,下载直接可用,附带cubemx配置文件,注释详细,方便移植修改

    总的来说,STM32-DMA-W5500驱动涉及到的知识点主要包括:STM32的DMA和SPI接口操作、LL库的使用、W5500的SPI通信协议、cubemx配置文件的理解以及良好的编程注释规范。通过深入理解和实践这些知识点,可以有效地实现...

    xilinx-axidma-master DMA驱动

    在"Xilinx_axidma-master"这个项目中,包含了实现这些功能的相关代码和文档。开发者可以通过阅读源码,理解驱动的实现细节,并根据自己的需求进行定制化开发。此外,Xilinx提供的SDK(Software Development Kit)和...

    linux DMA from user space-public

    Linux DMA Framework是一个框架,它允许访问DMA控制器驱动程序(例如AXI DMA、AXI CDMA和AXI VDMA),以便在不同的设备驱动程序之间提供一致的抽象接口。该框架提供了一个统一的接口,用于访问不同的DMA控制器驱动...

    嵌入式linux驱动开发教程---学习.zip

    嵌入式Linux驱动开发是将Linux操作系统应用于特定硬件平台的过程,它涉及到系统级编程、硬件接口操作以及设备驱动程序的编写。本教程旨在帮助开发者掌握这一领域的核心技能,以实现高效、稳定的嵌入式系统。 在...

    Xilinx-FPGA-PCIE-Linux驱动程序.rar_FPGA Linux 驱动_PCIe FPGA_pcie_pci

    6. **文档“Xilinx-FPGA-PCIE-Linux驱动程序.docx”** 很可能包含了关于如何设计和实现PCIe FPGA在Linux下的驱动程序的详细步骤、示例代码和注意事项。它可能涵盖了以下内容:PCIe协议的理解、FPGA配置、Linux驱动...

Global site tag (gtag.js) - Google Analytics