统计 移植的库占据系统多少RAM

Linux—使用readelf工具查看程序代码变量的内存空间布局情况 内存空间布局 阅读详情

小贱贱接到 领导命令,系统占了多少RAM,小贱贱不会啊,浏览器疯狂搜索资料

RAM

RAM:Random Access Memory 随机存取存储器 也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,主要用来存放操作系统、各种应用程序、数据等。它与ROM的最大区别是数据的易失性,RAM的工作特点是通电后,随时可在任意位置单元存取数据信息,断电后内部信息也随之消失,几乎是所有访问设备中写入和读取速度最快的

SRAM 静态随机存储器 常做cache
DRAM DRAM常用于作主存储器,平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要额外设一个电路进行内存刷新操作

统计

原来DRAM 就是系统跑起来占用的内存。那如何查看
readelf -S xxx elf 文件就可以实现 统计单位Byte

There are 49 section headers, starting at offset 0x107xxxx:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            xxxxxxxx xxxxxx 000000 00      0   0  0
  [ 1] .boot_struct      PROGBITS        xxxxxxxx xxxxxx 000010 00   A  0   0  4
  [ 2] .boot_text_flash  PROGBITS        xxxxxxxx xxxxxx 000d50 00  AX  0   0  8
  [ 3] .vector_table     NOBITS          xxxxxxxx xxxxxx 000100 00  WA  0   0  4
  [ 4] .reboot_param     NOBITS          xxxxxxxx xxxxxx 000040 00  WA  0   0  4
  [ 5] .boot_text_sram   PROGBITS        xxxxxxxx xxxxxx 001640 00  AX  0   0  8
  [ 6] .boot_data_sram   PROGBITS        xxxxxxxx xxxxxx 00007c 00  WA  0   0  4
  [ 7] .boot_bss_sram    NOBITS          xxxxxxxx xxxxxx 0000a0 00  WA  0   0  4
  [ 8] .sram_text        PROGBITS        xxxxxxxx xxxxxx 003e84 00  AX  0   0  8
  [ 9] .sram_data        PROGBITS        xxxxxxxx xxxxxx 000288 00  WA  0   0  4
  [10] .sram_bss         NOBITS          xxxxxxxx xxxxxx 005274 00  WA  0   0  4
  [11] .fast_text_sram   PROGBITS        xxxxxxxx xxxxxx 0005b0 00  AX  0   0  8
  [12] .overlay_text_end PROGBITS        xxxxxxxx xxxxxx 000004 00  WA  0   0  1
  [13] .overlay_data_end PROGBITS        xxxxxxxx xxxxxx 000004 00  WA  0   0  1
  [14] .userdata_pool    NOBITS          xxxxxxxx xxxxxx 002000 00  WA  0   0  4
  [15] .psram_text       PROGBITS        xxxxxxxx xxxxxx 000290 00  AX  0   0  8
  [16] .psram_data       PROGBITS        xxxxxxxx xxxxxx 003200 00  WA  0   0  4
  [17] .psram_bss        NOBITS          xxxxxxxx xxxxxx 2c7bd0 00  WA  0   0  8
  [18] .heap             NOBITS          xxxxxxxx xxxxxx 000100 00  WA  0   0  1
  [19] .text             PROGBITS        xxxxxxxx xxxxxx 10ada8 00  AX  0   0 16
  [20] .ARM.extab        PROGBITS        xxxxxxxx xxxxxx 000018 00   A  0   0  4
  [21] .ARM.exidx        ARM_EXIDX       xxxxxxxx xxxxxx 0000b8 00  AL 19   0  4
  [22] .rodata           PROGBITS        xxxxxxxx xxxxxx 108ed8 00   A  0   0 16
  [23] .custom.cmd.table PROGBITS        xxxxxxxx xxxxxx 000000 00   W  0   0  1
  [24] .thirdparty.event PROGBITS        xxxxxxxx xxxxxx 000000 00   W  0   0  1
  [25] .data             PROGBITS        xxxxxxxx xxxxxx 000034 00  WA  0   0  4
  [26] .bss              NOBITS          xxxxxxxx xxxxxx 0006b8 00  WA  0   0  8
  [27] .stack_dummy      PROGBITS        xxxxxxxx xxxxxx 002004 00   W  0   0  1
  [28] .system_info      PROGBITS        xxxxxxxx xxxxxx 000000 00   W  0   0  1
  [29] .build_info       PROGBITS        xxxxxxxx xxxxxx 0000f8 00   A  0   0  4
  [30] .code_start_addr  PROGBITS        xxxxxxxx xxxxxx 000008 00  WA  0   0  1
  [31] .custom_parameter NOBITS          xxxxxxxx xxxxxx 001000 00  WA  0   0  1
  [32] .userdata         NOBITS          xxxxxxxx xxxxxx 002000 00  WA  0   0  1
  [33] .factory          NOBITS          xxxxxxxx xxxxxx 001000 00  WA  0   0  1
  [34] .ARM.attributes   ARM_ATTRIBUTES  xxxxxxxx xxxxxx 000030 00      0   0  1
  [35] .comment          PROGBITS        xxxxxxxx xxxxxx 00007f 01  MS  0   0  1
  [36] .debug_info       PROGBITS        xxxxxxxx xxxxxx 79fe96 00      0   0  1
  [37] .debug_abbrev     PROGBITS        xxxxxxxx xxxxxx 09a76d 00      0   0  1
  [38] .debug_loc        PROGBITS        xxxxxxxx xxxxxx 27cf5e 00      0   0  1
  [39] .debug_aranges    PROGBITS        xxxxxxxx xxxxxx 0153b8 00      0   0  1
  [40] .debug_ranges     PROGBITS        xxxxxxxx xxxxxx 04dfc0 00      0   0  1
  [41] .debug_line       PROGBITS        xxxxxxxx xxxxxx 123c04 00      0   0  1
  [42] .debug_str        PROGBITS        xxxxxxxx xxxxxx 0d1d93 01  MS  0   0  1
  [43] .debug_frame      PROGBITS        xxxxxxxx xxxxxx 0505d8 00      0   0  4
  [44] .stab             PROGBITS        xxxxxxxx xxxxxx 0000cc 0c     45   0  4
  [45] .stabstr          STRTAB          xxxxxxxx xxxxxx 0001b7 00      0   0  1
  [46] .symtab           SYMTAB          xxxxxxxx xxxxxx 06d8a0 10     47 22131  4
  [47] .strtab           STRTAB          xxxxxxxx xxxxxx 035468 00      0   0  1
  [48] .shstrtab         STRTAB          xxxxxxxx xxxxxx 000253 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  y (purecode), p (processor specific)

上面的size就是 每个Section Headers占用的RAM大小统计的总数就是 占用情况

带有bss,text, data 段是我们一般需要统计

littefs文件系统移植 Littlefs是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)文件系统的思想,以日志结构存储元数据,以COW结构存储数据。这种特殊的存储方式,使Littlefs具有强大的掉电恢复能力(power-loss resilience)。分配COW数据块时Littlefs采用了名为统计损耗均衡的动态损耗均衡算法,使Flash设备的寿命得到有效保障。 阅读详情

相关推荐

3款主流嵌入式GUI库内存占用实测:µGFX vs LVGL vs emWin 在 512KB RAM MCU 上的表现

本文对µGFX、LVGL和emWin三款主流嵌入式GUI库在512KB RAM MCU上的内存占用和性能表现进行了实测对比。测试结果显示,µGFX在基础内存控制上表现最优,LVGL在复杂场景下渲染性能最佳,而emWin则适合需要商业支持的场景。文章为嵌入式系统开发者提供了详细的选型建议和优化配置技巧。

weixin_34221332的博客 462

嵌入式工程师工具箱:readelf/objdump/strip等8个GNU工具实战指南(附内存占用分析技巧)

本文深入解析嵌入式开发中8个关键GNU工具(readelf/objdump/strip等)的实战应用,提供内存占用分析技巧与优化方案。通过真实案例演示如何利用交叉编译链工具进行ELF文件解析、崩溃定位和固件体积优化,帮助工程师高效解决内存泄漏、固件膨胀等典型问题。

pytorch8learner的博客 157

手把手移植FreeRTOS到GD32F470:从Cortex-M4内核到多任务应用实战

实时操作系统(RTOS)是嵌入式开发中实现复杂多任务管理的核心技术,其核心原理在于通过任务调度器管理多个任务的执行与切换,从而在单核MCU上模拟出多线程并发效果。这项技术能显著提升系统响应性和资源利用率,广泛应用于物联网设备、工业控制等对实时性有要求的场景。FreeRTOS作为一款开源、轻量且应用广泛的RTOS,凭借其可裁剪的内核和丰富的同步通信机制,成为许多开发者从裸机转向RTOS开发的首选。本文将以搭载Cortex-M4内核的GD32F470微控制器为硬件平台,深入讲解FreeRTOS移植的完整流程与工

weixin_30598225的博客 436

IAR软件*.map文件查看程序占用ROM和RAM大小

查看单片机程序占用rom和ram的大小: IAR程序编译后会在Project\Debug\List文件夹下生成一个*,map文件,用文本编辑软件打开,在最后面的部分会有空间占用信息,例如下图 readonly code和readonly data使用的是ROM空间,readwrite data使用的是SRAM空间。 单片机RAM空间会被栈、全局变量占用,改变全局变量的占用会明显改变rea...

zd845101500的博客 1万+

RTOS选型与开发实战指南

实时操作系统(RTOS)是嵌入式开发中的核心技术,通过任务调度机制确保关键任务在严格时间约束下完成。其核心原理包括优先级抢占式调度、时间片轮转等算法,在工业控制、汽车电子等领域具有不可替代的价值。以FreeRTOS和RT-Thread为代表的轻量级RTOS,凭借其优异的实时性能和资源效率,成为物联网设备的首选。开发中需重点考量任务切换时间、中断延迟等实时性指标,同时结合具体应用场景选择适合的调度策略。通过合理的低功耗设计和安全防护措施,RTOS能显著提升嵌入式系统的可靠性和能效比。

weixin_30820933的博客 487

FPGA TDC数字自动校准:BIN-by-BIN原理、实现与工程实践

时间数字转换器(TDC)是实现高精度时间间隔测量的核心器件,其原理是将时间差转换为可计数的数字量。在基于现场可编程门阵列(FPGA)的实现中,由于制造工艺偏差、布局布线差异以及环境温漂等因素,内部延时链的单元延时(即BIN宽度)存在显著的非均匀性和不稳定性,这直接导致了测量精度的下降和非线性误差。为解决此问题,数字自动校准技术应运而生,它通过纯数字域的算法对延时特性进行实时测量与补偿,从而提升TDC的微分非线性(DNL)和积分非线性(INL)性能。其中,BIN-by-BIN校准法通过统计直方图精确测量每个延

weixin_30776545的博客 449

【单片机】[stm8] - 使用库函数时,减少ROM占用的方法

在使用STM单片机的官方库函数编程时,单片机的ROM会额外的占用很多,我现在使用STM8S103时,使用了库函数,8K的ROM,写了几个自己的驱动和应用程序后,内存占用就到了 7800 bytes。但是还有些东西没有写完,需要继续添加。我使用以下两种方法,将其ROM减少到了 5866 bytes。MCU:STM8S103K3 开发工具:IAR 2.20 注: 1) 查看ROM,RAM使用

z21109的专栏 7014

STM32CubeMX配置FreeRTOS实战:从创建任务、信号量到测量任务运行时间的完整流程

本文详细介绍了如何使用STM32CubeMX配置FreeRTOS,从基础工程搭建、任务创建、信号量同步到任务运行时间测量的完整流程。基于STM32F103C8T6开发板(兼容正点原子开发板),通过实战案例演示多任务调度和性能优化技巧,帮助开发者快速掌握嵌入式实时系统开发的核心技术。

weixin_28726391的博客 422

STM32 USMART 调试组件移植实战:HAL库环境 5 步集成与 3 大常见问题解析

本文详细介绍了在STM32 HAL库环境下移植USMART调试组件的5步集成方法,包括硬件准备、文件导入、串口初始化、函数注册和主循环集成。同时解析了3大常见问题:串口中断冲突、函数注册失败和内存溢出,并提供了具体解决方案。USMART组件通过串口交互式函数调用,可显著提升嵌入式开发调试效率,特别适合STM32开发者使用。

csdndownload11123的博客 370

FreeRTOS实时性原理与STM32工程实践指南

实时操作系统(RTOS)是保障嵌入式系统确定性响应的核心基础,其本质在于最坏情况下的可预测延迟控制,而非平均性能优化。FreeRTOS作为轻量级抢占式RTOS,通过纳秒级上下文切换、极短中断禁用时间及优先级继承互斥机制,为硬实时场景提供底层支撑。在STM32平台,它深度集成于CubeMX与HAL生态,但需精准配置SysTick节拍、NVIC中断优先级分组及堆内存管理策略,方能避免任务饥饿、优先级反转与栈溢出等典型问题。本文结合UART多任务同步实例,详解互斥信号量、队列与ISR安全API的协同使用,覆盖从内

weixin_31749299的博客 40

FPGA实战:Verilog实现实时直方图均衡化

直方图均衡化是图像增强领域最基础的算法之一,通过重新映射灰度级分布来提升对比度。在工业视觉、安防监控和医疗影像等场景中,实时视频流处理对算法硬件加速提出了严苛要求。FPGA凭借并行流水线架构,成为实现低延迟直方图均衡化的理想载体。然而,全局统计与流式处理之间的矛盾、映射表生成时序、帧切换同步等问题,让FPGA实现远非调用一行`histeq()`那么简单。本文基于Artix-7平台,以Verilog RTL设计了一套双帧统计+乒乓缓存的直方图均衡化流水线,详细拆解直方图统计模块的单周期读改写、CDF映射表生成

weixin_42550597的博客 294

FreeRTOS移植到STM32F103的完整流程(含常见编译错误解决)

本文详细介绍了将FreeRTOS移植到STM32F103的完整流程,包括环境准备、源码下载、工程目录设计、关键移植步骤及常见编译错误解决方案。针对STM32F103的特性,提供了内存管理方案选择、中断配置优化等实用技巧,帮助开发者高效完成移植工作并优化系统性能。

yhn45678901的博客 917

ANSYS Sherlock新手避坑:从ODB++文件导入到属性匹配的完整流程(附官方教程路径)

本文详细解析了ANSYS Sherlock从ODB++文件导入到属性匹配的完整流程,帮助新手避开常见陷阱。内容包括环境准备、官方教程使用技巧、ODB++导入关键检查点、属性验证策略及常见报错解决方案,特别强调了路径设置和材料匹配的重要性,提升仿真效率。

weixin_42519781的博客 455

8KB RAM单片机极限挑战:实现滑动图像播放的嵌入式优化方案

图像压缩与解码是嵌入式图形显示的基础技术,其核心原理在于通过算法减少数据量,以适应资源受限的硬件环境。在微控制器(MCU)开发中,内存优化直接决定了功能的可行性与成本控制。通过采用帧间差分、RLE等轻量级压缩技术,结合流式解码和精细的内存池管理,能够在极小的RAM空间内实现动态图像的流畅处理。这项技术的工程价值在于为物联网设备、低功耗信息屏等场景提供了高性价比的显示解决方案,尤其适用于需要动态反馈但成本敏感的应用。本文聚焦于在仅8KB RAM的MCU上实现滑动图像播放,详细阐述了从图像预处理、内存规划到流式

weixin_30859423的博客 362

ISP 基础知识储备

ISP(image signal processing),图像信号处理芯片,在手机摄像头和车载摄像头等领域有着广泛应用,是图像信号处理的核心芯片。 ISP pipeline 流程图如下: 光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。 然后,得到的bayer ...

qq_39444290的博客 778

ADF4002分频器避坑指南:常见配置错误及解决方案

本文深入解析了ADF4002分频器在实战应用中的常见陷阱与解决方案。内容涵盖寄存器配置逻辑、硬件PCB布局要点、软件驱动时序细节及系统化调试方法,重点阐述了如何避免因配置错误导致芯片无法正常工作的问题,帮助工程师高效完成高精度频率合成系统设计。

weixin_29192141的博客 96

嵌入式开发中的高效日志调试方法与工程实践

日志调试是嵌入式开发中不可或缺的技术手段,其核心原理是通过非侵入式记录系统运行时状态,解决传统断点调试在实时系统中的局限性。从技术实现来看,日志系统通过分级控制、条件编译等机制,在保证调试信息完整性的同时最小化资源开销。以EasyLogger为代表的专业日志库,采用宏定义和编译期优化,实现了线程安全、格式统一的日志输出。在STM32等嵌入式平台上,合理的日志方案能有效诊断CAN总线通信、RTOS任务调度等典型问题。通过模块化控制、动态级别调整等工程实践,开发者可以平衡调试需求与系统性能,特别是在资源受限的M

weixin_42581846的博客 548

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8027

10个经典C语言开源项目深度解析:嵌入式与系统编程必读

C语言作为系统编程与嵌入式开发的基石,其工程实践能力远超语法本身。理解指针内存模型、POSIX系统调用、事件驱动架构、轻量级协议栈实现等核心概念,是构建高可靠底层软件的前提。本文聚焦于一批代码精炼(500–30000行)、无冗余依赖、经生产验证的优质C项目,涵盖HTTP服务器、JSON解析、单元测试框架、事件循环、内存缓存、嵌入式数据库及经典内核等典型场景。通过剖析Webbench的多进程并发模型与Tinyhttpd的手工HTTP解析,揭示资源受限环境下‘确定性行为’与‘栈优先内存管理’的技术价值;结合cJ

weixin_35797963的博客 281

HFSS之天线设计实例

目录 矩形微带天线 微带天线尺寸计算 微带线的3个关键指标如以下 HFSS设计流程 新建工程并设置求解类型 天线建模 添加求解设置和扫频设置 天线建模步骤 谐振点查看 优化设计 查看天线分析结果 3D增益 Smith圆图 S参数 驻波比 ​ 平面增益 方向性系数\增益\轴比 矩形微带天线 微带天线的概念首先是由Deschamps于1953年提出来的,经过20年左右的发展,Munson和Howell于20世纪70年代初期制造出来了实际的微带天线 一个简单的...

ASH_GUARDIAN的博客 1万+

3D打印切片软件Cura及CuraEngine原理分析

引言         年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件。         自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的。我一向都觉得比起自己写代码来,读别人的代码是一个漫又而痛苦的过程,读者的思想与写者总有偏差,往往又无法验证自己的猜想是否正确,只叹人脑不是电脑,无法把眼前的代码从头到尾执行一遍...

AiDiShengDeXiaoWu的博客 4421

基于TMS320C30与SPOX系统实现4.8kbps CELP语音编码实战

语音编码是数字信号处理中的核心技术,旨在以更少的数据量高效表示语音信号,其核心原理是通过模型逼近原始波形。线性预测编码通过分析声道共振特性提取频谱包络,而码本激励则补充激励源细节,两者结合构成了混合编码的基础。这种技术在工程上极具价值,能大幅降低存储与传输成本,广泛应用于移动通信、物联网音频设备等资源受限场景。本文聚焦于在经典浮点DSP平台TMS320C30上,借助SPOX实时操作系统及其优化库,深入实现4.8kbps码率的码激励线性预测编码方案,详细剖析了从算法模块划分、C语言实现到关键循环的汇编级优化全

weixin_30381317的博客 469

【Docker安装】OpenEuler系统下部署Docker环境

【Docker安装】OpenEuler系统下部署Docker环境

jks212454的博客 4191

MiniMax-M3.1-Flash量化方案深度剖析:Quark + Local Hessian混合精度FP4/FP8策略与排除列表逻辑完全指南

MiniMax-M3.1-Flash-Quark-MXFP4-LH-Test 是一个经过 **Quark 量化框架**处理的 MiniMax-M3 多模态 MoE 大模型检查点:它用 **MXFP4(4位)** 压缩 MoE 专家权重、用 **FP8** 保留注意力与共享专家精度,并配合 **Local Hessian(局部海森矩阵)** 算法按层做混合精度决策,外加一份 254 项的排除列表(e

gitblog_00023的博客 785

倍福--TwinSAFE功能块的使用

在安全模块的程序设计中,输入变量取反,或者把PLC的变量连接到安全的功能块程序中, 操作流程 1.1. 功能块输出取反 例如修改IN,右击属性,然后可在Single-Channel选项中选择是NO还是NC的输入信号。 1.2. PLC标准变量作为安全程序的输入 1.2.1. 建立两个PLC变量 1.2.2. 安全程序区创建变量 1.2.3. 功能块变量链接 首先,PLC变量不能直接连到Estop功能块的输入变量中,否则会报错,但PLC可以连接到SafeAnd这些功能块,然后再转出来,如下所示

weixin_41883890的博客 5312

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 搭建 https 服务器和 websocket 服务器指南
下一篇: arm-none-eabi-gcc 源码编译 toolchain 构建过程
杨尘心
博客等级 码龄10年 122粉丝 88原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值