DMA驱动相关

本文深入探讨了DMA(直接内存访问)的工作原理及其在Linux系统中的实现,包括DMA相关定义、Linux DMA框架、DMA控制器与客户端驱动、传输流程以及DMA测试和驱动代码。介绍了如何在DMA控制器和DMA客户端之间进行交互,特别是如何处理中断、传输状态检查以及暂停和恢复传输。同时,提到了DMA-proxy-linux驱动的配置与测试。
摘要由CSDN通过智能技术生成

 一,DMA相关定义(fpga、wait_queue 、device、interrupt、 dma_request_channel 函数、dma_start_transfer函数、poll、read,platform总线)

DMA (直接内存读写)是Direct Memory Access的缩写,也就是内存到内存,不占用CPU资源,但是会占用系统总线。DMA支持内存到外设、外设到内存、内存到内存的数据交互,必要时节省很多CPU 资源。

1,transfer wide可以理解为单次传输数据的大小,串口一次叧能传一个字节,而DMA则可以选择一次能传输的数据大小。在返基础上的 transfer size 则是传输的次数,不是单纯的总大小,也就是说 DMA 传输总长度实际上是transfer size乘上transfer wide。

2,burst size是指DMAC内部缓存大小。当DMA 传输的源或目的是内存memory时,DMAC会先读取数据到缓存,再传入或传出。

3,scatter-gather:DMA操作必项是连续的物理内存,实际应用中,难免会遇到处理物理内存不连续的数据。scatter-gather指的就是把不连续的数据拷贝到连续的buffer中的操作。返个操作过程可以用软件实现,有直接的硬件支持。返里主要是强调DMA操作必项是连续的物理内存返件事。

二,linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值