打印

关于map文件

[复制链接]
2545|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
beyondhyq|  楼主 | 2011-12-6 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近期,经历完印象深刻的校园招聘,好不容易静下心来,重返实验室继续我的项目,发觉基础真的很重要,比如在做嵌入式设计的时候,数据的动态存储、静态存储等等,violate变量与code变量,define与typedf等的区别。在这里我想说说编译器编译完文件后生成的map文件的重要性,望各位指正。
这里以MDK为例,实际IAR、ADS都是类似的,经过编译后,我们会看到类似
Program Size: Code=1076 RO-data=288 RW-data=20 ZI-data=612 
的编译结果,在我之前的项目开发中,根本就没有考虑到占用内存及存储的概念,但实际是很重要的:
Code:指的是程序代码所占用的空间;
RO-data:指的是程序里面定义的常量所占用空间(一般是用code定义的);
RW-data:指的是程序里面变量所占用的空间(包括全局、局部?);
ZI-data:指的是程序里定义了但没有被引用的变量;
拿STM32F103VET6来说,有512Kb的flash,64Kb的SDRAM,虽然两个的值都挺大,在写小项目代码时根本就不用考虑以上Program Size的大小,但,若是换了个只有8K大小FLASH的器件或是更小的器件,这些就不得不考虑了。
在我们编译完程序之后,工程的根目录里面有个List文件夹,这个文件夹里面有个.map文件,这个是讲编译过程中的各个文件之间的链接关系,最后给出了
==============================================================================


Code (inc. data) RO Data RW Data ZI Data Debug

1076 82 288 20 612 452064 Grand Totals
1076 82 288 20 612 452064 ELF Image Totals
1076 82 288 20 0 0 ROM Totals

==============================================================================

Total RO Size (Code + RO Data) 1364 ( 1.33kB)
Total RW Size (RW Data + ZI Data) 632 ( 0.62kB)
Total ROM Size (Code + RO Data + RW Data) 1384 ( 1.35kB)

==============================================================================


通过这个文件也很容易看到自己写的程序的实际将占用MCU多少资源,关于.map文件,大家有什么更好的解析不?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

1

粉丝