map文件分析 stm32_Keil系列教程12_map文件全面解析

本文详细介绍了Keil MDK-ARM编译后的map文件,包括如何打开、配置输出内容,以及五大类内容:模块、段交叉引用,未调用模块列表,映射符号表,内存映射分布和存储组成大小。通过map文件,工程师可以分析函数大小、入口地址,解决内存问题。
摘要由CSDN通过智能技术生成

说明:

本文原创作者『strongerHuang』

首发于微信公众号『嵌入式专栏』,同时也更新在我的个人网站:EmbeddedDevelop

标签:Keil、 MDK-ARM、 µVision

该教程基于MDK-ARM,大部分内容也适用于Keil其它3款(C51、 C251、 C166)产品。

一、写在前面

什么是map文件?

简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。

很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。

我们在Keil中最常见的就是在编译之后,编译窗口会显示类似如下一段关于程序和数据大小的信息:

Program Size: Code=1112 RO-data=320 RW-data=0 ZI-data=1632

这一段提示信息其实是汇总了程序和数据的信息,这些信息其实是单个模块汇总而成,在map文件里有详细列表。

二、关于Keil中的map文件

2.1 如何打开map文件

最直接,也是最简单的办法:双击工程目标,出现map文件(注意,双击的是工程目标,不要双击工程,或文件组)。如下图:

当然,可以找到map文件位置(Listings文件夹),用编辑器工具打开。

2.2 map文件输出内容配置

在之前文章《Keil系列教程05_工程目标选项配置(一)》中的Listing 列表章节有提到map文件。

map文件输出信息的配置位于:Project -> Options for Target -> Listing,如下图:

主要包含配置:

Memory Map:内存映射

Callgraph:图像映射

Symbols:符号

Cross Reference:交叉引用

Size Info:大小信息

Totals Info:统计信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值