一、查看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,必选
参数 2: value,可选

把 address 对应的地址
改写为 value

如果没有输入 value,himm 会把 address 对
应的值打印出来,然后提示输入新的值。

himd

参数 1: address,必选
参数 2: length,可选

从 address 开始,以大
端方式打印 length 字节
长度的内容。

如果没有输入length, 那么默认打印256 字节。

himd.l

参数 1: address,必选
参数 2: length,可选

从 address 开始,以小
端方式
打印 length 字节
长度的内容。

如果没有输入length, 那么默认打印256 字节。

himc

参数 1: address,必选
参数 2: value,必选
参数 3: length,必选

从 address 开始,把
length 字节长度的内容
全部设置为 value。

一般仅用于物理内存内容的修改。

参数 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相关推荐

  1. React.js 开发常见问题

    React.js 开发常见问题 我需要为 React.js 雇用专门的开发人员,还是说只要会 JavaScript 的员工就行? 如果你有了一支熟练的 JavaScript 开发团队,那么使用 Rea ...

  2. Hi3516A开发-- OSD功能实现

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/79075800 网上相关功能实现资料有很多,关键操作:海思osd+freety ...

  3. Hi3516A开发-- UBI 文件系统使用指南

    这篇文章在 Hi3516A V100R001C01SPC050\02.Only for Reference\02.software\documents_cn\UBI 文件系统使用指南.pdf 拿出来只 ...

  4. Hi3516A开发-- 板卡串口烧写

    uboot使用loady命令进行串口传输 新改版的板卡,网络无法使用,uboot可以起来,但是内核和文件系统镜像,没法烧写. 在无网络的情况下,SecureCRT使用loady命令进行串口传输,烧写内 ...

  5. Hi3516A开发--视频输入和输出接口

    海思hi3516A芯片的开发板,接口类型多样,有hdmi.sdi.cvbs.cmos的输入类型. 参看于:海图电子--Hi3516A开发板 一.hi3516A HDMI 编码板接口如下: 硬件接口: ...

  6. Hi3516A开发--编译内核、uboot

    操作之前先安装必要的软件: 参看:Hi3516A开发--编译整个osdrv目录所遇到的问题总结 首先SDK安装 拷贝Hi3516A_SDK_V1.0.5.0.tgz至Linux下 #tar -zxvf ...

  7. 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...

    [i.MX6UL/i.MX6ULL开发常见问题]2.3单独编译内核,uboot生成很多文件,具体用哪一个? 答:内核编译出来的文件是~/MYiR-imx-Linux/arch/arm/boot/目录下 ...

  8. ARKit从入门到精通(11)-ARKit开发常见问题及解决方案

    转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题 2.ARKit运行黑屏或者白屏问题:Un ...

  9. ArcGIS Engine 10 开发常见问题的解决方法

    ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...

最新文章

  1. oracle11g数据库升级
  2. 多线程并行和并发的区别
  3. 被边缘化的“卓越亚马逊”
  4. 介绍一个欧神写的剪贴板多端同步神器
  5. 从Visual Studio中生成Linux设备
  6. 医院(jzoj 1611)
  7. 微信模版消息 touser 能否多个 群发
  8. php根据汉字首字母分组,利用PHP获取汉字首字母并且分组排序详解
  9. Linux中usr目录
  10. Nervos DAO锁定总额突破100亿,近日解锁的14.28亿生态基金已被全部存入
  11. Bailian2682 循环移动【模除】
  12. [biztalk笔记]-1.Hello World!
  13. MIT 6.828 main.c文件分析
  14. CSS3 transform-style 属性
  15. 《JSP实用教程(第2版)/耿祥义》错误之tomcat虚拟服务目录
  16. 斯凯奇诉爱马仕侵权——品牌发展需警惕知识产权侵权
  17. idea启动webservice_Idea实现WebService实例
  18. java 忽略微信表情,java过滤微信表情符号
  19. Linux网络的网络配置(超详细,百分百成功)
  20. MTCNN论文翻译 人脸检测

热门文章

  1. 【CentOS】磁盘管理与vim编译器
  2. Eclipse 4.4.2 取消空格键代码上屏
  3. jQuery $.post $.ajax用法
  4. velocity 继续之 语法学习篇
  5. 转贴:[转]所有 OLE api 和接口的目的
  6. MATLAB中squeeze函数的作用
  7. iis无法启动计算机上的服务器,Win7系统iis无法启动怎么解决?
  8. caffe源码分析:softmax_layer.cpp softmax_loss_layer.cpp
  9. 【随笔】深度学习的数据增强还分在线和离线?
  10. [云炬创业基础笔记]盈利构造