当前位置: 首页 > news >正文

Keil MDK 编译输出内存分段详解

Program Size: Code=12976 RO-data=252 RW-data=4 ZI-data=1004

这是 ARM 单片机(Keil)标准内存统计,对应 Flash、RAM 两大块存储。

1. 各字段对应存储段

Code = 12976

只读程序代码段(.text)

  • 存放:所有函数指令、if/for/while 逻辑、中断服务函数
  • 存储位置:Flash(ROM),掉电不丢失
  • 单位:字节,这里占用 12976 字节 Flash

RO-data = 252

只读常量数据段(.rodata)RO = Read Only 存放:

  1. const全局 / 静态常量
  2. 字符串字面量(你代码里LOG("val= %d\n")这类字符串)
  3. 只读数组常量
  • 存储位置:Flash
  • 只读,运行中不可修改

RW-data = 4

已初始化全局 / 静态变量(.data)RW = Read Write 存放:全局 /static 局部、初始值≠0的变量 例:

c

运行

int g_a = 100; static int s_b = 5;
  • 编译时:初始值存在 Flash;
  • 上电启动时:拷贝到 RAM 中运行;
  • 占用:Flash 存初始值 4 字节,RAM 占用 4 字节。

ZI-data = 1004

零初始化数据段(.bss)ZI = Zero Initialized 存放两类:

  1. 全局 /static 局部变量,未初始化 或 初始值 = 0
  2. 全局大数组、静态缓冲区 上电后启动代码自动全部清 0,Flash 不占用空间,只占用 RAM 1004 字节

2. RAM 总占用计算公式

运行时芯片 RAM 总开销 = RW-data + ZI-data 这里:4 + 1004 =1008 字节 RAM

3. Flash 总占用计算公式

固件烧录 Flash 总大小 = Code + RO-data + RW-data 12976 + 252 + 4 =13232 字节 Flash

4. 补充区分

  1. 函数内普通局部变量(unsigned int val=100;):栈 Stack
    • 不计入 Code/RO/RW/ZI,栈是运行时动态分配,编译统计不体现;
  2. static unsigned int val=100;:计入 RW-data;
  3. static unsigned int val;:计入 ZI-data;
  4. const char str[]="abc";:计入 RO-data。

5. 总结

  • Flash 固件大小:13232 字节
  • 全局静态变量占用 RAM:1008 字节
  • 代码 + 常量字符串:12976+252 字节存在 Flash
  • RW=4:只有 4 字节带初始值的全局静态变量
  • ZI=1004:大量未初始化全局 / 静态数组、变量
http://www.gsyq.cn/news/1605859.html

相关文章:

  • 收不到WhatsApp验证码?别急着砸手机,这5个坑你肯定踩过
  • 先说结论:C++/WinRT 不一定要专用模板
  • 湖北工业大学《线性代数》期末试卷及答案2016-2024学年PDF
  • 【从0到1构建一个ClaudeAgent】协作-团队协议
  • IvorySQL 深度解析:融合 PostgreSQL 生态与 Oracle 兼容性的革新之路
  • 虚拟化技术中的容器编排资源隔离与性能优化
  • UDP Socket 回声服务代码全疑点深度手册:结构体本质・bind 内核逻辑・收发设计全拆解
  • 如何在Mac上配置OBS虚拟摄像头:终极完整指南
  • .text 段的内存和.rodata的内存区别
  • 2026年一键生成论文工具推荐
  • 跳出论文熬夜怪圈:okbiye 一站式 AI 毕业论文写作
  • 行为型模式:对象之间的默契配合
  • Selenium脚本性能优化实战:从等待策略到并行执行
  • Manim实现动态交点计算--从一个动点问题说起
  • 用 AI 一句话查 A 股数据,免费替代 Tushare(附完整教程)
  • 黄金短期有震荡筑底倾向
  • 数字隔离器与光耦合器:筑牢舞台表演机器人运行核心基石
  • 独立开发者如何使用 CSGClaw 管理复杂开发任务
  • 双向依赖同步机制
  • 2026最新智慧园区公司挑选攻略 帮你选出靠谱适配的合作服务商
  • 家庭防水验收标准:宝师傅分享验收要点
  • AIAgent
  • 扬州清宸康养180道菜不重样?真相究竟是怎样,快来一探究竟!
  • ModelEngine QA对生成技术:如何实现60%留用率的高质量训练数据
  • 好用的检测机DD马达哪家靠谱
  • GaussDB(DWS)数据仓库性能压测与调优实战:从0到1全记录
  • 【从0到1构建一个ClaudeAg _
  • 为什么建议中小企业优先考虑开源ERP
  • AI编码代理实战:从网站克隆到Next.js项目生成的工程化指南
  • AI 赋能接口自动化测试系列(一):接口文档智能解析Agent Skill推荐