设计说明
源代码位于 bsp/artinchip/
:
-
bsp/artinchip/drv/dma/drv_dma.c,DMA Driver 层实现
-
bsp/artinchip/include/drv/drv_dma.h,DMA Driver 层接口,提供了类似 Linux 的 DMA Engine 接口
-
bsp/artinchip/hal/dma/hal_dma.c,DMA HAL 层实现
-
bsp/artinchip/include/hal/hal_dma.h,DMA HAL 层接口头文件
-
bsp/artinchip/hal/dma/hal_dma_reg.h,DMA 控制器的寄存器定义
RTOS 系统中并没有提供了一个类似 Linux 的 DMA Engine 子系统,为了方便 DMA 使用者的代码兼容,DMA 驱动提供了类似 Linux 的 DMA Engine 接口定义。
DMA 驱动的软件框架如下图:

图中可以看到 DMA 驱动不依赖任何 RTOS 的设备驱动模型,所以无论是在 RTOS 环境、还是 baremetal 环境,都是可以直接调用 DMA Engine API 的。