深入剖析之通过IAR MAP文件查看目标文件内存分配
来源:互联网 发布:pythonxy linux 编辑:程序博客网 时间:2024/06/08 11:23
我这里还是以IAR开发Kinetis为例深入介绍一下。其实map文件(内存映射文件)可能初手开发的时候甚少有去关注它的,甚至好些都不知道它是干嘛的,呵呵,只有一些有经验的老手或者搞移植搞深入研究的才会去查看它,初手往往上来就是在线调试、查看内存(这个都很少用)、看寄存器、断点(这个用的也少)等等,但是等你了解了map文件,再去完成上述调试的时候会让你事半功倍,且有一种运筹帷幄的感觉都不夸张。哈哈,说的这么多,还是上图介绍吧(俺还是喜欢图文并茂的感觉,话说乔布斯以前在每次开苹果新品展示会的时候,你看见的绝对大多数是图片形式的演讲稿,因为乔大爷深谙这个道理,估计这也是为什么iOS,Mac OS都是UI强大的原因吧):
首先当然要生成map文件了,注意IAR的默认设置是不生成map文件的,我们需要手动设置一下,如下图,然后点击准备就绪之后编译即可在$PROJ_DIR$\FLASH_256KB_PFLASH\List文件夹下找到:
举报
88
主题431
帖子1293
积分助理工程师
专家等级:
结帖率:100%
生成之后,我们在IAR环境下打开它(当然可以以记事本直接打开,这里为了更直观),map文件主要由以下几部分构成:
(1)文件头中显示链接器版本,输出文件名,MAP 文件名以及链接器命令行等。
(2)RUNTIME MODEL ATTRIBUTES 部份显示 Endian 等属性;
(3) PLACEMENT SUMMARY 部份显示各sections 在存储器中的分布;
(4)INIT TABLE 部份显示与初始化有关的section tables;
(5)MODULE SUMMARY 部份显示所有被连接的文件信息,包括目标文件和库文件等;(6)ENTRY LIST 部份给出了所有函数的入口地址及其所在的目标文件。
(7)文件尾中显示了总的代码和数据字节数(想看下最后目标代码占用多少Flash和多少RAM的可以从这里查到)。
举报
88
主题431
帖子1293
积分助理工程师
专家等级:
结帖率:100%
(1)PLACEMENT SUMMARY,该部分主要显示目标代码在芯片内部的存储器映射地址,可能会有人疑问为什么会分配到这些地址的呢,其实这些地址分配都是在前文讲的Linker文件(*.icf文件)里预定义好了,IAR根据所选目标芯片就按照该定义分配地址段,然后烧写进Flash,具体段定义可以到大前篇博客icf文件说明详细了解。
举报
88
主题431
帖子1293
积分助理工程师
专家等级:
结帖率:100%
举报
88
主题431
帖子1293
积分助理工程师
专家等级:
结帖率:100%
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- (转)深入剖析之通过IAR MAP文件查看目标文件内存分配
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- IAR之目标文件内存分配
- IAR 目标文件内存分配
- 内存分配文件map
- IAR map文件分析
- IAR MAP/ICF 文件学习
- 内存管理分配深入剖析
- 内存映射文件之剖析
- 内存映射文件之剖析
- IAR中map文件全解析
- 深入剖析Java内存分配、管理
- 深入剖析PE文件
- 深入剖析PE文件
- 机器学习之提升
- 远程服务器git仓库的搭建以及本地git库的首次推送首次克隆远程仓库的文件
- Java静态动态代理以及spring实现代理
- 龟兔赛跑(hd2059)
- JSP中application session request cookie 生命周期的问题
- 深入剖析之通过IAR MAP文件查看目标文件内存分配
- C++ 单例模板
- 【MySQL】慢查询日志
- bindService的使用方法
- unity新手可以参考,相机360度观察一个对象
- 自定义图标列表
- 2017滴滴前端笔试题总结
- 单调队列与单调栈用法详解
- 模拟地和数字地单点接地