设计说明
源代码目录结构如下
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 的操作
