嵌入式开发——linux系统怎么知道接了多少物理内存?

1、前言

  • linux系统是不知道当前设备接了多少内存,需要bootloader在启动时告诉linux系统
  • 感知到当前设备接了多少物理内存有两种方式
    • 动态识别(X86架构大多是这种):可以插拔的内存条,bootloader能识别出内存条的容量
    • 代码里写死(ARM架构大多是这种):设备的内存是贴片上去的,不支持动态改变,内存的容量在代码里写死(系统工程师在适配程序时要根据实际物理内存容量去修改代码)

2、linux系统知道实际物理内存大小的方式

  • 设备树中可以通过"/memory"节点来指定内存的起始地址、大小等信息;
  • uboot启动内核时,可以通过ATAG_MEM类型的struct tag结构体向内核传递内存起始地址、大小等信息;
  • uboot启动内核时,可以通过ATAG_CMDLINE类型的struct tag结构体向内核传递内存起始地址、大小等信息;
  • 内存信息生效的优先级:ATAG_CMDLINE类型的tag > ATAG_MEM类型的tag > 设备树"/memory"节点

3、插拔的内存条

  • X86架构芯片在硬件上常采用插拔内存条的方式,可以实现动态识别内存条的容量
  • BIOS可以识别出内存条的容量,并且在启动内核时,将内存容量大小告诉内核
  • BIOS是怎么识别出内存条大小的,原理不太清楚,猜测和内存插槽的硬件结构有关系,有知道原理的博友欢迎在评论区交流

4、贴片的内存

  • 采用贴片的内存的方式在嵌入式设备中是最常见的,内存容量是固定死的
  • 因为内存是固定死的,所以可以直接在代码里指定内存的容量。比如:在uboot中指定,或者在设备树中指定

5、参考资料

  • 《linux内存管理——内存大小、起始地址的解析与修改》
  • 《设置海思芯片MMZ内存、OS内存详解》

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

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

相关文章

【Make编译控制 01】程序编译与执行

目录 一、编译原理概述 二、编译过程分析 三、编译动静态库 四、执行过程分析 一、编译原理概述 make: 一个GCC工具程序,它会读 makefile 脚本来确定程序中的哪个部分需要编译和连接,然后发布必要的命令。它读出的脚本(叫做 …

react中hook封装一个table组件 与 useColumns组件

目录 1:react中hook封装一个table组件依赖CommonTable / index.tsx使用组件效果 2:useColumns组件useColumns.tsx使用 1:react中hook封装一个table组件 依赖 cnpm i react-resizable --save cnpm i ahooks cnpm i --save-dev types/react-r…

开源微服务平台框架的特点是什么?

借助什么平台的力量,可以让企业实现高效率的流程化办公?低代码技术平台是近些年来较为流行的平台产品,可以帮助很多行业进入流程化办公新时代,做好数据管理工作,从而提升企业市场竞争力。流辰信息专业研发低代码技术平…

软件文档测试

1 文档测试的范围 软件产品由可运行的程序、数据和文档组成。文档是软件的一个重要组成部分。 在软件的整人生命周期中,会用到许多文档,在各个阶段中以文档作为前阶段工作成果的体现和后阶段工作的依据。 软件文档的分类结构图如下图所示: …

双非本科准备秋招(21.1)—— 力扣二叉搜索树

刚学的二叉搜索树,做做题目巩固一下二叉搜索树的基本操作。 1、700. 二叉搜索树中的搜索 二叉搜索树的任何一个节点,都会大于左子树任意节点的值,都会小于右子树任意节点的值 class Solution {public TreeNode searchBST(TreeNode root, in…

边缘计算中的能源效率与运维成本

边缘计算是近年来计算机科学技术领域中的一个热门话题,其概念和实践在全球范围内都在迅速发展。边缘计算能够解决许多问题,其中最为关键的两个方面就是能源效率和运维成本。 首先,让我们来谈谈能源效率。在边缘计算中,能源效率是…

图灵之旅--二叉树堆排序

目录 树型结构概念树的表示形式 二叉树概念特殊的二叉树二叉树性质二叉树的存储二叉树的遍历前中后序遍历 优先级队列(堆)概念 优先级队列的模拟实现堆的性质概念堆的存储方式堆的创建 堆常用接口介绍PriorityQueue的特性PriorityQueue常用接口介绍优先级队列的构造插入/删除/获…

力扣刷题之旅:进阶篇(六)—— 图论与最短路径问题

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 引言 在算法的广阔天地中,图论是一个非常重要的领域。…

2万字曝光:华尔街疯狂抢购比特币背后

作者/来源:Mark Goodwin and whitney Webb BitcoinMagazine 编译:秦晋 全文:19000余字 在最近比特币ETF获得批准之后,贝莱德的拉里-芬克透露,很快所有东西都将被「ETF化」与代币化,不仅威胁到现有的资产和商…

【linux系统体验】-archlinux折腾日记

archlinux 一、系统安装二、系统配置及美化2.1 中文输入法2.2 安装virtualbox增强工具2.3 终端美化2.4 桌面面板美化 三、问题总结3.1 一、系统安装 安装步骤人们已经总结了很多很全: Arch Linux图文安装教程 大体步骤: 磁盘分区安装 Linux内核配置系统&#xff…

Nginx 配置 SSL证书

成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问Nginx服务器。 一、准备材料 SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。您可以通过DNS验证证书工具,检测域名DNS解析是否生效。具体操作: 【1】登录…

阿里云幻兽帕鲁服务器免费搭建解决方法,白嫖阿里云

阿里云幻兽帕鲁服务器免费搭建方案,先在阿里云高校计划「云工开物」活动领取学生专享300元无门槛代金券,幻兽帕鲁专用服务器4核16G配置26元1个月、149元半年,直接使用这个无门槛300元代金券抵扣即可免费搭建幻兽帕鲁服务器。阿里云服务器网al…

Python环境下基于指数退化模型和LSTM自编码器的轴承剩余寿命预测

滚动轴承是机械设备中关键的零部件之一,其可靠性直接影响了设备的性能,所以对滚动轴承的剩余使用寿命(RUL)进行预测是十分必要的。目前,如何准确地对滚动轴承剩余使用寿命进行预测,仍是一个具有挑战的课题。对滚动轴承剩余寿命评估…

ctfshow-web11~20-WP

web11 根据提示,查询对ctfshow域名进行dns查询,查看TXT记录 阿里云查询链接:阿里云网站运维检测平台 获取flag成功 web12 根据题目提示,我们访问robots.txt,获取到后台地址 然后我们访问一下后台

C语言学习day11:do while语句

do while语句是C语言中的一种循环语句,它的语法结构如下: do {// 循环体语句 } while (条件表达式); do while语句首先执行循环体语句,然后再判断条件表达式的值。如果条件表达式为真,则继续执行循环体语句,然后再次…

Android性能调优 - 应用安全问题

Android应用安全 1.组件暴露: 像比如ContentProvider,BroadcastReceiver,Activity等组件有android:exported属性; 如果是私有组件 android:exported “false”; 如果是公有组件 android:exported “true” 且进行权限控制&…

2、 Scheduler介绍 代码解析 [代码级手把手解diffusers库]

Scheduler简介分类老式 ODE 求解器(Old-School ODE solvers)初始采样器(Ancestral samplers)Karras噪声调度计划DDIM和PLMSDPM、DPM adaptive、DPM2和 DPMUniPCk-diffusion 1.DDPM2.DDIM3.Euler4.DPM系列5. Ancestral6. Karras7. …

在Ubuntu22.04上部署ComfyUI

ComfyUI 是 一个基于节点流程的 Stable Diffusion 操作界面,可以通过流程,实现了更加精准的工作流定制和完善的可复现性。每一个模块都有特定的的功能,我们可以通过调整模块连接达到不同的出图效果,特点如下: 1.对显存…

“智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【下】(分文件编程)

“智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【下】(分文件编程) 前言预备知识1温湿度检测系统需求2.分文件编程核心思路3.分文件编程操作4利用分文件操作建立uart.c、lcd1602.c、dht11…

windows安装sqlite

windows安装sqlite比linux麻烦很多 1.下载 下载链接:链接 下载dll的zip文件 2.解压并放到文件夹 将压缩包内的文件解压,放到C://sqlite下 3.编辑环境变量 添加到系统变量的path中 4.验证 打开命令提示符,输入 sqlite3有结果就行