博客
关于我
Linux方案级ROM/RAM优化记录
阅读量:800 次
发布时间:2023-02-04

本文共 1566 字,大约阅读时间需要 5 分钟。

ROM/RAM优化实践指南:从量化到裁剪的全流程

在嵌入式系统开发中,优化ROM和RAM占用是降低系统成本、提升性能的重要环节。本文将从量化分析到优化实施的全流程,结合实践经验,提供一套系统化的解决方案。

一、量化存储空间

1.1 获取文件系统尺寸

通过遍历文件系统,统计各文件的大小,尤其是bin文件和库文件的占用情况。rootfs的大小可以通过分析rootfs.cpio等镜像文件获取。

1.2 分析ELF文件

使用sizereadelf -S工具,分析ELF文件的text、data、bss段占用情况。例如:

size vmlinuxreadelf -S vmlinux

输出结果如下:

4680576    3596750     247304    8524630     821356    vmlinux

1.3 内核子系统分析

通过find -name built-in.o | xargs size,分析内核中各模块的大小。排序结果可以帮助识别内核中占用空间最大的子系统。

1.4 符号分析

使用nm --size -r vmlinux,按占用空间排序,查看text、data、bss段的占用情况。例如:

nm --size -r vmlinux | head -100

1.5 Bloat-o-meter工具

用于检测编译间符号尺寸变化,例如:

./scripts/bloat-o-meter vmlinux.old vmlinux

输出结果如下:

add/remove: 11/6598 grow/shrink: 687/15668 up/down: 18226/-1662970 (-1644744)

二、RAM量化

2.1 内核Reserved内存

通过cat /sys/kernel/debug/memblock/reserved,查看内核预留内存的具体分配情况。

2.2 动态内存分析

使用/proc/meminfo,获取内存使用情况:

cat /proc/meminfo | grep "MemTotal:\|MemFree:\|Slab:\|VmallocUsed:\|PageTables:\|KernelStack:\|HardwareCorrupted:\|Bounce:\|Active:\|Inactive:\|Unevictable:\|HugePages_Total:\|CmaTotal:\|CmaFree:"

2.3 应用内存分析

通过/proc/[0-9]*/smapsprocrank,分析应用进程的内存使用情况。

三、优化策略

3.1 使用buildroot

在buildroot中,通过strip工具移除调试信息,选择-Os优化等级,降低编译结果的体积。

3.2 内核配置

在内核配置中,选择Optimize for size,通过-Os优化等级降低内核的体积。

3.3孤立库删除

通过readelf -d分析依赖关系,删除不依赖的孤立库。

3.4 删除冗余功能

根据实际需求,删除不必要的文件系统、硬件驱动、网络协议等。

3.5 使用busybox替代功能

通过配置CONFIG_USE_BB_PWD_GRP,移除不必要的库文件。

3.6 内置dtb文件

将dtb文件内置到vmlinux中,通过early_init_dt_scan函数解析dtb。

3.7 优化uboot加载流程

通过修改CONFIG_EXTRA_ENV_SETTINGS,优化uboot的加载方式。

四、持续优化

优化是一个持续的过程,需结合实际使用场景反馈调整。通过脚本化量化、自动化验证,提升优化效率。

通过以上方法,可以系统化地实现ROM和RAM的低成本裁剪,显著降低嵌入式系统的资源占用。

转载地址:http://yjkfk.baihongyu.com/

你可能感兴趣的文章
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置服务器文件上传与下载
查看>>
Nginx 配置清单(一篇够用)
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
Nginx 集成Zipkin服务链路追踪
查看>>
nginx 集群配置方式 静态文件处理
查看>>
nginx+php的搭建
查看>>
nginx+tomcat+memcached
查看>>
Nginx+Tomcat实现动静分离
查看>>
nginx+Tomcat性能监控
查看>>
nginx+uwsgi+django
查看>>
nginx+vsftp搭建图片服务器
查看>>
Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
查看>>
nginx-vts + prometheus 监控nginx
查看>>
nginx: [emerg] getpwnam(“www”) failed 错误处理方法
查看>>
nginx:Error ./configure: error: the HTTP rewrite module requires the PCRE library
查看>>
Nginx、HAProxy、LVS
查看>>