海思3559:MMZ内存、OS内存配置

article/2025/9/29 11:07:48

前言

  海思3559的DDR最大支持到8GB

hi3559av100芯片的内存地址范围


在这里插入图片描述
  (1)通过查阅数据手册可知《Hi3559AV100 专业型 Smart IP Camera SoC 用户指南》,芯片的内存地址范围是0x4000_0000-0x23FFF_FFFF,最大能支持8G内存;
  (2)海思芯片把内存分为mmz内存和os内存,最终linux系统能管理的内存是小于实际接的内存大小,因为要分一部分内存作为mmz;

内存管理

在海思芯片中,将内存划分为OS内存和MMZ内存,板子上的8G内存一部分做OS内存,一部分做MMZ内存;

OS内存:

  就是分配给linux内核管理的内存,分配给内核和应用程序使用;也就是cat /proc/cmdline看到的
mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),128M(rootfs)操作系统内存512MB

MMZ(Media Memory Zone,多媒体内存区域):

  是海思芯片独有的,因为海思芯片是专门用来做音视频编解码的芯片,需要使用大量内存,为了编解码的速度,海思驱动底层会管理一部分内存,专门用于音视频编解码;
  (1)mmz: Media-Memory-Zone,媒体内存域,也就是分配池;
  (2)mmb: Media-Memory-Block,媒体内存块;
  (3)MMZ管理的物理内存区域不属于linux内核控制,是单独给媒体驱动(如解码器、DEMUX)使用的物理内存区域。 MMB是指从MMZ中分配的内存块;
  (4)MMZ驱动管理用户创建的分配池,用户程序分配内存的时候可以指定要在哪个分配池中分配内存,分配器将查找满足要求的分配池并从中分配合适的内存块给程序使用;
  (5)MMZ是可以存在多个分配池的,用户申请内存块时可以指定从哪个分配池获取,也可以不指定分配池,分配器自动分配一个满足条件的内存块;
  (6)分配池的配置是在加载hi_osal.ko驱动时指定的,不同的SDK可能驱动的名字不一样;

总结

  (1)分配的OS内存和MMZ内存加起来的总大小不能超过实际物理内存的大小;
  (2)OS内存和MMZ内存互相之间的内存地址不能重合,否则会产生内存踩踏;
  (3)总的物理内存大小不变的情况下,OS内存和MMZ内存之间的分配是此消彼长,两者之间分配的份额需要取得平衡,以达到最优性能;
  也就是说将实际物理内存分成两部分——OS内存和MMZ内存,两部分内存的管理是彼此独立的;

设置MMZ内存

驱动参数

mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:

在这里插入图片描述

驱动加载

  SDK2.0.3.1版本ko目录下load3559av100_multicore

mmz_start=0x64000000;         # mmz start addr
mmz_size=1472M;               # 3520M, mmz size
insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error

  mmz=anonymous表示第一块MMZ内存的名字是anonymous
  mmz_start表示起始地址是0x64000000
  mmz_size表示内存大小分配了1472M;

查看MMZ内存:/proc/media-mem

在这里插入图片描述
  MMZ内存有名字是anonymous,大小是1507328KB,和我们设置的一致

设置OS内存

bootargs

uboot加载是setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),128M(rootfs)'

查看OS内存 free

在这里插入图片描述

最终内存分配

-----|----------------|  0x40000000   # DDR起始地址                                                          
64M	 |      DSP       |                                                 
-----|----------------|  0x44000000   #kernel起始地址                                                      
512M |    kernel      |                                                 
-----|----------------|  0x64000000   #MMZ起始地址     
1472M| MMZ:anonymous  | 
-----|----------------|  0x13FFFFFFF  # End of memory managed by MMZ.

http://chatgpt.dhexx.cn/article/8DPXpmRZ.shtml

相关文章

劲爆!java架构师百度网盘

第一份资料:Kafka实战笔记 Kafka入门为什么选择KafkaKarka的安装、管理和配置Kafka的集群第一个Kafka程序afka的生产者 Kafka的消费者深入理解Kafka可靠的数据传递

10本Java架构师必读书籍推荐

##### 1.《大型网站系统与Java中间件开发实践》 本书围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入&#xff0c;让读者对分布式系统有基本的了解&#xff1b;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁&#xff1b;接着…

Java架构师需要哪些知识?

如何才能达到Java架构师技术要求标准&#xff1f;Java架构师需要熟练掌握复杂的数据结构和算法、熟练使用linux操作系统&#xff0c;Linux线上排除故障、熟悉tcp协议、系统集群、[负载均衡]、反向代理、动静分离&#xff0c;网站静态化、数据库设计能力、队列中间件等知识。 一…

JAVA架构师之路十六:设计模式之责任链模式

JAVA架构师之路十五&#xff1a;设计模式之策略模式 责任链模式 1. 责任链模式2. 登陆案例 3. 登陆案例优化 人生的游戏不在于拿了一副好牌&#xff0c;而在于怎样去打好坏牌&#xff0c;世上没有常胜将军&#xff0c;勇于超越自我者才能得到最后的奖杯。 1. 责任链模式 定义…

BAT面试高级进阶,Java架构师之路

说明 Java生鲜电商平台中由于采用了微服务架构进行业务的处理&#xff0c;买家&#xff0c;卖家&#xff0c;配送&#xff0c;销售&#xff0c;供应商等进行服务化&#xff0c;但是不可避免存在分布式事务的问题。 业界有很多的解决方案&#xff0c;对此我相信大家都百度一下…

JAVA架构师之路-视频学习

https://pan.baidu.com/s/1GK-HNdG_HsNTb_QQ6_L3Tg 目录&#xff1a; 第一套 JAVA高级架构师之旅 第2套 Java互联网架构师netty、mina、nio 第三套 阿里开源Dubbo 【第四套】互联网综合实战项目介绍 【第五套】高性能缓存Memcached服务深度原理及实战视频课程 【第六套】高级J…

JAVA架构师之路十五:设计模式之策略模式

JAVA架构师之路十四&#xff1a;设计模式之模板模式 策略模式 1. 策略模式2. 优惠券案例3. 支付案例 人生的游戏不在于拿了一副好牌&#xff0c;而在于怎样去打好坏牌&#xff0c;世上没有常胜将军&#xff0c;勇于超越自我者才能得到最后的奖杯。 1. 策略模式 定义 策略模式…

走向Java架构师之路:成为架构师要掌握的8大能力

架构师是什么?是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。 如何才能达到Java架构师技术要求标准?Java架构师需要熟练…

JAVA架构师之路十一:设计模式之适配器模式

JAVA架构师之路十&#xff1a;设计模式之组合模式 适配器模式 1. 适配器模式2. 类适配器写法3. 对象适配器写法4. 接口适配器写法 钟表&#xff0c;可以回到起点&#xff0c;但已不是昨天。 生活中处处可见适配现象&#xff1a;手机充电器的充电头&#xff0c;电脑电源适配器&…

Java架构师:概述

一、Java架构师核心技术栈 二、架构师需要具备的其他能力 三、技术选型 四、早期传统JavaWeb开发模式 五、前后端分离开发模式 六、Maven聚合项目 七、数据库设计工具PDMan 八、数据库外键弊端【移除物理外键&#xff0c;而非逻辑外键】 数据库表与表之间字段间不要有物理外键…

Java架构师之路:微服务架构图解和详情

微服务框架搭建&#xff1a; 总体规划框架名称当前技术选型方案微服务框架搭建 开发框架 单体服务SpringBoot 分布式框架SpringCloud 最新框架SpringCloudAlibaba 服务配置中心 服务消息总线 阿里巴巴Nacos、 ConfigBusRabbitMQ配合使用、 携程apolo 服务网关 Spr…

java架构师进阶之路

要想进阶为架构师&#xff0c;不仅要有知识广度&#xff0c;还要有深度。 最近把今天收集的java学习资料整理了下&#xff0c;里面包含了计算机基础、算法和数据结构、常用工具、java核心知识、性能优化、基础框架、数据库、消息队列、缓存中间件、搜索引擎、大数据、RPC、网关…

通往Java架构师之路

Java架构师&#xff0c;应该算是一些Java程序员们的一个职业目标了吧,很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢&#xff0c;总体来说呢&#xff0c;有两方面&#xff0c;一个是基础技术&#xff0c;另一个就是组织能力和提出解决方案能力。…

如何成为Java架构师?学习路线是怎样的?大佬总结成长之路跟着往上走,建议你提早开始准备!

导读 好程序员告诉你Java架构师学习路线&#xff0c;从初级Java工程师成长为Java架构师&#xff0c;你需要走很长的路&#xff0c;很多有计划的人在学习之初就在做准备。你知道Java架构师学习路线该怎么走吗?成为一个优秀的Java架构师究竟需要学什么?接下来就跟小编一起揭晓…

从三方面分析,Java程序员如何晋升为高薪Java架构师?

对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。下面,我从架构师在一家公司有多重要、优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析,Java程序员如何才能晋升为优秀的高薪Java架构师? 希望通过本文我的分…

getByte()用法小结

在Java中&#xff0c;String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同情况下&#xff0c;返回的东西不一样&#xff01; String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示&#xff0c;如&a…

java中String的getByte()方法

Java getBytes() 方法 Java String类 getBytes() 方法有两种形式&#xff1a; getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列&#xff0c;并将结果存储到一个新的 byte 数组中。getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列&#…

JAVA中的getBytes方法

在Java中&#xff0c;String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同情况下&#xff0c;返回的东西不一样&#xff01; String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示&#xff0c;如&a…

JAVA中的getBytes()方法

在Java中&#xff0c;String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同情况下&#xff0c;返回的东西不一样&#xff01; String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示&#xff0c;如&a…

Java数组作业题

计算一维数组中最大值和最小值的数据之和; package org.oracle.test;public class Arr01 {public static void main(String[] args) {int[] arr { 6, 3, 2, 7, 9, 1, 5, 4, 4, 4, 10, 9 };int max arr[0];int min arr[0];for (int i 1; i < arr.length; i) {if (max &l…