海思SS928(SD3403)内存地址空间分配和使用

说明

所有 DDR 内存中,一部分由操作系统管理,称为 OS 内存;另一部分由 MMZ 模块管理,供媒体业务单独使用,称为 MMZ 内存。具体描述参考《SS928V100 SDK 安装以及升级使用说明.pdf》的“第5部分 地址空间分配与使用”。

通过查看"/proc/meminfo"文件的内容:

MemTotal:          87384 kB
MemFree:           23760 kB
MemAvailable:      21016 kB
Buffers:             228 kB
Cached:            15296 kB
SwapCached:            0 kB
... ...

可以看到,硬件一共有8G内存。

OS

通过检查文件"/proc/iomem"的内容,可以看到linux kernel占用的内存空间:

... ...
17c00000-17c0ffff : aiao
17c40000-17c4ffff : acodec
50000000-57ffffff : System RAM50080000-5096ffff : Kernel code50970000-509cffff : reserved509d0000-50a78fff : Kernel data52000000-52005fff : reserved52fff000-54a00fff : reserved56800000-569fffff : reserved56bd9000-579fffff : reserved57b54000-57bd7fff : reserved57bda000-57bdafff : reserved57bdb000-57bf6fff : reserved57bf7000-57bfefff : reserved57bff000-57bfffff : reserved57c00000-57ffffff : reserved

可以看到OS内存从地址0x50000000~0x57ffffff,与uboot变量"bootargs=mem=xxx"一致。

使用dmesg命令查看板子的启动日志,其中也有内存的使用情况:

... ...
Memory limited to 128MB
... ...
Memory: 82904K/141284K available (7358K kernel code, 384K rwdata, 1760K rodata, 384K init, 267K bss, 54284K reserved, 4096K cma-reserved)

修改内存的开始地址,需要修改编译环境中”./ss928v100_sdk/SS928V100_SDK_V2.0.2.1/open_source/linux/linux-4.19.y/arch/arm64/boot/dts/vendor/ss928v100-demb.dts“

memory {device_type = "memory";reg = <0x0 0x50000000 0x1 0xf0000000>; /* system memory base */};

0x50000000是起始物理地址;0xf0000000表示内存区域的大小,以字节为单位,转换成十进制大约是4000MB(或4GB)。

修改内存的大小,需要修改uboot变量。

MMZ

通过检查文件”/proc/umap/media-mem"的内容,可以看到MMZ占用的内存空间:

+---ZONE: PHYS(0x70000000, 0x13FFFFFFF), GFP=0, nBYTES=3407872KB,    NAME="anonymous"|-MMB: phys(0x70000000, 0x70011FFF), kvirt=0xFFFFFF800BE80000, flags=0x00000001, length=72KB,    name="sys_scale_coef"|-MMB: phys(0x70012000, 0x7006DFFF), kvirt=0x00000000, flags=0x00000000, length=368KB,    name="tde_mem_pool_mmb"|-MMB: phys(0x7006E000, 0x700C2FFF), kvirt=0xFFFFFF800C200000, flags=0x00000001, length=340KB,    name="gdc_node_buf"|-MMB: phys(0x700C3000, 0x700C3FFF), kvirt=0xFFFFFF8008EED000, flags=0x00000001, length=4KB,    name="gdc_int_pole_coef"|-MMB: phys(0x700C4000, 0x701E9FFF), kvirt=0xFFFFFF800C600000, flags=0x00000001, length=1176KB,    name="vgs_node_buf"|-MMB: phys(0x701EA000, 0x701EAFFF), kvirt=0xFFFFFF8008EFD000, flags=0x00000001, length=4KB,    name="vgs_mcf_sum"|-MMB: phys(0x701EB000, 0x701EBFFF), kvirt=0xFFFFFF8008F15000, flags=0x00000001, length=4KB,    name="dis_node_buf"|-MMB: phys(0x701EC000, 0x701ECFFF), kvirt=0xFFFFFF8008F65000, flags=0x00000001, length=4KB,    name="vo_coef_buf"|-MMB: phys(0x701ED000, 0x72190FFF), kvirt=0x00000000, flags=0x00000000, length=32400KB,    name="gfbg_layer0"|-MMB: phys(0x72191000, 0x73162FFF), kvirt=0x00000000, flags=0x00000000, length=16200KB,    name="gfbg_layer1"|-MMB: phys(0x73163000, 0x73557FFF), kvirt=0x00000000, flags=0x00000000, length=4052KB,    name="gfbg_layer3"|-MMB: phys(0x73558000, 0x73567FFF), kvirt=0xFFFFFF800CD90000, flags=0x00000001, length=64KB,    name="gfbg_coef"|-MMB: phys(0x73568000, 0x73568FFF), kvirt=0xFFFFFF8008F75000, flags=0x00000001, length=4KB,    name="gfbg_clut_table_g3"|-MMB: phys(0x73569000, 0x73569FFF), kvirt=0xFFFFFF8008F7D000, flags=0x00000001, length=4KB,    name="gfbg_clut_table_g4"|-MMB: phys(0x7356A000, 0x73589FFF), kvirt=0x00000000, flags=0x00000000, length=128KB,    name="vedu_hal_0"|-MMB: phys(0x7358A000, 0x735BEFFF), kvirt=0xFFFFFF8010980000, flags=0x00000001, length=212KB,    name="ive_queue"|-MMB: phys(0x735BF000, 0x735BFFFF), kvirt=0xFFFFFF8008FA5000, flags=0x00000003, length=4KB,    name="ive_tmp_node"|-MMB: phys(0x735C0000, 0x735DFFFF), kvirt=0xFFFFFF8010A80000, flags=0x00000001, length=128KB,    name="svp_mau_queue"|-MMB: phys(0x735E0000, 0x737DFFFF), kvirt=0xFFFFFF8011600000, flags=0x00000001, length=2048KB,    name="cq_base"|-MMB: phys(0x737E0000, 0x737E1FFF), kvirt=0xFFFFFF800C29C000, flags=0x00000001, length=8KB,    name="sq_static_info"---MMZ_USE_INFO:total size=3407872KB(3328MB),used=57224KB(55MB + 904KB),remain=3350648KB(3272MB + 120KB),zone_number=1,block_number=20

修改MMZ的开始地址和大小,需要修改编译环境中”ss928v100_sdk/SS928V100_SDK_V2.0.2.1/osdrv/rootfs_scripts/A393_ss928_ubi_rootfs/rootfs_glibc_arm64/ko/load_ss928v100“文件的内容:

#DDR start:0x40000000, IPCM(2M); DSP(62M); MCU(192M); kernel start:0x50000000,  OS(512M); MMZ start:0x70000000
mem_total=4096                # 4096M, total mem
mem_start=0x40000000          # phy mem start
ipcm_mem_size=2               # 2M, ipcm mem
dsp_mem_size=62               # 62M, dsp mem
mcu_mem_size=192              # 192M, mcu mem
os_mem_size=512               # 512M, os memmmz_start=0x70000000;         # mmz start addr
mmz_size=3328M;               # 3328M, mmz sizereserve_mem_size=0            # 0M, reserve mmz size

注意:这里的mmz_startmmz_size只是初始值,后面的函数calc_mmz_info会根据上面的其他值重新计算这两个变量。

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

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

相关文章

数学建模MATLAB绘图大全

最近快要开始一年一度的数学建模竞赛啦&#xff0c;接下来争取每天更一篇数学建模算法&#xff01;&#xff08;当然这是理想状态下&#xff09;&#xff0c;今天就先更一些MATLAB常用的绘图吧&#xff0c;论文赏心悦目的关键就在于丰富多彩的图&#xff0c;好看的图一定会成为…

景区智慧公厕,剩余厕位显示,公厕环境监测。

在当今科技飞速发展的时代&#xff0c;景区的服务设施也在不断升级和创新。其中&#xff0c;景区智慧公厕的出现无疑为游客带来了极大的便利。特别是剩余厕位显示和公厕环境监测这两大功能&#xff0c;更是显著提升了景区公厕的管理水平和游客的使用体验。 剩余厕位显示功能是景…

磁钢生产领域上下料解决方案

随着智能制造技术的不断革新&#xff0c;磁钢生产领域正逐步引入自动化生产线。然而&#xff0c;传统的人工上下料方式存在诸多问题&#xff0c;难以满足现代生产需求。富唯智能提出了一款复合机器人磁钢上下料解决方案&#xff0c;通过先进的自动化技术&#xff0c;提高生产效…

一款纯 js 实现的大模型应用服务 FastGPT 解读

背景介绍 最近被不同的人安利了 FastGPT 项目&#xff0c;实际上手体验了一下&#xff0c;使用流程类似之前调研过的 Dify, 包含的功能主要是&#xff1a;任务流的编排&#xff0c;知识库管理&#xff0c;另外还有一些外部工具的调用能力。使用页面如下所示&#xff1a; 实际…

前端实现坐标系转换

一、地理坐标系和投影坐标系 地理坐标系和投影坐标系是地理信息系统&#xff08;GIS&#xff09;中常见的两种坐标系统&#xff0c;它们用于描述和定位地球表面上的点和区域&#xff0c;但在实现方式和应用场景上有所不同。 1. 地理坐标系&#xff08;Geographic Coordinate …

Python pdfplumber库:轻松解析PDF文件

Python pdfplumber库&#xff1a;轻松解析PDF文件 1. 安装2. 基本概念3. 使用场景和示例代码3.1 提取文本3.2 提取表格数据3.3 获取图像信息3.4 分析页面布局3.5 搜索特定文本 4. 总结 在处理PDF文件时,我们经常需要提取文本、图像或表格数据。Python的pdfplumber库为这些任务提…

长安链安装及使用问题

1. 关于golang编译出错: Get “https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/v/v2.2.0.mod“: dial 在网上查阅资料后发现是自己的golang版本太低(1.3一下),因为goalng在最初开发时,国内基本上都会遇到依赖下载不了的问题&#xff0c; 然而在1.3版本后,go…

简单分享下python的Fuk库

目录&#xff1a; 一、Fuk 简介 二、安装和引入 fuk&#xff0c;使用 pip 安装 fuk 库 三、Fuk的应用场景&#xff0c;网络爬虫 四、总结 一、Fuk 简介 fuk 是一个用于处理 Python 数据结构的库&#xff0c;全称为 "Fast and Uncomplicated Kit"。它提供了一系列高效…

前端代码优化之布尔条件判断太长的处理

我们在开发过程中&#xff0c;有时候会遇到多个布尔值条件判断的情况&#xff0c;目前我们项目里的写法大多都是将各种判断糅杂在一起&#xff0c;这样非常不利于阅读和维护。这里给大家推荐下谷歌官方的处理方式。主要有两种优化方案。 例如&#xff0c;一个判断条件如下&…

【CentOS 7.6】Linux版本 portainer本地镜像导入docker安装配置教程,不需要魔法拉取!(找不着镜像的来看我)

吐槽 我本来根本不想写这篇博客&#xff0c;但我很不解也有点生气&#xff0c;CSDN这么大没有人把现在需要魔法才能拉取的镜像放上来。 你们都不放&#xff0c;根本不方便。我来上传资源。 portainer-ce-latest.tar Linux/amd64 镜像下载地址&#xff1a; 链接&#xff1a;h…

C# --- 在项目中使用Attribute + Reflection

C# --- 使用Attribute Reflection的例子 背景如何定义和执行TestCase 背景 E2E是对workflow的测试&#xff0c;将所有E2E test case定义在一个可执行程序里(exe), 定时自动运行 如何定义和执行TestCase 将需要执行的TestCase包装成一个类&#xff0c;并将TestCase分成几个Step…

Chapter11让画面动起来——Shader入门精要学习笔记

Chapter11让画面动起来 一、Unity Shader中的内置变量&#xff08;时间篇&#xff09;二、纹理动画1.序列帧动画2.滚动背景 三、顶点动画1.流动的河流2.广告牌3.注意事项①批处理问题②阴影投射问题 一、Unity Shader中的内置变量&#xff08;时间篇&#xff09; Unity Shader…

东北财税之星:董女士的家乡创业记

乐财业智慧财税赋能平台&#xff0c;是一个帮助财税机构专业提升、业务增长&#xff0c;让财税生意更好做的综合赋能平台。聚焦财税公司业绩增长&#xff0c;预计2027年帮助2000家财税合伙人利润增长300%&#xff0c;致力打造轻量化、批量化、智能化的”业财税“一体财税服务生…

ARCGIS PRO 要素标注

一、普通模式 1、标注&#xff1a;名称和面积&#xff08;无分数线&#xff09; 语言&#xff1a;Arcade $feature.QLR \nRound($feature.Shape_Area,2) 语言&#xff1a;vbscript [QLR] & " " & Round([Shape_Area],2) 2、标注&#xff1a;名称…

ChatGPT如何提升论文写作(附指令集合)

先讲前提&#xff1a; ChatGPT无论是3.5还是4.0都存在非常严重的幻觉问题&#xff0c;目前ChatGPT无法替代搜索引擎。 如果你希望得到更加优质的体验&#xff0c;请用GPT-4.0&#xff0c;幻觉问题上比3.5大幅降低 ChatGPT中文版&#xff0c;一站式AI创作平台​aibox365.com …

Python | Leetcode Python题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def removeElements(self, head: ListNode, val: int) -> Li…

因版本冲突导致logback的debug日志不打印

因框架调整&#xff0c;降级了logback的版本号&#xff0c;由1.3.12降级为1.2.11&#xff08;因框架限制&#xff0c;只能采用1.2版本&#xff09;&#xff0c;降级后发现debug日志无法打印出来&#xff0c;logback.xml配置文件不生效。后排查发现是与slf4j的版本兼容问题 依赖…

一种频偏估计与补偿方法

一种简易的频偏估计补偿方法&#xff0c;使用QAM等信号。估计精度受FFT长度限制&#xff0c;可以作为粗频偏估计。 Nfft 1024; % FFT长度 N 10*Nfft; % 仿真符号数 M 16; % 调制QAM16 freq 1e…

如何在window 10 服务器上安装Git服务--Gitblit适合小团队

在Windows Server上安装Git服务通常指的是安装一个可以被网络中的其他用户访问的Git服务器。Git本身是一个分布式版本控制系统&#xff0c;但是为了便于团队协作&#xff0c;通常会部署一个中心化的Git服务器&#xff0c;如GitLab、GitHub Enterprise、Gitea、Gitblit等。 这里…

Java中的高级异常处理与日志记录

Java中的高级异常处理与日志记录 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;异常处理和日志记录是两个至关重要的方面。良好的异…