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

news2024/10/7 1:21:36

前言

  海思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://www.coloradmin.cn/o/704344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab绘制多个曲线的图及局部放大细节展示

绘制多个曲线的图及局部放大细节展示 在科学研究中&#xff0c;经常需要绘制多个曲线并展示局部放大的细节(如下图)。 本篇博客介绍了如何使用MATLAB绘制多个曲线&#xff0c;并在同一张图中添加局部放大图&#xff0c;以展示具体细节。 示例数据 首先&#xff0c;我们准备…

六、2.云尚办公-权限管理

云尚办公系统&#xff1a;前端权限对接&#xff08;了解&#xff09; B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步…

pcl经典算法60例——(1)打开并显示点云

一、搭建MFC框架 1、环境说明 本教程为vs2022&#xff0c;pcl1.12.1版本&#xff0c;其他版本自己进行适当修改&#xff0c;仅供参考。 2、方法步骤 (1)新建项目&#xff0c;选择“基于对话框”&#xff0c;然后点击“下一步” 二、配置pcl环境 关于配置环境&#xff0c;网…

Linux--man指令

语法&#xff1a; man [选项] 命令 功能&#xff1a; 查询命令的详细信息&#xff0c;包括man命令本身 选项&#xff1a; -k 根据关键字搜索联机帮助num 只在第num章节找-a 将所有章节的都显示出来&#xff0c;比如 man printf 它缺省从第一章开始搜索&#xff0c;知道就停止…

spring security登录接口鉴权原理

使用了gatewayspring security,项目当初打算使用gateway统一鉴权的&#xff0c;整合步骤点击此处 当时没有深入security&#xff0c;今天偶然看代码发现验证密码的时候加密了&#xff0c;但是登录表单提交的密码没有加密。看下代码吧 登录接口验证账号密码是否正确 postman登录…

Vue如何生成二维码 qrcode.js2

QRCode.js是一个二维码生成javascript库&#xff1b;支持跨浏览器的HTML5 Canvas和表格标签的DOM操作&#xff1b;并且不依赖其它的库或拓展。 官网地址&#xff1a;https://davidshimjs.github.io/qrcodejs/ 安装方式&#xff1a;&#xff08;qrcode.js有两个版本我用的是第…

软件测试练手项目,可以写进简历里面的项目实战

最近收到许多自学自动化测试的小伙伴私信&#xff0c;学习了理论知识后&#xff0c;却没有合适的练手项目。 测试本身是一个技术岗位&#xff0c;如果只知道理论&#xff0c;没有实战经验&#xff0c;在面试中很难说服面试官&#xff0c;比如什么场景下需要添加显示等待&#x…

LIN诊断实现MCU本地OTA升级

一、目标 通过PC端上位机实现MCU本地的OTA升级,本篇文章对实现的目的、需要用到的第三方工具、LIN诊断帧、升级协议、MCU端升级过程以及PC端升级过程做详细说明。 二、目的 最近在做MCU项目时需要将样机寄给客户进行验证,在客户的验证过程中要求参数可调试,如果需要修改软…

【AUTOSAR】BMS开发实际项目讲解(二十二)----电池管理系统高压绝缘保护

高压绝缘保护 关联的系统需求 TSR-BMS-5101、TSR-BMS-5102、TSR-BMS-5103、TSR-BMS-5104、TSR-BMS-5105、TSR-BMS-5106、TSR-BMS-5107、TSR-BMS-5108、TSR-BMS-5109、TSR-BMS-5110、TSR-BMS-5111、TSR-BMS-5112、TSR-BMS-5113、TSR-BMS-5114、TSR-BMS-5115、TSR-BMS-5116; TSR…

图像平滑处理:cv::filter2D()函数详解

cv::filter2D 函数可以对图像进行线性滤波。 函数可以对图像进行线性滤波。该函数使用指定的卷积核对输入图像进行卷积&#xff0c;以计算输出图像中每个像素的值。 该函数的原型如下&#xff1a; void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArr…

JAVA IO流 File 字节流 字符流(tedu)

JAVA IO流 File 字节流 字符流(tedu) 目录 JAVA IO流 File 字节流 字符流(tedu)IO简介1 流Stream2 IO流的继承结构3 File文件类3.1概述3.2创建对象3.3 常用方法 4 字节流读取4.1 InputStream抽象类4.2 FileInputStream子类4.3 BufferedInputStream子类4.4 练习&#xff1a;字节…

Radio Transmission

[BOI2009] Radio Transmission 无线传输 题目描述 给你一个字符串 s 1 s_1 s1​&#xff0c;它是由某个字符串 s 2 s_2 s2​ 不断自我连接形成的&#xff08;保证至少重复 2 2 2 次&#xff09;。但是字符串 s 2 s_2 s2​ 是不确定的&#xff0c;现在只想知道它的最短长度…

亚马逊云科技如何通过四大自研芯片助力企业创新,摆脱基础架构束缚

2023年6月27-28日&#xff0c;2023亚马逊云科技中国峰会在上海顺利举行。在此次峰会上我们可以清晰地看到为什么亚马逊云科技可以做到领先地位&#xff0c;为什么亚马逊云科技可以一直保持进步。这都与亚马逊云科技“基于客户需求&#xff0c;快速进行产品更新与技术迭代”的Da…

ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题&#xff0c;RPS 和 RFS 网卡多队列性能调优实践[1]&#xff0c;对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路&#xff0c;如果你是想了解…

使用Prometheus+Grafana实现监控

使用PrometheusGrafana实现监控 我们用 actuator 暴露应用本身的线程、bean 等信息&#xff0c;但是这些信息还是独立于 Prometheus 之外的。下面我们 将介绍如何将 SpringBoot Actuator 与 Prometheus 结合起来。 我们同样从 Spring Initializr 创建一个名为 spring-web-pr…

从零开始 Spring Boot 54:@NotNull in Entity

从零开始 Spring Boot 54&#xff1a;NotNull in Entity 图源&#xff1a;简书 (jianshu.com) 之前通过两篇文章介绍了 Hibernate Validation 在 Spring 中的应用&#xff1a; 从零开始 Spring Boot 13&#xff1a;参数校验 - 红茶的个人站点 (icexmoon.cn)从零开始 Spring B…

[RocketMQ] Broker asyncSendMessage处理消息以及自动创建Topic (十)

asyncSendMessage方法用来处理来自producer发送的消息。 文章目录 1.asyncSendMessage异步处理单条消息2.preSend准备响应命令对象2.1 msgCheck检查并自动创建topic2.1.1 createTopicInSendMessageMethod创建普通topic2.1.2 createTopicInSendMessageBackMethod创建重试topc2.1…

浅入浅出Java锁

前提 做分布式爬虫时&#xff0c;结合已有的架构&#xff0c;直接对某网站的详情页进行了爬取&#xff1b;尴尬的是&#xff0c;某网站需先采集列表页&#xff0c;之后才能采集详情页&#xff1b;这种防爬手段使用了用户行为监控&#xff0c;行为异常的访问直接就给屏蔽了。 对…

c++11 日期和时间工具-(std::chrono)

链接 std::chrono是C11引入的日期时间处理库&#xff0c;其中包含3种时钟&#xff1a; system_clock&#xff0c;steady_clock&#xff0c;high_resolution_clock。 定义于头文件 <chrono> std::chrono 库 system_clock steady_clock 链接 链接2 每一次调用time_…