📘 设备树DMA & 内存映射
实战·30章
🎯 风格 · 明快色系
01
DMA基础概念
↗
什么是DMA、工作原理、与CPU数据搬运对比
02
DMA控制器硬件架构
↗
DMA通道、请求线、握手信号、传输粒度
03
DMA传输类型
↗
内存到内存、内存到外设、外设到内存、外设到外设
04
DMA描述符与链表
↗
描述符结构、链表模式、循环模式、硬件自动跳转
05
DMA中断与回调
↗
传输完成中断、错误中断、中断处理函数注册
06
DMA Scatter-Gather
↗
SG列表原理、SG描述符、SG传输优势
07
DMA性能调优
↗
突发传输、数据对齐、缓存一致性、带宽计算
08
DMA调试技巧
↗
寄存器dump、trace事件、性能计数器、常见问题排查
09
内存映射基础概念
↗
MMU、虚拟地址、物理地址、页表、TLB
10
内存映射类型
↗
直接映射、动态映射、ioremap、mmap系统调用
11
设备树基础
↗
设备树语法、节点、属性、reg、interrupts
12
设备树DMA绑定
↗
dmas属性、dma-names属性、DMA通道指定
13
设备树内存映射绑定
↗
memory节点、reserved-memory、dma-ranges
14
DMA引擎框架
↗
Linux DMA Engine、dma_device、dma_chan、dma_async_tx_descriptor
15
DMA引擎API
↗
dma_request_channel、dmaengine_prep_slave_sg、dmaengine_submit、dma_async_issue_pending
16
DMA引擎回调机制
↗
dma_async_tx_callback、回调上下文、完成通知
17
DMA引擎与设备树结合
↗
解析dmas属性、获取DMA通道、配置传输参数
18
内存映射驱动开发
↗
ioremap、request_mem_region、mmap实现、remap_pfn_range
19
DMA内存分配
↗
dma_alloc_coherent、dma_map_single、dma_map_sg、一致性映射与流式映射
20
DMA缓存一致性
↗
cache coherency、dma_sync_single_for_cpu、dma_sync_single_for_device
21
DMA与MMU协同
↗
IOMMU/SMMU、设备地址转换、DMA重映射
22
DMA内存屏障
↗
wmb、rmb、dma_wmb、dma_rmb、保证顺序
23
DMA环形缓冲区
↗
ring buffer设计、生产者消费者模型、DMA与CPU同步
24
DMA音频驱动实战
↗
I2S接口、DMA传输音频数据、环形缓冲区管理
25
DMA视频驱动实战
↗
Camera接口、DMA抓图、帧缓冲管理、V4L2框架
26
DMA网络驱动实战
↗
GMAC接口、DMA描述符环、NAPI与DMA协同
27
DMA存储驱动实战
↗
eMMC/SDIO接口、DMA数据传输、命令与数据分离
28
DMA多通道并发
↗
多通道调度、优先级管理、通道复用、死锁避免
29
DMA电源管理
↗
运行时PM、DMA时钟门控、DMA上下文保存恢复
30
DMA故障排查与优化
↗
性能瓶颈分析、延迟优化、错误恢复、trace工具使用