引用链接:https://www.strongerhuang.com/Keil/Keil系列教程12_map文件全面解析.html
这篇文章介绍的比较全面,摘录部分我认为比较重要的如下:

什么是map文件?
简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。
很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。

我们在Keil中最常见的就是在编译之后,编译窗口会显示类似如下一段关于程序和数据大小的信息:
Program Size: Code=1112 RO-data=320 RW-data=0 ZI-data=1632

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

keil 主要包含配置:
Memory Map:内存映射
Callgraph:图像映射
Symbols:符号
Cross Reference:交叉引用
Size Info:大小信息
Totals Info:统计信息
Unused Section Info:未调用模块信息
Veneers Info:装饰信息

2.3 map文件内容分类
从上面输出配置可以看得出来map文件大概包含了哪些信息。map文件将其分为如下五大类:
1.Section Cross References:模块、段(入口)交叉引用

2.Removing Unused input sections from the image:移除未调用模块

3.Image Symbol Table:映射符号表

4.Memory Map of the image:内存(映射)分布

5.Image component sizes:存储组成大小

我们编译工程后,在编译窗口一般会看到类似如下一段信息:
Program Size: Code=1112 RO-data=320 RW-data=0 ZI-data=1632

Code:指代码的大小;
Ro-data:指除了内联数据(inline data)之外的常量数据;
RW-data:指可读写(RW)、已初始化的变量数据;
ZI-data:指未初始化(ZI)的变量数据;

提醒:
A.Code、Ro-data:位于FLASH中;
B.RW-data、ZI-data:位于RAM中;
C.RW-data已初始化的数据会存储在Flash中,上电会从FLASH搬移至RAM。

关系如下:
RO Size = Code + RO Data
RW Size = RW Data + ZI Data
ROM Size = Code + RO Data + RW Data

关于_map文件的全面解析相关推荐

  1. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  2. 利用js-xlsx.js插件实现Excel文件导入并解析Excel数据成json数据格式

    <!--本文转载于网络,有太多一样的文章,不知道原作者是哪位了,就不注明出处了.这里记载下来,用于自己的学习借鉴--><!DOCTYPE html><html lang= ...

  3. android启动---lk入口文件crt0.s解析

    android启动---lk入口文件crt0.s解析 // .section 伪操作, 用户可以通过.section 伪操作来自定义一个段,每一个段以段名为开始, //以下一个段名或者文件结尾为结束, ...

  4. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  5. 对xml文件的sax解析(增删改查)之一

    crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...

  6. nginx 上传文件漏洞_nginx解析漏洞复现

    nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件 ...

  7. 分析FLV文件分析和解析器的开源代码

    分析一下GitHub上一份FLV文件分析和解析器的开源代码 GitHub源码地址:功能强大的 FLV 文件分析和解析器 :可以将flv文件的视频tag中的h264类型数据和音频tag中的aac类型数据 ...

  8. pymavlink 源码剖析(一)之XML文件的数据解析

    文章目录 1 引言 2 pymavlink 的代码自动生成方法 3 XML 文件的数据解析 3.1 XML 文件预处理 3.2 解析 XML 的数据 3.2.1 依据协议版本初始化一些版本特征变量 3 ...

  9. 使用Java泛型和反射机制编写Excel文件生成和解析的通用工具类

    前几天被派到一个小项目中做临时维护,工作地点不方便且不说,项目代码那叫一个恶心... 代码几乎完全没有注释.这应该是我们天朝大部分程序员的习惯,代码不写注释,给后面维护的同事带来多大麻烦啊! 几百行的 ...

最新文章

  1. oracle 实现HA,oracle RAC的客户端HA配置
  2. 03_属性别名映射的配置
  3. openresty测试lua脚本配置示例
  4. docker概念很乱?俺来替你理一下!
  5. c#读取string类型的xml格式的字符串
  6. 2020年首届算法竞赛网络挑战赛直播讲解课程
  7. P3806-【模板】点分治1
  8. 【计算机组成原理】指令执行过程
  9. ECCV 2020 论文大盘点-实例分割篇
  10. element中根据条件判断按钮是否禁用_从零动手封装一个通用的vue按钮组件
  11. 【转贴】蚂蚁和大象的恩怨
  12. 20190216-Java 教程(菜鸟教程)
  13. 营业执照在线生成_潍坊发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
  14. myeclipse 10破解方法
  15. WINCE 矩阵键盘 介绍
  16. Redis trouble21 -- aof持久化导致redis命令阻塞
  17. Jzoj5444【NOIP2017提高A组冲刺11.2】救赎
  18. 帮助中国IT企业吃掉更多不会跳舞的大象
  19. 浏览器预检请求返回400 has been blocked by CORS policy: Response to preflight request doesn’t pass access cont
  20. 【如何快速的开发一个简单的iOS直播app】(代码篇)

热门文章

  1. VB.NET模拟LED数字钟
  2. Load balancer does not have available server for client问题
  3. json字符串与python对象互转
  4. vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期-03
  5. MQTT+ActiveMQ实现消息推送(移动端)
  6. Redis系列(六)
  7. Excel如何生成条形码图片?
  8. ViewData与ViewBag的使用和区别
  9. Java学习日记 2022.7.4
  10. 北美18名校的数据挖掘,数据分析,人工智能及机器学习课程汇总