SDK架构介绍


1. 模块介绍

简称 全称 职责
AI Audio Input Interface I2S audio input采集单元,支援16路x16bitx8k音频信号输入
AO Audio Output Interface 支援1路16bit steroaudio output
DISP Display Engine DISP有两种实现:
①DISP0/DISP1对DIVP处理单元输出的图像做硬件拼图,并连同AO输出音频信号一起编码成HDMI/VGA/CVBS 输出信号的单元
②Virtual DISP: 对DIVP 输出的图像做软拼图,并输出软件拼图的图像。软件拼图的图像主要用于支援零通道编码
DIVP Deinterlace&VideoPost ProcessEngine DIVP Engine有两个主要的功能
①对VIF输出的Interlace信号进行DeInterlace处理(*个别芯片才具备)
②对VDEC输出的视频帧图像做视频后处理
FB FrameBuffer UI显示
GFX Graphics Engine Graphic Engine提供对2D画图的基本硬件加速支援,降低CPU的负荷
HDMI High Definition Multimedia Interface HDMI/VGA标准输出
SYS System 实现MI系统初始化、内存管理、各个模块之间数据流的管理
VDEC Video Decoder H264/H265/JPEG视频解码器
VDISP Vitrual Display 软件拼图
VENC Video Encoder H264/H265/MotionJpeg编码器,输入原始图像序列一般来自于VPE单元
WLAN Wireless Local Area Network 提供简单的wifi信号的扫描,连接功能

2. 软件架构

  • 功能实现函数从上到下,分为MI API层,MI实现层,Hal硬件抽象层,Driver层和芯片硬件层。

  • SDK功能代码在Kernel层实现,减少从kernel到User mode来回调度,提高逻辑函数实现的效率。

  • 对上层客户提供MI API的User Mode接口,用户层APP直接调用MI接口,即可调用到对应的MI功能。


3. SDK目录结构

目录 模块名 功能
project board PCB板信息存放路径
project configs 预配置文件存放路径
project image 产生镜像文件的材料库和镜像文件存放处
project kbuild kernel编译环境
project release 目标池,存放对外头文件,库文件和内核模块以及第三方库
SDK Verify/feature 验证文件夹,里面存放模块单元测试和特性测试文件
SDK Verify/demo 整体功能测试demo

4. 基本概念

  • 数据流:各个MI Module 可以看成是一个纯数据处理单元,数据流推送由MI SYS内部统一调度。输入数据流表示该数据单元的input数据,输出数据流表示该处理单元处理过的output数据。

  • 控制流:APP 对各个MI Module 数据处理过程进行参数控制的过程,比如设置MI_VDEC解码参数,启动停止MI_VDEC 通道,设置MI_VDEC通道输出端口之分辨率及format等

  • Channel(通道)

    • 对于需要处理或者输出stream的MI模组,一个channel代表该MI 模组处理或者输出一路stream的分时复用的上下文(context)及相关控制流设定

    • 对于可分时复用之模组如MI_VDEC, MI_DIVP, MI_DISP,可支援多个channel

  • Port(端口)

    • Port分为2种,input port和output port。input port为channel输入数据流的位置,而output port则是channel输出数据流的位置。

    • 一个channel可以有多个input port及多个output port.


5. API

详细参考SDK模块API


6. DEBUG方法

详细参考各模块API对应章节PROCFS介绍。