问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Keil编译环境下代码占用flash、RAM空间分析详解

创作时间:
作者:
@小白创作中心

Keil编译环境下代码占用flash、RAM空间分析详解

引用
CSDN
1.
https://m.blog.csdn.net/stone5195/article/details/143932585

在嵌入式软件开发中,了解代码占用的存储空间大小对于优化系统性能和资源管理至关重要。本文将详细介绍如何在Keil编译环境下通过分析map文件来精确计算各个模块占用的flash和RAM空间大小,帮助开发者更好地进行资源规划和优化。

嵌入式软件开发中,代码总共占用的flash、RAM空间大小,从编译结果的code段(或text)、RO-data、RW-data、ZI-data段大小就可以获知。
如果需要分析各个模块占用的flash、RAM空间大小,或者移植某个模块需要增加MCU的空间大小,则需要从编译的map文件分析。在keil编译环境下,分析步骤如下:

1. 配置map文件生成选项

打开“设置选项”,配置map需要的信息:

2. 生成map文件

执行编译,生成map文件;

3. 分析map文件

map文件最后,是汇总的信息
ROM size 表示占用的flash空间大小 (Code + RO Data + RW Data);
RW size表示占用的RAM空间大小 (RW Data + ZI Data);

3.1 Image文件信息

  • Memory Map of the image:所有编译信息的汇总
  • Exec Addr:执行地址
  • Load Addr:加载地址
  • Size:符号的大小
  • Type:符号类型
  • Attr:符号属性
  • Idx:索引
  • E Section Name:节名称
  • Object:对象文件名

3.2 各功能模块占用的空间大小

Image component sizes” —— 这个编译结果分模块列举了各个文件的编译结果,通过这些编译信息可以计算每个模块的flash、RAM空间大小。
例如:
abup这个模块,有13个文件,每个文件的flash空间( Code + RO Data + RW Data )、RAM空间( RW Data + ZI Data )都分别列出,统计这13个文件占用的大小,就可以知道移植该模块需要的空间大小。
因此,移植上述模块,需要的空间为:
flash空间约为11058字节;
RAM消耗12306字节;

3.3 库文件信息

有些代码中包含了lib库文件,在评估模块占用的空间时,还需要加上lib占用的空间。lib库文件的编译信息,在“Library ”段可以查看lib文件占用的空间大小。
库文件占用的flash:24324+2310=26634字节
RAM消耗:12+296=308字节

通过以上步骤,开发者可以精确地分析和计算出各个模块在嵌入式系统中占用的存储空间,从而更好地进行资源规划和优化。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号