Edit online

关键流程设计

DMA 模块包含以下关键流程:

初始化流程

DMA 驱动的初始化接口通过 INIT_BOARD_EXPORT(drv_dma_init) 完成注册,其中主要步骤有:
  1. 初始化模块的 clk

  2. 初始化 DMA 通道、任务描述符管理信息

  3. 注册中断

DMA Client 的调用流程

作为 DMA 用户,调用流程如下:

../images/client_flow1.png

1. DMA Client 调用流程

其中有两个操作的概念需要注意:

  • submit,是指传输请求提交给了 DMA Engine 的缓存中,还没有开始传输数据

  • issue pending,将传输请求加入到 DMA Device 的请求队列中,接下来才会启动数据传输动作

中断处理流程

中断处理流程主要是:

  1. 逐个 DMA 通道的查看完成状态;

  2. 如果通道有任务传输完成,就调用相应 client 注册的回调函数。