Loading...
首页问答  

海思35xx MPP构架和3798M UNF构架分析

isuca
isuca  发布于 2017-04-27 15:39:47 36961
本帖最后由 isuca 于 2017-12-25 14:30 编辑

UNF是海思机顶盒底层构架,UNF和MPP海思是一个工作组完成的,后来分成两个小组。基本构架,实现原理差不多。但UNF大部分东西开源了,你能够看到底层源码,少数部分没有开源,总体来说比MPP开放得多

很多公司早就使用机顶盒方案如3798M开发NVR

目录
前言:        4
1:Hi35xx系列芯片MPP构架        5
1.1 概述        5
1.2 整体软硬件构架        5
1.3 海思媒体处理平台架构        6
1.4 MMZ与模块绑定        8
1.5 HiMPP 支持的绑定关系        9
1.6 函数约定说明        10
1.7 MPP优缺点        11
1.7.1 MPP优点        11
1.7.2 MPP缺点        11
2: MPP和UNF对比        11
3:3798芯片UNF处理构架        12
3.1 应用架构        12
3.2 3798SDK 概览(功能介绍)        13
3.3 3798内存管理        13
3.3.1 Mmz内存        13
3.3.2 解码vid内存        14
3.4 3798模块        14
DEMUX:        14
VI:        14
VDEC        15
SYNC:        15
DISPLAY:显示设备        15
WINDOW:显示通道        15
SO( Subtitle Output)        16
PDM        17
3.5 3798和NVR模块使用方面区别:        20
4: 3798代码祥看        20
4.1 分析方法        20
4.1.1:查看代码,静态分析应用层,驱动层实现方法        20
4.1.2:图示静态分析函数调用关系        21
4.1.3:图示动态分析函数调用关系:库函数,系统调用,内核调用        21
4.2 基础模块:hi_media hi_mmz hi_common        21
Common        21
4.2.1 基本通用模块应用层接口common/api        22
4.2.2 基本通用模块驱动接口common/dev        22
4.2.3 业务模块应用层通用组件source/component        30
4.3 海思专用组件        30
4.3.1 海思MSP模块应用层接口source/msp/api        30
4.3.2 海思MSP模块驱动层接口source/msp/drv/        33
VENC        33
avplay        34
avplay初始化分析        34
IOCTL实现分析 基于avplay        35
avplay 多个实例如何找到对应实例        36
VPSS        36
VDEC        38
Avplay解码ES流过程        38
IR        39
4.4 Sample_mosaic分析        42
应用层调用        42
系统调用        43
5:小结:        44
5.1 UNF相对标准内核模块区别        44
5.1.1 Proc读写调试。        44
5.1.2 内核空间往应用空间写文件        44
5.1.3Log管理        45
5.1.4内存映射        45
5.2代码分析方法        45
5.2.1 查看代码,静态分析应用层,驱动层实现方法        45
5.2.2 图示静态分析函数调用关系.        45
5.2.3 图示动态分析函数调用关系:库函数,系统调用,内核调用        45
参考文档:        46



前言:
        本文通过分析海思文档和代码,把海思SDK的MPI和UNF构架大概实现思想和构架进行了简略的分析。着重分析了内存管理,底层功能如何实现。
        前面章节简要分析了NVR芯片MPI构架及其内存管理机制,后面着重详细分析了3798M底层模块api和drv实现的细节过程及其方法流程。

        本文前面简略分析了DVR,MPI构架的大体实现机制。后面就具体分析3798M UNF构架的实现。
本文不光分析了UNF构架,还使用了很多工具,辅助分析代码。这里从三个层面分析了UNF的实现。
1: 应用层,驱动层的实现框架,使用source insight查看代码并着重分析了avplay等几个模块。
2:静态分析函数调用。使用cflow,dot工具生成调用关系图
3:动态追踪运行过程。Ltrace, strace, valgrind分析函数调用,perf动态分析内核调用。

附件回复可见
海思35XX MPP构架和3798 UNF构架分析 - 副本.pdf
[hide]附件:海思35XX MPP构架和3798 UNF构架分析 - 副本.pdf[/hide]


isuca  发布于 2017-04-27 15:51:36
积累几年,花了几周写出来的,看到说一下意见
0
zhuangweiye  发布于 2017-04-27 16:04:40
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48844&ptid=14994]isuca 发表于 2017-4-27 15:51[/url]
积累几年,花了几周写出来的,看到说一下意见[/quote]

穷人看不到,多多分享吧
0
isuca  发布于 2017-04-27 16:52:55
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48849&ptid=14994]zhuangweiye 发表于 2017-4-27 16:04[/url]
穷人看不到,多多分享吧[/quote]

相对你,我穷死了
再说,真的非常便宜了,知识没那么廉价
0
zhuangweiye  发布于 2017-04-27 16:59:44
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48855&ptid=14994]isuca 发表于 2017-4-27 16:52[/url]
相对你,我穷死了
再说,真的非常便宜了,知识没那么廉价[/quote]

知识无价,多多分享吧
0
cfgrpg  发布于 2017-04-27 18:41:51
碉堡了
碉堡了
碉堡了
碉堡了
0
hisi_dev  发布于 2017-04-27 19:43:53
dddddddddddddd
0
fengwen_ye  发布于 2017-04-27 20:23:09
看看能不能用到
0
9527  发布于 2017-04-28 09:50:06
正在学习HI3798,从HI3536转过来的,确实好多不一样,很困惑,学习学习,谢谢楼主
0
lyy111  发布于 2017-04-28 10:37:06
好东西,学习一下。
0
9527  发布于 2017-04-28 11:40:03
对于HIplayer模块,没有做点相关介绍呢,SDK中描述可以直接连接rstp流?

0
hi3519v101  发布于 2017-04-28 15:03:14
11111111111111111111111
0
yuhuofei  发布于 2017-04-28 15:43:31
vi 对sensor lvds raw data 16bit支不支持
0
china_gxl  发布于 2017-04-28 21:39:51
好东西,学习一下。
0
isuca  发布于 2017-04-29 12:09:53
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48900&ptid=14994]9527 发表于 2017-4-28 11:40[/url]
对于HIplayer模块,没有做点相关介绍呢,SDK中描述可以直接连接rstp流?[/quote]

一般都会使用自己的推流模块,各种定制,而不是用自带的
0
uclinux_2016  发布于 2017-04-29 15:54:42
大作,期待啊
0
lubing521  发布于 2017-04-29 22:23:11
感谢如此无私的分享,谢谢。
0
tpu  发布于 2017-05-02 10:18:24
看起来很不错
0
Takin  发布于 2017-05-03 11:44:32
学习学习 楼主好人
0
blacktangel  发布于 2017-05-03 15:50:48
UNF是什么 MPP用过
0
isuca  发布于 2017-05-04 10:55:14
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49111&ptid=14994]blacktangel 发表于 2017-5-3 15:50[/url]
UNF是什么 MPP用过[/quote]

UNF是海思机顶盒底层构架,UNF和MPP海思是一个工作组完成的,后来分成两个小组。基本构架,实现原理差不多。但UNF大部分东西开源了,你能够看到底层源码,少数部分没有开源,总体来说比MPP开放得多

很多公司早就使用机顶盒方案如3798M开发NVR
0
bearoldbig1  发布于 2017-05-04 14:06:24
look look have a look
0
taoweijun  发布于 2017-05-04 14:49:47
学习学习,学习学习。
0
不死谷神  发布于 2017-05-04 16:24:15
谢谢楼主学习学习xxxxx
0
9527  发布于 2017-05-04 16:55:02
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48959&ptid=14994]isuca 发表于 2017-4-29 12:09[/url]
一般都会使用自己的推流模块,各种定制,而不是用自带的[/quote]

之前HI3536是使用live555 取流,我想的是在HI3798上既然有自带的取流模块,肯定比live555更稳定吧
0
小飞侠_fq  发布于 2017-05-04 18:20:27
你这边做海思芯片多上时间了?
0
luny  发布于 2017-05-04 18:48:24
这个不错,话说UNF代码在哪里?
0
avr00001  发布于 2017-05-05 14:15:33
学习先进经验
0
neverlic  发布于 2017-05-05 14:44:38
海思底层的东西基本上不需要动,也动不了
0
falloutmx  发布于 2017-05-05 16:51:10
学习下,能看到代码能做很多想要的事了
0
falloutmx  发布于 2017-05-05 17:00:58
哪能弄到3798m的SDK?
0
isuca  发布于 2017-05-05 23:58:47
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49179&ptid=14994]luny 发表于 2017-5-4 18:48[/url]
这个不错,话说UNF代码在哪里?[/quote]

如果做3798M,你就有UNF代码了,记得这里有帖子共享

不过如果没有fae支持是做不出来的,需要很多补丁,机顶盒毕竟和NVR不一样
0
isuca  发布于 2017-05-06 00:10:15
[quote][url=forum.php?mod=redirect&goto=findpost&pid=49244&ptid=14994]neverlic 发表于 2017-5-5 14:44[/url]
海思底层的东西基本上不需要动,也动不了[/quote]

为了优化得到最佳性能,让海思提供了很多补丁,说实话,海思这点对小公司很不好
同样的sdk,大公司有更多补丁优化性能得到规格更多的产品
0
Benz  发布于 2017-05-06 09:24:04
开发了一年了,看一看
0
nomark  发布于 2017-05-06 11:18:13
看看,学习下
0
xiaoliang8071  发布于 2017-05-08 21:27:39
先看看了解下
0
包龙兔  发布于 2017-05-09 08:46:44
顶!d=====( ̄▽ ̄*)b
0
luomin5417  发布于 2017-05-09 10:22:42
怎么才能看的到
0
aiening  发布于 2017-05-09 22:21:33
跟着大拿学习,思考,然后变成大拿。
0
c87276548  发布于 2017-05-10 16:05:08
下下来看一下
0
larrylbc  发布于 2017-05-10 19:51:45
刚开始做3536和3516没源码感觉很痛苦啊,看看楼主的分享,学习学习
0
ymir  发布于 2017-05-10 22:56:30
test a test test
0
fancong  发布于 2017-05-11 08:29:29
没搞过3798,看看先!支持一下!
0
zhujun19790920  发布于 2017-05-15 15:15:04
有下载的吗
0
liu417465778  发布于 2017-05-15 16:44:19
刚刚接触3798,苦于网上资料不齐全。移植在寻找中。我是准备在Linux平台上开发的。
0
zhujun19790920  发布于 2017-05-16 09:30:20

好东西,学习一下。
0
Mossad丶  发布于 2017-05-16 09:30:44
顶顶顶,支持楼主
0
eetif  发布于 2017-05-16 15:39:19
看看分析         
0
yhcgoat  发布于 2017-05-16 18:17:53
谢谢分享。
一致很好奇MPI的实现方式。虽然使用其封装好的API即可实现相应的功能,但还是想了解下内部实现原理。
0
keeper  发布于 2017-05-16 23:35:29
看看,海思底层的东西都可以重写的
0
domenor  发布于 2017-05-17 09:05:36
很厉害,希望能学习到
0
内容存在敏感词
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区