《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模块操作流程:
暂略……