Hi3516A开发-- 常见问题FAQs
一、查看MPP日志信息
目前日志分为 7 个等级,默认设置为等级 3。等级设置的越高,表示记录到日志中的信息量就越多,当等级为 7 时,系统的整个运行状态实时的被记录到日志中,此时的信息量非常庞大,会大大降低系统的整体性能。因此,通常情况下,推荐设置为等级 3,因为此时只有发生错误的情况下,才会将信息记录到日志中,辅助定位绝大多数的错误。
获取日志记录或修改日志等级时用到的命令如下:
查看各模块的日志等级,可以使用命令 cat /proc/umap/logmpp,此命令会列出所有模块日志等级。
修改某个模块的日志等级,可使用命令 echo “venc=4” > /proc/umap/logmpp,其中 venc 是模块名,与 cat 命令列出的模块名一致即可。
修改所有模块的日志等级,可以使用命令 echo “all=4” > /proc/umap/logmpp。
获取日志记录,可以使用命令 cat /dev/logmpp,此命令将打印出所有的日志信息;如果日志已读空,命令会阻塞并等待新的日志信息,可以使用 Ctl+C 退出。
也可以使用 open、 read 等系统调用来操作/dev/logmpp 这个设备节点。
cat /proc/umap/logmpp
-----LOG BUFFER STATE----------------------------------------------------------
MaxLen ReadPos WritePos ButtPos64(KB) 0 0 65536-----CURRENT LOG LEVEL---------------------------------------------------------
vb : 3
sys : 3
region : 3
chnl : 3
vpss : 3
venc : 3
vda : 3
h264e : 3
jpege : 3
vou : 3
viu : 3
rc : 3
aio : 3
ai : 3
ao : 3
aenc : 3
adec : 3
isp : 3
ive : 3
tde : 3
vgs : 3
h265e : 3
二、内存使用
1、DDR内存管理说明
1)所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。
2)OS内存起始地址为0x80000000,内存大小可通过bootargs进行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配给操作系统内存为64M,您可以根据实际情况进行调整。
可使用cat /proc/meminfo 查看内存信息
/mnt/mpp # cat /proc/meminfo
MemTotal: 124164 kB
MemFree: 107540 kB
Buffers: 0 kB
Cached: 5992 kB
SwapCached: 0 kB
Active: 1484 kB
Inactive: 5116 kB
Active(anon): 612 kB
Inactive(anon): 0 kB
Active(file): 872 kB
Inactive(file): 5116 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 632 kB
Mapped: 652 kB
Shmem: 4 kB
Slab: 5212 kB
SReclaimable: 780 kB
SUnreclaim: 4432 kB
KernelStack: 336 kB
PageTables: 124 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 62080 kB
Committed_AS: 1784 kB
VmallocTotal: 892928 kB
VmallocUsed: 10588 kB
VmallocChunk: 870824 kB
使用free查看内存使用情况
/mnt/mpp # freetotal used free shared buffers
Mem: 124164 16632 107532 0 0
-/+ buffers: 16632 107532
Swap: 0 0 0
扩展:在/proc/meminfo 显示的 MemTotal 为什么不等于cmdline 里的配置 mem=xxxM?
因为内核在启动时 reserved 了一些内存,如内核的代码段, pmem 里 reserved 的内存。我们看到的 MemTotal 的大小已经减去了内核早期保留的内存块。
3)MMZ内存由MMZ内核模块管理(mpp/ko_hi35xx目录下的mmz.ko),加载mmz模块时,通过模块参数指定其起始地址及大小,load脚本中根据osmem大小来进行计算,例如:
./load3516a -a -sensor mn34220 -osmem 64
您也可以通过修改mpp/ko目录下load3516a脚本中的mmz模块参数,来修改其起始地址和总大小。
4)请注意MMZ内存地址范围不能与OS内存重叠。
load3516a脚本中的mmz模块参数:
####################Variables Definition##########################SNS_TYPE=mn34220 # sensor typemem_total=512; # 512M, total mem
mem_start=0x80000000; # phy mem startos_mem_size=64; # 64M, os mem
mmz_start=0x84000000; # mmz start addr
mmz_size=128M; # 128M, mmz size##################################################################
注意:
(1)用户在配置启动参数时需要设置OS的管理内存为64M,“setenv bootargs 'mem=64M ...”。
(2)系统启动后,配置load3516a脚本中指定总内存为512(mem_total=512),加载时指定osmem为64(-osmem 64),则MMZ管理的内存为448M。(如果未指定按照上面分配的)
(3)如果有特殊应用,可以自行修改load3516a脚本,进行mmz区域划分,如“insmod mmz.ko mmz=anonymous,0,0x84000000,442M:jpeg,0,0x9fa00000,5M anony=1”。
“mmz =” 用来定义 media-mem 的分配池,格式为:
mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:……
<name>:字符串,分配池的名字,例如 ddr。
<gfp>:数字,表示分配池的属性,主要用于在有多种内存的单板上指定 MMZ 位于哪种内存上(比如 DDR、 SDRAM、 DDR2、 DDR3),为 0 表示自动,目前一般都直接将该值置为 0。
<phys_start_addr>: 分配池的物理起始位置, 16 进制数, 如 0x86000000; 注意 MMZ的内存区域不能与 linux 内核的内存区域重叠, MMZ 的物理起始位置就要从“内存起始地址+linux 内核使用的内存大小”开始。 在 Hi353x 平台上,内存的起始地址固定为 0x80000000;举例说明如下:假设单板的 bootargs 为 'mem=96M console=ttyAMA0,115200 root=xxxx', 这表示 linux 内核将使用 96M 的内存空间,那么 MMZ 的起始地址应该配置为 0x80000000+96M = 0x86000000。
<size>:分配池的大小,可以使用如下两种表示方式: 0x100000、 1M。 注意分配池的大小加上 linux 内核的内存大小不能超过物理内存的实际大小。 比如单板上的物理内存是 256M 大小, linux 内核使用了 96M, MMZ 就只能使用最多 256-96=160M。
以上每一个参数都是必需的,参数之间用“ ,”号分隔,可以指定多个分配池,之间用“:”号分隔。 例如: modprobe mmz mmz =ddr,0, 0x86000000,64M:vdec,0, 0x8A000000, 64M。
三、如何查看和修改寄存器
在程序中可以使用 HI_SYS_ReadRegister, HI_SYS_WriteRegister 接口进行寄存器的读写操作。
在单板命令行下,使用工具。
单板/usr/sbin 目录下,有一系列寄存器操作相关的工具,分别介绍如下:
工具 |
参数 |
功能 |
备注 |
hmm |
参数 1: address,必选 |
把 address 对应的地址 |
如果没有输入 value,himm 会把 address 对 |
himd |
参数 1: address,必选 |
从 address 开始,以大 |
如果没有输入length, 那么默认打印256 字节。 |
himd.l |
参数 1: address,必选 |
从 address 开始,以小 |
如果没有输入length, 那么默认打印256 字节。 |
himc |
参数 1: address,必选 |
从 address 开始,把 |
一般仅用于物理内存内容的修改。 |
参数 address 既可以是寄存器地址,也可以是内存地址,所以以上工具也可以用于内存查看、修改。
所需寄存器在:Hi3516A/Hi3516D 专业型HD IP Camera Soc用户指南 查找
~ # himd.l 0x20120004
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himd.l
====dump memory 0x20120004====
0000: 00400000 00525101 00000000 ffffffff
0010: 000f0066 00000000 00000000 00000012
0020: 00001234 00000000 00000000 00000000
0030: 00000000 00000123 00000000 00000000
0040: 00000000 00001234 00000000 00000000
0050: 00000000 26666400 66666112 66266666
0060: 00000011 00000000 00000000 00000000
0070: 00000000 800311a0 029991c5 0009092a
0080: 00000000 00000000 00000000 00000000
0090: 00000000 00000000 00000000 00000000
00a0: 00000000 00000000 00000000 00000000
00b0: 00000000 00000000 00000000 00000000
00c0: 00000000 00f22c2c ff035144 08000001
00d0: 07072424 1e1ec001 24242424 0000000d
00e0: 00000000 00000000 00000000 02020202
00f0: 02020202 00000000 00000000 00000000
[END]
四、查看错误码
hi3516a + bt1120 (hdmi it6604e)
執行 ..../mpp/sample/vio/sample_vio 0
IsSensorInput = 5
bt656
[SAMPLE_COMM_VPSS_StartGroup]-88: HI_MPI_VPSS_CreateGrp failed with 0xa0078010!
[SAMPLE_VIO_1080P_PreView]-184: start VPSS GROUP failed!
如上出现错误码0xa0078010, 查看文档 HiMPP IPC V2.0 媒体处理软件开发参考。结果如下:
0xA0078010 HI_ERR_VPSS_NOTREADY VPSS 系统未初始化
五、查看/proc/umap/目录文件
/proc/umap # ls
acodec aenc ao h264e hifb0 isp jpege rc sys vb venc vi vpss
adec ai chnl h265e higo ive logmpp rgn tde vda vgs vo
cat /proc/umap/vi
[VIU] Version: [Hi3520A_MPP_V1.0.0.0 Debug], Build Time: [Jul 13 2012, 16:36:55]
-----MODULE PARAM--------------------------------------------------------------
detect_err_framen
-----VI DEV ATTR---------------------------------------------------------------
Dev IntfM WkM ComMsk0 ComMsk1 ScanM AD0 AD1 AD2 AD3 Seq0 BT656 4Mux ff000000 0 I -1 -1 -1 -1 UYVY
-----VI HIGH DEV ATTR---------------------------------------------------------------
Dev InputM WkM ComMsk0 ComMsk1 ScanM AD0 AD1 AD2 AD3 Seq CombM CompM ClkM Fix FldP
-----VI PHYCHN ATTR------------------------------------------------------------
PhyChn CapX CapY CapW CapH DstW DstH CapSel Mirror Filp PixFom SrcRat DstRat0 0 0 720 576 720 576 both N N sp420 -1 -1
-----VI PHYCHN MINOR ATTR------------------------------------------------------------
PhyChn CapX CapY CapW CapH DstW DstH CapSel Mirror Filp PixFom MixCap DwScal
-----VI PHYCHN STATUS 1----------------------------------------------------------
PhyChn Dev IntCnt VbFail LosInt TopLos BotLos BufCnt IntT SendT Field Stride0 0 10479 0 1 0 1 1 64 55 intl 720
-----VI PHYCHN STATUS 2---------------------------------------------------------
PhyChn ccErrN IntRat0 1 24
-----VI CHN STATUS-------------------------------------------------------------
ViChn bEnUsrP FrmTime FrmRate SendCnt SwLost0 N 40000 25 10478 0
# cat /proc/umap/h264e
[H264E] Version: [Hi3520A_MPP_V1.0.0.0 Debug], Build Time[Jul 13 2012, 16:36:53]
-----CHN ATTR------------------------------------------------------------------ID Width Height profile MainStr RefMode BufSize ByFrame MaxStrCnt0 720 576 base Yes 1X 829440 Yes 200
-----PICTURE INFO--------------------------------------------------------------ID EncdStart EncdSucceed Lost Disc Skip BufLeak Recode RlsStr UnrdStr0 10477 10477 0 0 0 0 0 10477 0
-----STREAM BUFFER-------------------------------------------------------------ID Base RdTail RdHead WrTail WrHead DataLen BufFree 0 0xcb700000 0x7c40 0x7c40 0x7c40 0x7c40 0 829376
-----ROI INFO------------------------------------------------------------------ID index bAbsQp Qp width height startx starty
-----Syntax INFO---------------------------------------------------------------ID slcsplt slcmode slcsize0 No N/A N/A
-----Inter & Intra prediction INFO---------------------------------------------ID profile HWsize VWsize P16x16 P16x8 P8x16 P8x8 MvExt I16x16 Inxn Ipcm0 base 5 2 Yes Yes Yes Yes Yes Yes Yes Yes
-----Syntax INFO--------------------------------------------------------------ID profile EntrpyI EntrpyP Itrans ptrans QMatrix POC DblkIdc alpha beta0 base cavlc cavlc 4x4 4x4 No 2 0 5 5
# cat /proc/umap/venc
[VENC] Version: [Hi3520A_MPP_V1.0.0.0 Debug], Build Time[Jul 13 2012, 16:36:54]
-----VENC CHN ATTR-------------------------------------------------------------NO. Width Height Type Field VIField StreamType ByFrame BlockFlag Sequence Registered LeftBytes LeftFrm CurPacks0 720 576 96 0 0 1 1 0 10477 1 0 0 1
-----VENC STREAM STATE------------------------------------------------------------NO. FreeCnt BusyCnt UserCnt UserGet UserRls GetTimes Interval FrameRate0 8 0 0 11737 11737 10477 5 24
Hi3516A开发-- 常见问题FAQs相关推荐
- React.js 开发常见问题
React.js 开发常见问题 我需要为 React.js 雇用专门的开发人员,还是说只要会 JavaScript 的员工就行? 如果你有了一支熟练的 JavaScript 开发团队,那么使用 Rea ...
- Hi3516A开发-- OSD功能实现
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/79075800 网上相关功能实现资料有很多,关键操作:海思osd+freety ...
- Hi3516A开发-- UBI 文件系统使用指南
这篇文章在 Hi3516A V100R001C01SPC050\02.Only for Reference\02.software\documents_cn\UBI 文件系统使用指南.pdf 拿出来只 ...
- Hi3516A开发-- 板卡串口烧写
uboot使用loady命令进行串口传输 新改版的板卡,网络无法使用,uboot可以起来,但是内核和文件系统镜像,没法烧写. 在无网络的情况下,SecureCRT使用loady命令进行串口传输,烧写内 ...
- Hi3516A开发--视频输入和输出接口
海思hi3516A芯片的开发板,接口类型多样,有hdmi.sdi.cvbs.cmos的输入类型. 参看于:海图电子--Hi3516A开发板 一.hi3516A HDMI 编码板接口如下: 硬件接口: ...
- Hi3516A开发--编译内核、uboot
操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇到的问题总结 首先SDK安装 拷贝Hi3516A_SDK_V1.0.5.0.tgz至Linux下 #tar -zxvf ...
- 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...
[i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...
- ARKit从入门到精通(11)-ARKit开发常见问题及解决方案
转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题 2.ARKit运行黑屏或者白屏问题:Un ...
- ArcGIS Engine 10 开发常见问题的解决方法
ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...
最新文章
- oracle11g数据库升级
- 多线程并行和并发的区别
- 被边缘化的“卓越亚马逊”
- 介绍一个欧神写的剪贴板多端同步神器
- 从Visual Studio中生成Linux设备
- 医院(jzoj 1611)
- 微信模版消息 touser 能否多个 群发
- php根据汉字首字母分组,利用PHP获取汉字首字母并且分组排序详解
- Linux中usr目录
- Nervos DAO锁定总额突破100亿,近日解锁的14.28亿生态基金已被全部存入
- Bailian2682 循环移动【模除】
- [biztalk笔记]-1.Hello World!
- MIT 6.828 main.c文件分析
- CSS3 transform-style 属性
- 《JSP实用教程(第2版)/耿祥义》错误之tomcat虚拟服务目录
- 斯凯奇诉爱马仕侵权——品牌发展需警惕知识产权侵权
- idea启动webservice_Idea实现WebService实例
- java 忽略微信表情,java过滤微信表情符号
- Linux网络的网络配置(超详细,百分百成功)
- MTCNN论文翻译 人脸检测
热门文章
- 【CentOS】磁盘管理与vim编译器
- Eclipse 4.4.2 取消空格键代码上屏
- jQuery $.post $.ajax用法
- velocity 继续之 语法学习篇
- 转贴:[转]所有 OLE api 和接口的目的
- MATLAB中squeeze函数的作用
- iis无法启动计算机上的服务器,Win7系统iis无法启动怎么解决?
- caffe源码分析:softmax_layer.cpp softmax_loss_layer.cpp
- 【随笔】深度学习的数据增强还分在线和离线?
- [云炬创业基础笔记]盈利构造