免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6194 | 回复: 7
打印 上一主题 下一主题

[硬件及驱动] DMA 什么情况下必须使用流式映射, 什么情况下必须使用 一致性映射 [复制链接]

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-16 21:43 |只看该作者 |倒序浏览
DMA什么情况下必须使用流式映射, 什么情况下必须使用 一致性映射

论坛徽章:
0
2 [报告]
发表于 2015-08-24 22:26 |只看该作者
两种映射方式,对ARM来讲,一种是刷cache,另一种是关cache,都可以用作DMA传输,一般不存在说哪种情况下必须用哪种映射。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
3 [报告]
发表于 2015-08-25 07:36 |只看该作者
toky_lee 发表于 2015-08-24 22:26
两种映射方式,对ARM来讲,一种是刷cache,另一种是关cache,都可以用作DMA传输,一般不存在说哪种情况下必 ...


兄台, kernel DMA how-to 上有说明,但是老衲道行不高, 参透不了

https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt

Good examples of what to use streaming mappings for are:

        - Networking buffers transmitted/received by a device.
        - Filesystem buffers written/read by a SCSI device.


Good examples of what to use consistent mappings for are:

        - Network card DMA ring descriptors.
        - SCSI adapter mailbox command data structures.
        - Device firmware microcode executed out of
          main memory.

论坛徽章:
0
4 [报告]
发表于 2015-08-25 09:59 |只看该作者

- Networking buffers transmitted/received by a device.
为例,
上层已经准备好了buffer,交由device driver通过DMA发送出去,那么显然,以流映射方式更为简便,因为只需要刷cache,DMA就能看到实际的buffer数据。那么采用一致性映射可不可以呢? 也是可以的,只是麻烦而已,那就得申请一块一致性DMA内存,然后把上层的buffer拷贝到这里,然后启动DMA去传输。

在实际开发中,不防考虑一下,分别以这两种方式来实现你的DMA传输需求,哪种更优。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
5 [报告]
发表于 2015-08-25 15:29 |只看该作者
toky_lee 发表于 2015-08-25 09:59

- Networking buffers transmitted/received by a device.
为例,



上层已经准备好了buffer,交由device driver通过DMA发送出去,那么显然,以流映射方式更为简便,因为只需要刷cache,DMA就能看到实际的buffer数据。那么采用一致性映射可不可以呢? 也是可以的,只是麻烦而已,那就得申请一块一致性DMA内存,然后把上层的buffer拷贝到这里,然后启动DMA去传输。

一致性buffer需要拷贝么?这点和streaming buffer没有区别吧,
一致性buffer,你申请一块内存,把指针挂到DMA设备上就OK。DMA原本的目的就是避免拷贝的。

论坛徽章:
0
6 [报告]
发表于 2015-08-27 16:00 |只看该作者
我只是举个例子说明,一致性dma buffer与流式dma buffer,并不是相互排它的。跟你的驱动接口以及驱动的实现质量有关。必须得在一个特定需求下,才能讨论该用何种dma buffer

论坛徽章:
0
7 [报告]
发表于 2015-08-27 18:23 |只看该作者
回复 1# mordorwww


对网络设备来说,最简单的,descriptor通常是coherent的,因为它们小,但skb buffer通常是cache的,因为它们大。
buffer的大小是决定是否应该coherent的一个因素,因为有的系统中,coherent memory会比较昂贵。




   

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-15 06:20:00数据库技术版块每日发帖之星
日期:2016-06-16 06:20:00数据库技术版块每日发帖之星
日期:2016-06-18 06:20:00程序设计版块每日发帖之星
日期:2016-06-27 06:20:00程序设计版块每日发帖之星
日期:2016-07-09 06:20:00IT运维版块每日发帖之星
日期:2016-07-15 06:20:00IT运维版块每日发帖之星
日期:2016-07-27 06:20:00程序设计版块每日发帖之星
日期:2016-08-18 06:20:00
8 [报告]
发表于 2015-08-27 21:20 |只看该作者
lyl19 发表于 2015-08-27 18:23
回复 1# mordorwww



frame buffer 使用coherent DMA
frame buffer 可不 小
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP