• 理解 DMA 提升吞吐与降低 CPU 负担的机制
  • 掌握描述符、传输状态机、中断回报流程
  • 处理 DMA 与 Cache 一致性问题

14.1 DMA 最小路径

  1. CPU 配置源地址、目的地址、长度、启动位。
  2. DMA 发起总线传输并搬运数据。
  3. 传输完成置位状态并触发中断。

14.2 DMA 状态机

  1. IDLE
  2. FETCH_CFG
  3. TRANSFER
  4. DONE/IRQ
  5. ERROR(可选)

14.3 与 Cache 一致性

DMA 绕过 CPU 管线直接访存,常见问题:

  1. CPU cache 中有脏数据,DMA 读到旧值。
  2. DMA 写回内存后,CPU 仍读到 cache 旧副本。

常见解决:

  1. 传输前后执行 cache flush/invalidate。
  2. 指定 DMA 区域为 non-cacheable。
  3. 使用硬件一致性互连(复杂度更高)。

14.4 最小验证

  1. 小包与大包传输都正确。
  2. 错误地址触发错误状态而非死锁。
  3. 完成中断仅触发一次。

更新时间: