01 ARM Mali-V VPU视频处理单元介绍 V61 V550 V500

《ARM Mali-V VPU视频处理单元介绍 V61 V550 V500》

作者 将狼才鲸
日期 2022-01-13

一、名词解释:

  • Mali:
    一系列显示GPU及其子模块IP(IP为芯片中的术语,一组集成电路模块),隶属于ARM。有一个显示处理事业部专门研发Mali系列的IP。

二、相关资料:

备注:ARM官网上找不到任何V系列视频处理器IP的资料。

Mali至少有四种类型:

  • 一种是图形处理器GPU,支持通用显卡API,型号如早期纯数字系列、中期T系列、后期G系列。
  • 一种是图像信号处理的C系列。
  • 一种是网上不公开资料的显示控制器DP系列。
  • 一种是网上不公开资料的视频处理器VPU,供芯片原厂购买的V系列(如V500、V550、V61),提供MVE接口,只进行视频编解码,不进行图形处理。

本文档只描述Mali V系列VPU,不涉及GPU及其它。
ARM Mali VPU IP相关的文档和代码,需要从ARM获取。

三、Mali-V资料描述

获取到的资料:只有mali_v550.tar.gz
初始化期间MVE(例如Mali V550)需要运行一个ARM私有的固件.fwb(如:h264dec.fwb hevcdec.fwb jpegdec.fwb mpeg2dec.fwb mpeg4dec.fwb rvdec.fwb vc1dec.fwb vp8dec.fwb jpegenc.fwb h264enc.fwb hevcenc.fwb vp8enc.fwb)
这些固件是无法修改的,只能原样发给MVE模块运行。
ARM会提供驱动的示例代码,来提供驱动API用于操作MVE进行编码或解码,但缺少完整的demo(例如miniplayer源码就是integration_kit;但不包含从存储介质中获取h264文件,使用MVE解码后送到显示模块显示的功能,而只是一个MVE驱动)。

1、文件夹分类:

  • mali_v550\v2:嵌入式异步驱动源码integration_kit(miniplayer),MVE架构文档、Mali-V550简要介绍文档,Mali固件,工具(Linux下的程序mve_decode32),Mali-V固件。
  • mali_v550\v1:安卓和Linux驱动源码mali_video,驱动编译与测试文档,Mali-V固件。

2、资料中的内容:

Directory Description
documentation/ 包含Errata, Release Notes, User Guide, and Host Interface Specification文档
integration_kit/ miniplayer源码(也是mve驱动的源码,嵌入式中操作mve就裁剪这里面的代码)
integration_kit/boot/ boot an ARM processor的源代码,主要是汇编.
integration_kit/build/ 编译用的一些配置
integration_kit/src/ miniplayer(也是mve驱动)源码
integration_kit/bin/ 编译后的输出文件夹
integration_kit/obj/ 编译时的object files存放位置
streams/ miniplayer能用的几个流文件
model/ mve_decode and mve_encode工具
firmware/ MVE固件,不可更改,每次编码解码都需要加载固件

Deliverable Part Number Description
VD304K03A-DC-10002-r4p0-00rel0 Mali Android Video SW Integration Guide
VD304K03A-DC-06002-r4p0-00rel0 Mali Android Video SW Release Note (this document)
VD304K03A-SW-98001-r4p0-00rel0 Mali Android Video SW Integration Kit
VD304K03A-SW-98002-r4p0-00rel0 GPLv2 Mali Android SW Device DSC
  • 有用的文档:
    《MVE-Host-Interface-Specification-v2.pdf》:MVE Host Interface Specification (Protocol v2.0):Mali-V工作原理和操作接口相关,重要!
    《Mali-V550-Firmware-Tools-User-Guide.pdf》:ARM® Mali™-V61 Firmware Tools User Guide:获取到的资料种类介绍
    《Mali_Android_Video_SW_DDK_Integration_Guide_And_Codec_User_Manual.pdf》:ARM® Mali™ Video Processor Android DDK Integration Manual:编译与运行相关,使用通用的OpenMAX接口

  • 用不上的文档:
    《Mali_V550_Firmware_Errata_Core.pdf》:Mali V550 Firmware Product Errata Notice
    《Mali_V550_Firmware_Release_Notes.pdf》:Mali-V550 Firmware Release Notes
    《Mali-V550-Firmware-Model-Release-Notes.pdf》:Mali-V550 Firmware Release Notes
    《Mali-V550-Firmware-Model-Errata.pdf》:Mali V550 Firmware Product Errata Notice
    《Mali_Android_Video_SW_DDK_Errata.pdf》:Mali Android Video SW DDK Product Errata Notice
    《Mali_Android_Video_SW_DDK_Release_Notes.pdf》:Mali Android Video SW DDK Release Notes

  • 相关的工具:
    firmware tools:

mve_encode/mve_decode Linux下桌面环境运行video session
Miniplayer 别被名字误导,这并不是一个播放器demo,而只是一个MVE驱动,实际上mve_encode or mve_decode会使用miniplayer,mve_encode更像是一个播放器,但可惜并未公开源码

3、缺少的内容:

• ARM® Mali™-V550 Video Processor Integration Manual (ARM 100107).
• ARM® Mali™-V550 Video Processor Configuration and Sign-off Guide (ARM 100106).
• ARM® Mali™-V550 Video Processor Technical Reference Guide (ARM 100105).
• ARM® Mali™-V61 Video Processor Technical Overview (ARM 100503)
• ARM® Mali™-V61 Video Processor Technical Reference Manual (ARM 100504)
• ARM® Mali™-V61 Video Processor Configuration and Integration Manual (ARM 100505)

4、参考网址:

  • Mali维基百科
  • Mali GPUs for Graphics Processing
  • Mali-V61
  • Mali-V550
  • Mali-V500
  • Graphics and Gaming Development
  • V550
  • V61
  • Open Source Mali Video Kernel Device Driver

四、MVE工作原理:

每个流的编码或者解码是一个session,要为每个session分配必要的内存。
使用job和state来控制session的运行。
state:PAGETABLE FIRMWARE BITBUFS FRAMEBUF MSG_INQ MSG_OUTQ BUF_INQ BUF_INRQ BUF_OUTQ BUF_OUTRQ INTBUFS RPC_BUF
session工作期间会使用Queue传递各种消息。

异步通讯使用message queues

暂略……

Mali-V模块操作流程:

暂略……

你可能感兴趣的:(6,嵌入式各行业特有的模块,arm,音视频,嵌入式,单片机,c语言)