《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、资料中的内容:
DirectoryDescriptiondocumentation/包含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 NumberDescriptionVD304K03A-DC-10002-r4p0-00rel0Mali Android Video SW Integration GuideVD304K03A-DC-06002-r4p0-00rel0Mali Android Video SW Release Note (this document)VD304K03A-SW-98001-r4p0-00rel0Mali Android Video SW Integration KitVD304K03A-SW-98002-r4p0-00rel0GPLv2 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_decodeLinux下桌面环境运行video sessionMiniplayer别被名字误导,这并不是一个播放器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 ProcessingMali-V61Mali-V550Mali-V500Graphics and Gaming DevelopmentV550V61Open 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模块操作流程:
暂略……