Edit online

设计说明

源代码目录结构如下

HAL 层实现:

luban-lite/bsp/artinchip/hal/ge
├── hal_ge_normal.c // normal 模式驱动
├── hal_ge_hw.c     // normal 模式对硬件操作的封装
├── hal_ge_hw.h     // normal 模式对硬件操作封装的 API
├── hal_ge_cmdq.c   // CMD queue 模式驱动
├── hal_ge_reg.h    // GE 寄存器定义
└── ../include/uapi/mpp_types.h  // mpp 公用的类型定义

Driver 层实现:

luban-lite/bsp/artinchip/drv/ge
├── aic_drv_ge.c.c  // GE 驱动接口
└── Kconfig

MPP 层实现:

luban-lite/packages/artinchip/mpp/ge
├── cmdq_ops.c       // MPP GE 驱动命令队列封装
├── normal_ops.c     // MPP GE 驱动普通模式封装
├── mpp_ge.c         // MPP GE 操作封装实现
├── include/ge_ops.h // MPP GE 操作函数定义
├── include/ge_reg.h // GE 寄存器定义
└── ../include/mpp_ge.h // MPP GE 操作封装定义

模块架构

  • GE HAL :在 normal 模式下,GE 驱动具有完整的功能。在 cmdq 模式下,负责 GE 硬件资源初始化和获取等,必须依靠 MPP 层实现完整功能

  • GE DRV :对 HAL 层的封装,向上提供更简洁的接口

  • MPP :在 normal 模式下,功能仅仅是调用 HAL 的接口。在 cmdq 模式下,不仅调用 HAL 的接口,而且还包含命令的准备、封装和发送

  • APP :应用层调用 MPP 层接口,即可实现对 GE 的操作

../../images/ge_sw_framwork.png
1. GE 驱动框架