第 14 章:DMA 控制器
- 理解 DMA 提升吞吐与降低 CPU 负担的机制
- 掌握描述符、传输状态机、中断回报流程
- 处理 DMA 与 Cache 一致性问题
14.1 DMA 最小路径
- CPU 配置源地址、目的地址、长度、启动位。
- DMA 发起总线传输并搬运数据。
- 传输完成置位状态并触发中断。
14.2 DMA 状态机
- IDLE
- FETCH_CFG
- TRANSFER
- DONE/IRQ
- ERROR(可选)
14.3 与 Cache 一致性
DMA 绕过 CPU 管线直接访存,常见问题:
- CPU cache 中有脏数据,DMA 读到旧值。
- DMA 写回内存后,CPU 仍读到 cache 旧副本。
常见解决:
- 传输前后执行 cache flush/invalidate。
- 指定 DMA 区域为 non-cacheable。
- 使用硬件一致性互连(复杂度更高)。
14.4 最小验证
- 小包与大包传输都正确。
- 错误地址触发错误状态而非死锁。
- 完成中断仅触发一次。