在stm32项目工程中,可以通过.map文件,来观察自己的代码中所用空间的大小,以及一些参数的所处的存储位置。搜索相关资料,做了一下笔记。
Program Size: Code=908RO-data=320 RW-data=0 ZI-data=1024
Code:指代码的大小;
Ro-data:指除了内联数据(inlinedata)之外的常量数据;
RW-data:指可读写(RW)、已初始化的变量数据;
ZI-data:指未初始化(ZI)的变量数据;
Code、Ro-data:位于FLASH中;
RW-data、ZI-data:位于RAM中;
提醒:RW-data已初始化的数据会存储在Flash中,上电会从FLASH搬移至RAM中。
关系如下:
RO Size = Code + RO Data
RW Size = RW Data + ZI Data
ROM Size = Code + RO Data + RW Data
1.Symbol Name:符号名称
2.Value:存储对应的地址;
0x0800xxxx指存储在FLASH里面的代码、变量等。
0x2000xxxx指存储在内存RAM中的变量Data等。
3.Ov Type:符号对应的类型
符号类型大概有几种:Number、Section、Thumb Code、Data等;
全局、静态变量等位于0x2000xxxx的内存RAM中。
4.Size:存储大小
这个容易理解,我们怀疑内存溢出,可以查看代码存储大小来分析。
这里是详细的讲解