PS:要转载请注明出处,本人版权所有。

PS: 这个只是基于《我自己》的理解,

如果和你的原则及想法相冲突,请谅解,勿喷。

前置说明

  本文作为本人csdn blog的主站的备份。(BlogID=064)

  本文发布于 2018-05-28 15:07:04,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=064)

环境说明

  无

前言


  在本系列第一篇文章的开始,我提出了写本系列文章的原因,就是为了改变当前项目中用到的核心板的内存大小来满足当前的新需求,所以我得根据当前单板的芯片型号然后去判定这个板子的硬件情况。同时也算是在工作中第一次实际项目中用相关知识来处理这个问题,对我来说,也算是对学校中知识的复习吧!

海思的三个内存关系(MMZ,OSMEM,RAM)


  OSMEM:就是我们的操作系统所用的内存,通过free可以看见

  MMZ(Media Memory Zone):此内存是供海思的媒体业务模块使用的内存,常用在音视频编解码等地方。此内存是通过linux driver实现的,在驱动内部对OSMEM没有使用的RAM部分进行内存管理。

  RAM:RAM=OSMEM+MMZ

  下面是一个512MB内存板子的例子(来自于海思SDK)

  DDR:


-----|-------| 0x80000000 # Memory managed by OS. 64M | OS | | | -----|-------| 0x84000000 # Memory managed by MMZ block anonymous. 448M | MMZ | | | -----|-------| 0xA0000000 # Memory managed by MMZ block jpeg.

内存调整


  查看MMZ内存的使用情况:

命令:cat /proc/media-mem
---MMZ_USE_INFO:
total size=159744KB(156MB),used=15164KB(14MB + 828KB),remain=144580KB(141MB + 196KB),zone_number=1,block_number=45

  从这里的情况来看,mmz大概只用了15M的样子,剩余了141M的样子,造成了极大的浪费,考虑到后续对MMZ的一些需求,我这里将MMZ大小调整为26M的样子,做一定的预留。然后OSMEM扩展到230MB(以前是100MB)。然后在对我们的程序里面的使用的内存进行仔细的调整和优化(能用1byte不用2byte,此时内存依然很紧张啊,跑的东西太多了),达到了项目部署要求,不用更换硬件,造成项目成本上升。(注意,MMZ内存占用情况会根据你使用的实际内容改变,比如:流的路数、分辨率、采样率等可能会改变MMZ的占用内存大小,一般板子起来后,用上文的命令查看实际的占用情况,根据实际占用预留一部分内存,然后根据RAM大小来计算即可。)

  现在的MMZ使用情况:

---MMZ_USE_INFO:
total size=26624KB(26MB),used=15164KB(14MB + 828KB),remain=11460KB(11MB + 196KB),zone_number=1,block_number=45

  现在的内存示意图:

    -----|-------|  0x8000 0000   # Memory managed by OS.              

    230M  | OS    |                                                 

         |       |                                                 

    -----|-------|  0x8E60 0000   # Memory managed by MMZ block anonymous.          

    26M | MMZ   |                                                 

         |       |                                                 

    -----|-------|  0x90000000   # Memory managed by MMZ block jpeg.

后记


  无

参考文献


打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)

PS: 请尊重原创,不喜勿喷。

PS: 要转载请注明出处,本人版权所有。

PS: 有问题请留言,看到后我会第一时间回复。

HISI3520DV300 折腾记录(三)之《终篇》的更多相关文章

  1. disruptor笔记之八:知识点补充(终篇)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

    前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...

  3. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  4. 网站静态化处理—web前端优化—下【终篇】(13)

    网站静态化处理—web前端优化—下[终篇](13) 本篇继续web前端优化的讨论,开始我先讲个我所知道的一个故事,有家大型的企业顺应时代发展的潮流开始投身于互联网行业了,它们为此专门设立了一个事业部, ...

  5. Java Learning Path(三)过程篇

    Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...

  6. 前端面试题总结(三)JavaScript篇

    前端面试题总结(三)JavaScript篇 一.谈谈对this的理解? this是一个关键字. this总是指向函数的直接调用者(而非间接调用者). 如果有new关键字,this指向new出来的那个对 ...

  7. JavaScript学习记录三

    title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  8. 跟我学SpringCloud | 终篇:文章汇总(持续更新)

    SpringCloud系列教程 | 终篇:文章汇总(持续更新) 我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: inwsy ...

  9. 我的第一次diy装机记录——小白的装机篇

    接上一篇<我的第一次diy装机记录——小白的配置篇> 处理器 AMD Ryzen 5 2600X 六核主板 微星 B450M MORTAR (MS-7B89) ( AMD PCI 标准主机 ...

  10. JUnit5学习之八:综合进阶(终篇)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. 小知识:NFS卡死问题处理

    现象: df -h发现长时间卡住,无法显示结果. 根据以往运维经验,通常df -h这种操作都无法显示时,首先就要确认是否有NFS挂载的目录,如果有,确认NFS目录是否正常. 这是最常见的情况,最近又遇 ...

  2. Django高级特性:django-apscheduler定时任务

      前言: 在使用Django框架开发web项目时,很多时候需要设置定时任务或让用户手动在页面上设置定时任务 在Django中实现定时任务功能大概有以下三种方法: Celery 分布式任务队列.侧重实 ...

  3. sensitive-word v0.13 特性版本发布 支持英文单词全词匹配

    拓展阅读 sensitive-word-admin v1.3.0 发布 如何支持分布式部署? sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word ...

  4. G water testing题解

    G water testing 题意:给你一个多边形(可能是凸多边形,也可能是凹多边形),问该多边形内有多少个整数点(不包含边界). 思路:皮克定理 + 叉乘计算三角形面积:皮克定理是指一个计算点阵中 ...

  5. centos7 安装vmware tool 遇到遇到 kernel-headers 问题修复

    安装 vmware tool 步骤 1. cp VMwareTools-10.3.25-20206839.tar.gz 到 用户目录下 2. tar zxf VMwareTools-10.3.25-2 ...

  6. requests请求超时尝试重连的3种方式

    参考文档 https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#module-urllib3.util.retry ...

  7. 名校AI课推荐 | MIT6.S191《深度学习导论》

    "连续开设5年,对新手友好.易于上手,参加课程的多数学生来自非计算机科学领域--" 推荐一门AI课程--MIT官方深度学习入门课程6.S191<深度学习导论(2022)> ...

  8. 我的第一个项目(十五) :完成数据保存功能(后端,改update)

    好家伙,   代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: ...

  9. JAVA 考试管理系统 大作业(一):需求分析

    好家伙,有需要的拿去借鉴吧(虽然我也百度了很多) 题目如下: 题目四:考试管理系统 (选做要求:使用图形用户界面) 分3种用户角色:教务员(具有管理权限).教师.学生 l  教务员:可以进行用户管理( ...

  10. 【Azure Logic App】使用Outlook.com发送邮件遇到429报错

    问题描述 在Logic App中使用 Outlook.com组件发送邮件,遇见了outlook connection报429的错误 {"error":{"code&quo ...