首页/新闻资讯/正文详情

Buildroot 下如何查看 RK3588 板子的总内存,并分析 Reserved Memory 与 CMA

发布时间:2026/9/24 17:30:47 来源:云帆数科 栏目:资讯中心
Buildroot 下如何查看 RK3588 板子的总内存,并分析 Reserved Memory 与 CMA
在 RK3588 Buildroot 系统中我们经常会遇到一个问题板卡明明标称 16 GB RAM为什么执行free -h后却只显示 15 GiB这些“少掉”的内存去了哪里本文以一块实际的 16 GB RK3588 板卡为例通过/proc/meminfo、free、dmesg和/proc/iomem逐步确认物理内存容量并分析 Linux 保留内存和 CMA。一、最简单的方法查看 MemTotalBuildroot 本质上仍然是 Linux。查看 Linux 当前管理的总内存最通用的方法是grep MemTotal /proc/meminfo实际输出MemTotal: 16333572 kB换算成 GiB16333572 / 1024 / 1024 ≈ 15.58 GiB结论这基本可以确认板卡是 16 GB RAM 版本。Linux 显示约 15.58 GiB 并不代表内存损坏或少装了内存。二、使用 free 查看内存状态如果 Buildroot 中的 BusyBox 支持free可以执行free -h本机输出total used free shared buff/cache available Mem: 15Gi 114Mi 15Gi 55Mi 267Mi 15Gi Swap: 0B 0B 0B还可以查看几个关键字段grep -E MemTotal|MemFree|MemAvailable /proc/meminfoMemTotal: 16333572 kB MemFree: 15941844 kB MemAvailable: 16007752 kB字段含义MemTotalLinux 最终可管理的总 RAM。MemFree当前完全空闲的 RAM。MemAvailable综合可回收缓存等因素后当前大致还能提供给应用程序使用的内存。三、为什么 16 GiB 最终只有约 15.58 GiB16 GiB 理论容量16 × 1024 × 1024 16777216 KiB而本机MemTotal 16333572 KiB差值为16777216 - 16333572 443644 KiB ≈ 433.25 MiB也就是说相比完整 16 GiB大约有 433 MiB 没有出现在最终的MemTotal中。对于 RK3588 这类 SoC这通常来自启动固件、设备树、内核以及硬件相关的保留区域。四、使用 dmesg 查看启动阶段的内存账单执行dmesg | grep -i -E memory|reserved|cma本机关键输出Reserved memory: created CMA memory pool at 0x0000000010000000, size 256 MiB Memory: 16063132K/16752640K available (19392K kernel code, 3574K rwdata, 7200K rodata, 6912K init, 819K bss, 427364K reserved, 262144K cma-reserved)这里能得到非常有价值的信息项目大小说明启动阶段识别 RAM16752640 KiB ≈ 15.98 GiB已经非常接近完整的 16 GiB。reserved427364 KiB ≈ 417 MiB平台、内核、设备树等相关保留内存。CMA262144 KiB 256 MiB连续内存分配器的内存池。完整 16 GiB 与启动阶段内核识别量相差16777216 - 16752640 24576 KiB 24 MiB这部分可理解为 Linux 接管内存之前由平台、固件或 SoC 地址布局等因素形成的差异。五、CMA 是什么CMAContiguous Memory Allocator主要用于向硬件驱动提供较大的物理连续内存。RK3588 是多媒体 SoC视频编解码、DRM/KMS 显示、HDMI、摄像头、ISP 和 DMA 等场景都可能需要连续内存。本机创建了Reserved memory: created CMA memory pool at 0x10000000, size 256 MiB也就是一块 256 MiB 的 CMA 池。注意CMA 不能简单理解为“永久浪费掉的 256 MiB”。空闲的 CMA 页面在合适条件下可以被可迁移页面利用当硬件需要连续物理内存时内核再通过页面迁移腾出连续空间。本机 HDMI RX 驱动还有一条很有代表性的日志rk_hdmirx fdee0000.hdmirx-controller: No reserved memory for HDMIRX, use default CMA这说明 HDMI RX 没有独立的专用内存区域而会使用系统默认 CMA。因此对于承担视频播放、HDMI、MPP、DRM/KMS 等任务的 RK3588不能为了让free多显示一点内存就随意删除 CMA。六、使用 /proc/iomem 查看物理地址布局执行cat /proc/iomem本机部分输出00200000-083fffff : System RAM 09400000-efffffff : System RAM 10000000-1fffffff : reserved e9f00000-ee059fff : reserved 100000000-3fbffffff : System RAM 3ec000000-3fbffffff : reserved 3fc500000-3ffefffff : System RAM 4f0000000-4ffffffff : System RAM 4fc563000-4fc5c2fff : reserved ... 4fdecb000-4ffffffff : reserved其中0x10000000 0x1fffffff 0x10000000 bytes 256 MiB与前面dmesg中的 256 MiB CMA 地址范围吻合。不要直接把 /proc/iomem 中所有 reserved 地址段相加后称为“丢失的内存”。这些地址段可能属于不同层级和用途。分析总内存时应结合dmesg、/proc/meminfo和设备树综合判断。七、查看设备树中的 reserved-memory如果希望继续查清楚保留内存具体属于哪些设备可以查看运行中的设备树ls -la /sys/firmware/devicetree/base/reserved-memory/如果 BusyBox 的find支持相应参数也可以find /sys/firmware/devicetree/base/reserved-memory -maxdepth 2 -type f -print这里可能包含 CMA、可信执行环境以及 Rockchip BSP 定义的其他 reserved-memory 节点。八、启动时占用的部分内存还会释放本机还出现Freeing unused kernel memory: 6912K Freeing drm_logo memory: 1384K说明内核初始化阶段的一部分内存以及启动 Logo 使用的内存在启动完成后会被释放。因此不能简单拿启动瞬间的available、reserved和cma-reserved做一次减法就要求结果与最终MemTotal完全一致。九、本机内存关系总结16 GiB 物理 RAM │ ├── 约 24 MiB │ └── Linux 接管之前的平台/固件等差异 │ └── Linux 启动阶段识别约 15.98 GiB │ ├── reserved约 417 MiB ├── CMA256 MiB特殊的可回收/可迁移内存池 ├── 内核代码、数据以及其他运行开销 │ └── 系统启动完成 └── MemTotal ≈ 15.58 GiB检查项目结果物理内存规格16 GiB内核启动阶段识别约 15.98 GiBMemTotal16333572 KiB ≈ 15.58 GiBCMA256 MiBdmesg 中 reserved约 417 MiBSwap0是否发现明显内存容量异常没有最终结论这块 RK3588 的确是 16 GB RAM 版本。Buildroot/Linux 最终显示约 15.58 GiB 属于正常的平台与系统内存保留现象并没有发现异常的内存“丢失”。十、常用命令汇总# 查看 Linux 总内存 grep MemTotal /proc/meminfo # 查看当前内存使用情况 free -h # 查看关键内存字段 grep -E MemTotal|MemFree|MemAvailable /proc/meminfo # 查看启动阶段内存、reserved 和 CMA dmesg | grep -i -E memory|reserved|cma # 查看物理地址空间 cat /proc/iomem # 查看设备树 reserved-memory ls -la /sys/firmware/devicetree/base/reserved-memory/ # BusyBox find 支持时 find /sys/firmware/devicetree/base/reserved-memory -maxdepth 2 -type f -print

相关推荐

无人机已经拿到UWB坐标,为什么还不能直接自主飞行?
无人机已经拿到UWB坐标,为什么还不能直接自主飞行?

无人机已经拿到UWB坐标,为什么还不能直接自主飞行?有客户问了一个很具体的问题:他想用无人机跟随一辆遥控车,UWB模块已经装好了,标签装在地面车上,基站装在无人机上,坐标数据和距离数据都已经读… · 2026/9/24 17:30:47

grep 随笔记
grep 随笔记

grep -r 默认不跟随符号链接(要用 -R) -I 跳过二进制 ,file 看文件类型,ls -al 看软连接指向grep -n -E · 2026/9/24 17:30:41

在Python编程体系中,`from`是最核心的保留关键字之一,主要承担三大核心功能:模块精准导入、生成器委托执行、异常链式追踪
在Python编程体系中,`from`是最核心的保留关键字之一,主要承担三大核心功能:模块精准导入、生成器委托执行、异常链式追踪

在Python编程体系中,from是最核心的保留关键字之一,主要承担三大核心功能:模块精准导入、生成器委托执行、异常链式追踪,其中模块导入是最基础且高频的使用场景。 作为模块导入的核心语法,from...import...的设计初衷是… · 2026/9/24 17:30:41

使用ExecTI解决Windows注册表TrustedInstaller权限问题
使用ExecTI解决Windows注册表TrustedInstaller权限问题

1. 先聊聊那条让人抓狂的报错:"你需要TrustedInstaller提供的权限" 很多玩注册表的人第一次撞上这堵墙,是在改某个系统服务参数或者清理软件残留的时候。你明明用的是管理员账号,UAC 也点了"是",regedit 也好… · 2026/9/24 18:42:13

草莓成熟度YOLO数据集:开箱即用,支持v5/v8训练与边缘部署
草莓成熟度YOLO数据集:开箱即用,支持v5/v8训练与边缘部署

简介:本资源是一套专为农业智能检测场景设计的YOLO格式草莓成熟度识别数据集,面向计算机视觉初学者、农业AI项目开发者及模型训练实践者,解决果实成熟状态自动判别这一典型目标检测问题。数据集严格遵循YOLOv5目录结构组织,含训练… · 2026/9/24 18:42:13

合同多格式比对:Word/PDF/扫描件的底层技术逻辑
合同多格式比对:Word/PDF/扫描件的底层技术逻辑

1. 合同比对不是“找不同”,而是法律风险的显微镜合同比对这件事,很多人第一反应是打开Word的“比较”功能,或者拖两个PDF进在线比对网站,点一下就等结果。我做过三年法务支持,也帮二十多家企业搭建过合同生命周期管理… · 2026/9/24 18:42:07

GPT术语漂移治理:从提示词到强制校验的完整落地方案
GPT术语漂移治理:从提示词到强制校验的完整落地方案

去年我在做一套面向工业设备行业的智能文档生成服务时,最头疼的问题不是模型不会写,而是它太“会写”了——同一个产品名,今天叫“智能脱扣器”,明天叫“过载保护单元”,后天甚至自创一个“智能保护模块”。对于对外技… · 2026/9/24 18:42:07

YOLO草莓成熟度检测数据集:农业视觉落地关键
YOLO草莓成熟度检测数据集:农业视觉落地关键

简介:本资源是一套专为农业智能检测场景设计的YOLO格式草莓成熟度识别数据集,面向计算机视觉初学者、农业AI项目开发者及YOLO系列模型实践者,解决果实分级自动化中的关键标注与训练数据缺失问题。数据集严格遵循YOLOv5目录结构组织&#xff0… · 2026/9/24 18:42:07

火语言RPA攻克网页表单控件:单选框、复选框、下拉框操作实战
火语言RPA攻克网页表单控件:单选框、复选框、下拉框操作实战

做RPA最常踩的坑,往往不是登录、不是翻页,而是那些看似人畜无害的网页表单控件。单选框、复选框、下拉框,随便哪个在页面里换了皮肤、套了框架、加了懒加载,就能让脚本在运行到一半的时候突然“神经质”。我用火语言RPA处理网页表… · 2026/9/24 18:42:06

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码