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. 小知识:开启NTP服务并设置为开机启动

    我的一套测试环境发现时间慢了10分钟,影响我做各类测试. 首先就想到NTP服务,发现已安装NTP安装包,也有默认的NTP配置文件,只是没有启用. 用到的相关命令参考如下: [root@bogon ~] ...

  2. 深入浅出 testing-library

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:佳岚 The more your tests resemb ...

  3. ASP.NET Core分布式项目实战(Consent视图制作)--学习笔记

    任务19:Consent视图制作 按照上一节 Consent 的思路 在 mvcCookieAuthSample 项目的 Controllers 文件夹下新建一个 ConsentController ...

  4. Linux-sshpass(shell脚本使用ssh远程执行命令通过密码的方式登录)

    1. sshpass简介 sshpass 是一个在非交互式 ssh 会话中自动输入密码的工具.它可以直接在命令行中指定密码,因此可以用于 Shell 脚本等自动化场景.在 Red Hat 系统中,可以 ...

  5. NC50381 道路和航线

    题目链接 题目 题目描述 FarmerJohn正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇,编号为1到T.这些城镇之间通过R条道路(编号为1到R)和P条航线(编号为1到P)连 ...

  6. NC16696 [NOIP2001]统计单词个数

    题目链接 题目 题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份( 1 < k ≤ 40 ...

  7. 基于HTTP2/3的流式请求/响应如何实现?

    我想很多人已经体验过GRPC提供的三种流式消息交换(Client Stream.Server Stream和Duplex Stream)模式,在.NET Core上构建的GRPC应用本质上是采用HTT ...

  8. 【Lua】xLua逻辑热更新

    1 前言 ​ Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新. ​ 逻辑热更新 ...

  9. centos7搭建postgresql主从(主备)架构

    本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构.后续更高级的HA模式都是基于这个最基本的主备搭建. 节点规划 ip 主机名 用途 192.168.18 ...

  10. Direct2D CreateBitmap的使用

    当需要设置位图的混合模式时,应该使用ID2D1DeviceContext而不是ID2D1RenderTarget. 代码如下: #define WIN32_LEAN_AND_MEAN #include ...