DMA映射
文章目录
- DMA映射
- sigle类型
- 一致性映射
- 流式映射
- sg类型
- scatterlist
- scatterlist 结构体
- sg_table 结构体
3种映射方式,DMA三种映射方式分别为: 一致映射、流映射、发散/汇聚映射.
DMA映射
DMA缓冲区 用于存放 读取/写入 的数据,DMA控制器 一般支持多种类型的缓冲区,常见的有 单一缓冲区(sigle) 和 分散/聚合缓冲区(scatter gather/sg)。
- sigle类型:一块连续可访问的缓冲区
- sg类型:多块离散的可访问缓冲区,将它们串成链表进行操作
DMA硬件 和 CPU 存在内存的一致性问题。因为 DMA 是脱离 CPU 对内存进行访问的,所以 DMA 有可能访问到的是 脏数据。
sigle类型
一致性映射
-
一致性映射 是使用专门的接口分配一块 DMA缓冲区,这块 DMA缓冲区 是关闭了 cache机制 的
-
接口函数 dma_alloc_coherent 释放 dma_free_coherent
-
dmesg | grep -i dma 命令可以查看内核中可以申请的一致性内存大小空间,这个大小和系统平台有关,下面是64位系统
-
[ 0.000000] OF: reserved mem: initialized node cma, compatible id shared-dma-pool [ 0.000000] DMA
-