MAP文件结构

本文详细解释了Map文件的构成,包括模块间交叉引用、移除未使用的输入模块、映射符号表、内存分布和代码组成大小,强调了如何通过分析这些信息进行代码优化和内存管理。
摘要由CSDN通过智能技术生成

 

map文件的组成:


1、Section Cross References - 模块、段(入口)交叉引用:各个源文件之间函数的调用关系

Section Cross References   主要是指各源文件生成的模块间的相互引用关系
比如:spi.o(.text) refers to stm32f4xx_rcc.o(.text) for RCC_AHB1PeriphClockCmd
意思是:spi.c文件编译生成的模块spi.o中调用了stm32f4xx_rcc.c文件编译生成的模块stm32f4xx_rcc.o 中的函数RCC_AHB1PeriphClockCmd


2、Removing Unused input sections from the image.- 移除未使用的模块


3、Image Symbol Table - 映射符号表描述各( 程序段 / 数据 )在存储器中的地址、类型、大小等

 Symbol Name          Value          Ov Type           Size                   Object(Section)

(符号名称)          (地址)       (类型)       (大小)             (模块/源文件名称)

  • 这一项很重要,可以看到具体到某段代码/某个数据的大小,比如定义的数组大小,在这里可以选择出一些没用到的、可以优化删减的代码段和定义的变量、数组,对代码进行“瘦身”,降低内存的负担,也可以适当增加分配的内存大小,避免内存溢出越界问题。

  • Symbols 分两类:

    • Local Symbols :用Static声明的变量和函数的地址和大小。

    • Global Symbols :非Static声明的全局变量和函数的地址和大小。

  • Value :存储对应的地址
    • 0x0800xxxx 指存储在FLASH里面的代码、变量等。
    • 0x2000xxxx 指存储在内存RAM中的变量Data等。


4、Memory Map of the image - 内存(映射)分布

Load Region 加载区域 :
LR_IROM1:指加载区域位于LR_IROM1开始地址0x08000000,大小有0x00000e68,这块区域最大为0x00100000.
Execution Region 执行区域:
ER_IROM1:0x0800xxxx 指存储在FLASH里面的代码、变量等。
RW_IRAM1:0x2000xxxx 指存储在内存RAM中的变量Data等。
Exec base 执行起始地址
Load base 加载起始地址

Exec Addr   执行地址
Load Addr   加载地址
Size     内存大小
Type     类型:Data / Code / Zero / PAD
(PAD:这个类型在map文件中放在这个位置,其实它不能算这里的类型。要翻译的话,只能说的“补充类型”。ARM处理器是32位的,如果定义一个8位或者16位变量就会剩余一部分,这里就是指的“补充”的那部分,会发现后面的其他几个选项都没有对应的值。)
Attr     属性:RO / RW
Section Name 模块/段: .text、 i、 .data、 .bss、 HEAP、 STACK等
Object    模块(源文件)名称

5、Image component sizes - 存储组成大小

 

Code :代码占用的空间大小
RO Data :Read Only,是只读常量的大小,如const型
RW Data :Read / Write,是已初始化(但初始化值不为零)的可读写变量。
ZI Data :Zero Initialize,是未初始化 / 初始化值为0 的可读写变量。
Object Name :模块(源文件)名称

RAM 和 ROM 的使用情况

  • RAM = RW-data + ZI-data
  • ROM(Flash) = Code + RO-data + RW-data   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值