【海思SS626 | 内存管理】海思芯片的OS内存、MMZ内存设置

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍海思芯片内存管理 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰: 2024-08-12 09:03:58

本文未经允许,不得转发!!!

目录

  • 🎄一、概述
    • ✨1.1 芯片内存地址范围
  • 🎄二、海思芯片内存管理
  • 🎄三、怎样设置 OS内存 和 MMZ内存
  • 🎄四、怎样查看 OS内存 和 MMZ内存
    • ✨4.1 查看 OS 内存
    • ✨4.2 查看 MMZ 内存
  • 🎄五、总结


在这里插入图片描述

在这里插入图片描述

🎄一、概述

海思芯片的物理内存被划分为两个部分,一块供OS(Operating system,操作系统)使用,另一块就是MMZ(Media Memory Zone,多媒体内存区域)。

本文以海思SS626(22AP20 解码处理器)芯片为例,介绍海思芯片内存管理的相关概念。内存管理相关的SDK文档如下:

  • SS626ReleaseDoc\zh\00.hardware\chip\22AP20 解码处理器用户指南.pdf
  • SS626ReleaseDoc\zh\01.software\board\SS626V100 SDK 安装以及升级使用说明.pdf
  • SS626ReleaseDoc\zh\02.only for reference\software\内存布局调整指南.pdf

✨1.1 芯片内存地址范围

海思SS626的文档 SS626ReleaseDoc\zh\00.hardware\chip\22AP20 解码处理器用户指南.pdf 给出了内存地址范围:0x40000000 ~ 0x23FFFFFFF,最大支持8G内存。
在这里插入图片描述


在这里插入图片描述

🎄二、海思芯片内存管理

海思芯片的物理内存被划分为两个部分,一块供OS(Operating system,操作系统)使用,另一块就是MMZ(Media Memory Zone,多媒体内存区域)。

  • OS(Operating system)内存:就是分配给Linux内核管理的内存,分配给内核和应用程序使用;
  • MMZ(Media Memory Zone)内存:是海思芯片独有的,专门用来处理音视频的内存。因为海思芯片是专门用来做音视频编解码的芯片,需要使用大量内存,为了编解码的速度,海思驱动底层会管理一部分内存,专门用于音视频编解码;这部分内存无法使用 malloc 等应用接口申请,必须使用海思提供的SDK接口申请。

在这里插入图片描述

🎄三、怎样设置 OS内存 和 MMZ内存

设置 OS内存 和 MMZ内存有如下几个步骤:

  • 1、在SS626中,OS内存起始地址为0x40000000。首先通过是uboot启动参数设置操作系统内存,例如setenv bootargs 'mem=512M ... ',表示分配给操作系统内存为512M。设置完进入系统后,可以通过下面命令查看 bootargs 信息:
    # cat /proc/cmdline 
    mem=1024M console=ttyAMA0,115200n8 root=/dev/mmcblk0p3 rootfstype=ext4 rw rootwait blkdevparts=mmcblk0:1M(boot),15M(kernel),300M(rootfs),1M(mdc),3400M(data)
    
  • 2、修改加载驱动的 loadxxxx 脚本,该脚本里有几个与内存相关的参数,mem_total表示总的物理内存,mem_start表示物理内存起始地址(22AP20 解码处理器用户指南.pdf有说明),os_mem_size表示OS内存总大小,mmz_start表示mmz内存物理起始地址,mmz_size表示mmz内存总大小。
    #DDR start:0x40000000;ipcm(0x40000000, 2M); LiteOS(0x40200000, 62M); Linux OS(0x44000000, 1024M); MMZ start:0x84000000
    mem_total=4096                # 4096, total mem
    mem_start=0x40000000          # phy mem start
    ipcm_mem_size=2               # 2M, ipcm size
    liteos_mem_size=62            # 62M, liteos size
    os_mem_size=1024              # 1024M, os memmmz_start=0x84000000;         # mmz start addr; 0x40000000+2M+62M+1024M=0x84000000
    mmz_size=3008M;               # 3008M, mmz size; mem_total - (mmz_start - mem_start)= 4096M-1088M = 3008M
    
  • 3、加载 ot_osal.ko 驱动时,通过参数设置mmz内存。MMZ内存由osal内核模块管理(amp/a55_linux/mpp/out/ko目录下的
    ot_osal.ko),加载osal模块时,通过模块参数指定其起始地址及大小。
    insmod ot_osal.ko anony=1 mmz_allocator=ot mmz=anonymous,0,$mmz_start,$mmz_size || report_error
    # 格式:mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:
    # mmz= : 开始设置mmz内存
    # <name>:名称,这里是 anonymous
    # <gfp>:mmz的属性,目前一般都直接将该值置为0
    # <phys_start_addr>:mmz 内存物理起始地址
    # <size>:mmz内存总大小
    # 如果有多个mmz分配池,可以公共冒号隔开
    
  • 4、请注意,MMZ内存地址范围不能与OS内存重叠,且两者之和不能超过物理内存大小。

在这里插入图片描述

🎄四、怎样查看 OS内存 和 MMZ内存

✨4.1 查看 OS 内存

系统起来后,查看 os 内存,可以使用freecat /proc/meminfo 命令,下面是运行后显示的结果:

运行 free 命令查看os内存情况:

~ # freetotal        used        free      shared  buff/cache   available
Mem:         907180      125328      741436          20       40416      752816
Swap:             0           0           0

运行 cat /proc/meminfo 命令查看os内存情况:

~ # cat /proc/meminfo 
MemTotal:         907180 kB
MemFree:          744148 kB
MemAvailable:     755528 kB
Buffers:            4568 kB
Cached:            31240 kB
SwapCached:            0 kB
Active:            15856 kB
Inactive:          24828 kB
Active(anon):         52 kB
Inactive(anon):     4844 kB
Active(file):      15804 kB
Inactive(file):    19984 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:          4944 kB
Mapped:            10000 kB
Shmem:                20 kB
KReclaimable:       4608 kB
Slab:              29220 kB
SReclaimable:       4608 kB
SUnreclaim:        24612 kB
KernelStack:        2176 kB
PageTables:          620 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      453588 kB
Committed_AS:     110776 kB
VmallocTotal:   262930368 kB
VmallocUsed:       15384 kB
VmallocChunk:          0 kB
Percpu:              704 kB
CmaTotal:           4096 kB
CmaFree:               0 kB

✨4.2 查看 MMZ 内存

可以使用 cat /proc/umap/media-mem 命令查看 mmz 内存。

下面是运行 cat /proc/umap/media-mem 后的结果显示:
在这里插入图片描述

  • ZONE行:展示一个内存区域的信息,(0x84000000, 0x13FFFFFFF)是物理起始地址-终止地址,nBYTES=3080192KB是这个ZONE内存总大小,NAME="anonymous"是名称。
  • MMB:Media-Memory-Block,媒体内存块,后面描述了每块的信息。
  • MMZ_USE_INFO:mmz使用情况,总大小、已使用、剩余、mmz个数、mmb个数。

在这里插入图片描述

🎄五、总结

👉本文介绍了海思芯片内存管理相关知识,包括OS内存、MMZ内存的概念,怎样设置OS内存、MMZ内存,怎样查看OS内存、MMZ内存。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

参考:
1、海思sdk文档
2、设置海思芯片MMZ内存、OS内存详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397807.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于jsp的宠物领养与服务管理系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

【SpringBoot】自定义注解<约定式i18n国际化>终极升级版方案源码Copy

零、前言 在后端对于 SpringBoot 的 数据库数据&#xff0c;需要国际化的字段和主要显示字段是分离的&#xff0c;为了避免大耦合性&#xff0c;与用户端的国际化字段处理问题&#xff0c;统一采用主要显示数据的实体字段。为此&#xff0c;我设计了一套解决方案&#xff0c;通…

el-form-item,label在上方显示,输入框在下方展示

本来是两排展示去写&#xff0c;设计要求一排展示&#xff0c;label再上方&#xff0c;输入框、勾选框在下方&#xff1b;只能调整样式去修改&#xff1b;参考label-position这个属性 代码如下&#xff1a; <el-form ref"form" :model"formData" clas…

React应用(基于react脚手架)

react脚手架 1.xxx脚手架&#xff1a;用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置&#xff08;语法检查&#xff0c;jsx编译&#xff0c;devServer&#xff09;下载好了所有相关的依赖可以直接运行一个简单结果 2.react提供了一个用于创建react项目…

AWVS——Web 应用漏洞扫描的强大工具

一、引言 在网络安全日益重要的今天&#xff0c;Web 应用的安全性备受关注。Acunetix Web Vulnerability Scanner&#xff08;简称 AWVS&#xff09;作为一款知名的 Web 应用漏洞扫描工具&#xff0c;为保障 Web 应用的安全发挥了重要作用。本文将详细介绍 AWVS 的功能、特点、…

【vulhub靶场之spring】——

简介&#xff1a; Spring是Java EE编程领域的一个轻量级开源框架&#xff0c;该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建&#xff0c;是为了解决企业级编程开发中的复杂性&#xff0c;业务逻辑层和其他各层的松耦合问题&#xff0c;因此它将面向接口的编程思…

【Postman工具】

一.接口扫盲 1.什么是接口&#xff1f; 接口是系统之间数据交互的通道。拿小红到沙县点餐为例&#xff1a;小红想吃鸭腿饭。她要用什么语言来表达&#xff1f;跟谁表达&#xff1f;通过什么表达&#xff1f;按照生活习惯应该是&#xff1a;小红根据菜单对服务员用中文表达她想要…

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好&#xff0c;我是联通数字科技有限公司数据智能事业部的王兴杰。 更好的阅读体验可前往原文阅读:巨人肩膀 | 联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台 今天&#xff0c;我将和大家聊一聊联通数字科技有限公司是如何基于Apache Dol…

k8s创建secret并在container中获取secret

k8s创建secret并在container中获取secret 本文使用的deployment和service与我的上一篇文章一样。link也放在下面了&#xff0c;如果不懂什么事deployment和service&#xff0c;可以先看我的上一篇文章。 k8s使用kustomize来部署应用 下面我们将通过创建secret开始。secret是我…

保姆教程篇:手把手教你从零开始本地部署Dify

本教程将指导您在个人电脑上安装和配置 Dify。 为什么需要Dify 在开始具体的教程之前&#xff0c;先搞清楚为什么要选择 Dify。 6 月份&#xff0c;阿里巴巴全球数学竞赛中&#xff0c;首次接受AI参赛。结果令人大跌眼镜&#xff1a;AI选手们的表现完全无法与人类选手相提并…

萌啦数据软件价格多少,萌啦数据软件价格是多少

在当今这个数据驱动的时代&#xff0c;无论是企业运营、市场分析还是个人研究&#xff0c;都离不开高效、准确的数据处理与分析工具。萌啦数据软件&#xff0c;作为业界一颗璀璨的新星&#xff0c;凭借其强大的功能、友好的用户界面以及灵活的数据处理能力&#xff0c;赢得了众…

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)

打开题目所给的环境我们可以看到这样一句话&#xff1a; 这里我先尝试访问/hint.php &#xff0c;但是发现什么都没有发生&#xff0c; F12查看源代码也并没有发现什么&#xff0c;到这里来看的话似乎没有思路了&#xff0c;但是这个题的题目已经给了我们很明显的提示&#xff…

类和对象(中)(1)

类和对象&#xff08;中&#xff09;(1) 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。 ⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是…

云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本

一、python环境搭建 确保拥有阿里云镜像 查看python环境 [rootpython ~]# yum list installed | grep python 查看epel是否安装 [rootpython ~]# yum list installed | grep epel 安装epel [rootpython ~]# yum -y install epel-release.noarch 查看是否安装python3 [rootpyt…

【数据结构】mapset详解

&#x1f341;1. Set系列集合 Set接口是一种不包含重复元素的集合。它继承自Collection接口&#xff0c;所以可以使用Collection所拥有的方法&#xff0c;Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等&#xff0c;它们各自以不同的方式存储元素&#xff0c;但都遵…

OceanBase V4.2特性解析:MySQL模式下GIS空间表达式的场景及能力解析

1. 背景 1.1. OceanBase Mysql gis空间表达式的应用场景及能力 在OceanBase 4.1版本中&#xff0c;mysql模式下支持了gis数据类型以及部分空间对象相关的表达式&#xff0c;随着客户使用空间数据的需求日益增长&#xff0c;需要快速地补齐空间数据存储和计算分析的能力&#…

实景三维:解锁地理信息新维度,引领未来城市智慧之钥

在这个信息爆炸与科技日新月异的时代&#xff0c;地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上&#xff0c;它不仅是地理信息的立体呈现&#xff0c;更是智慧城市的基石&#xff0c;打开了通往未来城市规划、管理…

C++设计模式(代理模式)

1. 电话虫 在海贼中&#xff0c;有一种神奇的通信工具叫做电话虫&#xff08;Den Den Mushi&#xff09;&#xff0c;外形如蜗牛&#xff0c;身上带有斑点或条纹或通体纯色&#xff0c;壳顶上有对讲机或按键&#xff0c;不接通时会睡觉&#xff0c;接通时会惊醒&#xff0c;并发…

数据结构之链表

写在前面 链表是一种常用的线性数据结构&#xff0c;在jdk中也提供具体的实现类java.util.LinkedList。本文来看下其相关内容。 1&#xff1a;链表的特点 链表是一种由很多个节点组成的线性数据结构&#xff0c;每个节点都有一个指向下一个节点的引用&#xff0c;从而构成链…

Unity(2022.3.38LTS) - 下载,安装

目录 A. 简介 B. 下载和安装UnityHub C. 下载安装unity编辑器 安装页面 选择版本 添加模块 D.总结 A. 简介 Unity 是一款广泛使用的跨平台游戏开发引擎。 一、主要特点 跨平台性&#xff1a; 支持多种主流平台&#xff0c;包括 Windows、Mac、Linux、iOS、Android、Xb…