设计说明
29 Nov 2024
Read time: 2 minute(s)
源码说明
本模块源代码目录结构如下
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 驱动框架中,非命令队列模式(normal 模式)和命令队列模式(cmdq 模式)是两种不同的操作模式。GE 驱动框架分为以下几个层级:
-
GE HAL :在 normal 模式下,GE HAL 层具有完整的功能,可以独立运行。在命令队列模式下,GE HAL 层负责 GE 硬件资源初始化和获取等,必须依靠 MPP 层实现完整功能。
-
GE DRV:提供对 HAL 层的封装,简化了接口调用。
-
MPP:在 normal 模式下,MPP 层仅调用 GE HAL 的接口。在 cmdq 模式下,MPP 层不仅调用 GE HAL 层的接口,而且还包含命令的准备、封装和发送。
-
APP:应用层通过调用 MPP 层接口实现对 GE 的操作。
MPP 对 GE 接口的封装
设计说明中 MPP GE 设计及接口说明。