0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

海思MPP系统概述

ebaina 来源:ebaina 作者:ebaina 2023-08-19 15:01 次阅读

1 系统概述

海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MPP Program Interface)接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、 H.265/H.264/JPEG 编码、 H.265/H.264/JPEG 解码、 视频输出显示、视频图像前处理(包括去噪、增强、锐化)、 图像拼接、 图像几何矫正、智能音频捕获及输出、音频编解码等功能。

1.1 系统架构

wKgaomTgaG2AAerHAABQtSsEEZo410.png架构

系统软件架构可以分为四层:

最底层是硬件驱动层。

操作系统层;海思支持linuxliteos,此文只涉及linux部分。

媒体层;此层是海思平台软件架构的核心,海思平台将媒体相关的功能都抽象到了这一层,如音视频输入输出、isp图像处理、编解码等,最关键的是独立的内存管理机制,物理内存、虚拟内存都有独立的机制进行分配和回收,减少了与操作系统层的关联。包含的软件有各种媒体相关的驱动、库的支持,还有整套的媒体开发平台。本文要介绍的MPP就是媒体软件处理平台。

最上层是应用层。

1.2 处理流程

海思媒体处理平台的主要内部处理流程分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、 视频解码(VDEC)、 视频输出(VO)、视频拼接(AVS)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码(ADEC)、区域管理(REGION)等模块。

wKgZomTgaJKAWpGuAAFMr0jLR6s274.png

VI 模块捕获视频图像,可对其做剪切、 去噪等处理,并输出多路不同分辨率的图像数据。

解码模块对编码后的视频码流进行解码,并将解析后的图像数据送 VPSS 进行图像处理, 再送 VO 显示。可对 H.265/H.264/JPEG 格式的视频码流进行解码。

VPSS 模块接收 VI 和解码模块发送过来的图像,可对图像进行图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍。

编码模块接收 VI 捕获并经 VPSS 处理后输出的图像数据,可叠加用户通过 Region模块设置的 OSD 图像,然后按不同协议进行编码并输出相应码流。

VO 模块接收 VPSS 处理后的输出图像,可进行播放控制等处理,最后按用户配置的输出协议输出给外围视频设备。

上图也包含很多典型的视频流的处理流程。sensor负责采集图像,是海思平台的输入,图像经过海思内部VI、VPSS、VENC和VO后,经由hdmi输出到显示屏上,sdk提供的sample_vio中有几个case就是这个典型的流程,同时sample_vio也是最常用到的samle。

2 MPP部署

在一般的嵌入式开发中,只要将uboot,kernel,rootfs下载到开发板上,就可以进行程序开发了。但是海思又进一步把与多媒体相关的内容整合到MPP平台中,SDK中推荐使用mount nfs的方法先部署起mpp。

搭建nfs服务器,开发板作为nfs客户端。

挂载nfs文件系统

mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 xx.xx.xx.xx:/your-nfs-path /mnt,然后就可以在/mnt目录访问nfs服务器上的文件。

加载驱动
cd mpp/ko
./ load3519v100 -i -sensor0 imx334

运行sample程序
cd mpp/sample /vio
./sample_vio 0 0

3 视频输入

视频输入单元 VI(Video Input),可以通过 MIPI Rx(包含 MIPI、LVDS、HiSPi、SLVS-EC)接口、BT.656/601、BT.1120 接口和 DC(Digital Camera)接收视频数据,存入指定的内存区域。VI 内嵌 ISP 图像处理单元,可以直接对接外部原始数据(BAYER RGB 数据),VI 的功能框图如下图所示。 VI 分成两个物理子模块:捕获子模块 VICAP 和处理子模块 VIPROC 组成。

wKgaomTgaKSAds8YAAA5t5pGowc525.png

海思SDK对VI的功能框架进行了封装,VI内部结构对于开发者来说是黑盒,并且黑盒内部的代码不进行开源。黑盒外部进行了软件级的封装,因此VI在软件层次上划分4个部分,输入设备(DEV)、输入 PIPE、物理通道(PHY_CHN)和扩展通道(EXT_CHN),如下图所示,开发者也只需要关注软件架构上的这四个层级即可。

wKgaomTgaLOAIq2ZAABXcCDZVHQ792.png

此处只针对VI进行了讲解,其他模块也需要参考海思手册,此处不再一一写出了。

4 开发

4.1 预览与拍照

下图是双 pipe 离线模式拍照的数据通路,上面的pipe是preview通路,下面的pipe是capture通路,一般相机的通路都是如此,preview对图像质量要求略低,capture对图像质量要求高。当然,此图是海思平台的双pipe离线模式,还有在线模式、单pipe模式等,大体意思相近,不同模式的选择需要根据芯片的处理能力和图像的质量需求进行。

wKgZomTgaMGAWz81AAByk1SanMc110.png

4.2 新sensor开发

准备工作

确认主芯片规格。支持 Master 模式,支持的线性、WDR 接口模式,支持输入频率上限。

sensor datasheet。确认图像传输接口模式,输出频率。确认曝光时间、增益如何设置,帧率如何修改。确认在 WDR 模式下的以上两项。

mipi/并口。确认接口,并确认时序。

initialize settings。获取 Sensor Initialize Settings,一般至少要准备最大规格和标准分辨率两种序列。

内核层

pinmux的配置

power的检查

clock的配置

控制通路i2c/spi的检查

应用层
sensor_ctl.c,sensor的配置,需要结合datasheet完善initialize settings。

cmos.c,isp的基本功能。按如下函数顺序进行实现。

cmos_set_image_mode(), cmos_set_wdr_mode()。

sensor_global_init()。

sensor_init(), sensor_exit()。

cmos_get_isp_default(),cmos_get_isp_black_level()。

sensor点亮后还需要进行ae功能的完善,自动配置增益、曝光时间、帧率等。
之后还有白平衡的配置,配置完成后,颜色基本就正常了。
到此处,添加的新sensor基本就可用了,后续就是AF和各种图像质量调优相关的工作了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148520
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206742
  • JPEG
    +关注

    关注

    0

    文章

    65

    浏览量

    29734
  • 海思
    +关注

    关注

    38

    文章

    423

    浏览量

    114716
  • MPP
    MPP
    +关注

    关注

    0

    文章

    22

    浏览量

    10504
收藏 人收藏

    评论

    相关推荐

    406.【科技狐】小米OV的自研芯片,离华为麒麟还有多远?

    华为cpu/soc
    小凡
    发布于 :2022年10月04日 19:11:10

    方案

    宙心科技目前作为目前在无人机,运动相机等方向的方案推广商,已不同往日。宙心科技目前已经退出的成熟方案有,HI3516编码板卡,HI3519V100编码板卡,HI3519V101编码板卡
    发表于 02-15 11:59

    3559开发板

    `创发布3559开发板,深圳市前海海芯创科技有限公司定位专注于为领先的消费类电子产品解决方案商。与
    发表于 09-11 11:33

    AP6255在平台下linux系统驱动和fwnv

    分享AP6255在平台下linux系统驱动和fwnv
    发表于 03-08 10:11

    鸿蒙系统能被哪些芯片支持?的芯片如何购买?

    请问下鸿蒙系统能被哪些芯片支持?的芯片如何购买?
    发表于 09-25 09:31

    【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件试用 】鸿蒙教学系统的设计

    计划①根据文档,对硬件和鸿蒙软件有个系统概述了解。②学习硬件扩展应用技术,学习鸿蒙软件
    发表于 09-25 10:04

    深圳回收系列芯片

    深圳回收系列芯片深圳高价回收系列芯片,东莞专业回收系列芯片,重庆高价收购
    发表于 05-08 17:45

    芯片大量收购,高价回收芯片IC

    回收IC 收购芯片芯片大量收购,高价回收
    发表于 08-30 18:59

    深圳专业回收IC 收购芯片

    芯片大量收购,高价回收芯片IC ☆★★帝欧电子赵先生 135★★3012★★2202☆★★ QQ :8798-21252 (同步微信)【【
    发表于 09-26 17:55

    深圳高价回收系列芯片

    深圳回收系列芯片深圳高价回收系列芯片,东莞专业回收系列芯片,重庆高价收购
    发表于 10-20 19:13

    重庆高价回收ic 重庆高价收购ic

    重庆高价回收ic重庆高价收购ic,深圳帝欧电子高价回收ic。帝欧赵生***QQ 18
    发表于 11-16 19:25

    芯片大量收购,高价回收IC

    芯片大量收购,高价回收IC ☆★★帝欧电子赵先生 135-3012-2202☆★★ QQ :8798-21252(同步微信)Hisilicon 电子芯片收购, 收购Hisili
    发表于 12-28 17:04

    全志V85x MPP模块概述以及编译sample步骤

    /topic/3286/1.MPP 模块概述MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP
    发表于 04-17 09:41

    3559环境搭建与开发指南

    调试等内容,帮助开发者快速上手并进行嵌入式开发。 第一部分:开发环境的配置 安装Ubuntu操作系统:由于3559开发需要使用到Linux环境,推荐使用Ubuntu操作系统,并确
    发表于 08-17 09:32

    3559环境搭建与开发指南

    调试等内容,帮助开发者快速上手并进行嵌入式开发。 第一部分:开发环境的配置 安装Ubuntu操作系统:由于3559开发需要使用到Linux环境,推荐使用Ubuntu操作系统,并确
    发表于 08-25 09:57