Edit online

设计说明

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 的操作。


ge_sw_framwork

1. GE 驱动框架

MPP 对 GE 接口的封装

设计说明中 MPP GE 设计及接口说明。