DMA的应用示例(5)-DMA descriptor的赋值

前言

之所以 把 对【DMA descriptor】的赋值单独拿出来写,是因为设计的知识点比较多,即。

  • sg_table 是如何传给 DMA engine的
  • DMA engine 是如何 生成 DMA descriptor 的(这里利用了 dma_pool)
DMA传输用到的 DMA descriptor

首先,我们回顾一下,对于散列传输方式而言,假设想要DMA传输2组数据,那就必须要为DMA配置2个 DMA descriptor(因为每组数据的源与目的地都不一样)然后做成链表传给DMA
即:[descriptor 1]->[descriptor 2]->NULL
每个 DMA descriptor 都有 一个 源 src,一个目的地dst,还有对应的DRQ等成员变量。
我们把 本次传输 DMA descriptor们的 共通的部分(DRQ类型, 数据的传输宽度等)通过 dmaengine_slave_config函数传给 engine即可,把 DMA descriptor不一样的部分(src, dst),通过sg_table组织起来,通过 device_prep_dma_sg传给 DMA engine。
对于 dmaengine_slave_config函数,上一篇已经讲过,这里重点介绍一下device_prep_dma_sg,这个函数涉及到了 dma_pool与 sg_table 的关联。

dmaengine_slave_config

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值