打印
[Kinetis]

深入剖析之通过IAR MAP文件查看目标文件内存分配

[复制链接]
5582|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vigous1|  楼主 | 2015-3-23 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我这里还是以IAR开发Kinetis为例深入介绍一下。其实map文件(内存映射文件)可能初手开发的时候甚少有去关注它的,甚至好些都不知道它是干嘛的,呵呵,只有一些有经验的老手或者搞移植搞深入研究的才会去查看它,初手往往上来就是在线调试、查看内存(这个都很少用)、看寄存器、断点(这个用的也少)等等,但是等你了解了map文件,再去完成上述调试的时候会让你事半功倍,且有一种运筹帷幄的感觉都不夸张。哈哈,说的这么多,还是上图介绍吧(俺还是喜欢图文并茂的感觉,话说乔布斯以前在每次开苹果新品展示会的时候,你看见的绝对大多数是图片形式的演讲稿,因为乔大爷深谙这个道理,估计这也是为什么iOS,Mac OS都是UI强大的原因吧):

    首先当然要生成map文件了,注意IAR的默认设置是不生成map文件的,我们需要手动设置一下,如下图,然后点击准备就绪之后编译即可在$PROJ_DIR$\FLASH_256KB_PFLASH\List文件夹下找到:


相关帖子

沙发
vigous1|  楼主 | 2015-3-23 23:00 | 只看该作者

生成之后,我们在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的可以从这里查到)。

使用特权

评论回复
板凳
vigous1|  楼主 | 2015-3-23 23:01 | 只看该作者
本篇就挑出我们在调试的时候常常会考虑到用到的几个部分,当然有兴趣的可以每个部分都可以看看,会让你受益匪浅的,下面就分部分介绍下:
(1)PLACEMENT SUMMARY,该部分主要显示目标代码在芯片内部的存储器映射地址,可能会有人疑问为什么会分配到这些地址的呢,其实这些地址分配都是在前文讲的Linker文件(*.icf文件)里预定义好了,IAR根据所选目标芯片就按照该定义分配地址段,然后烧写进Flash,具体段定义可以到大前篇博客icf文件说明详细了解。


使用特权

评论回复
地板
vigous1|  楼主 | 2015-3-23 23:01 | 只看该作者
(2)ENTRY LIST,开发工程内所有函数的入口地址,个人觉着这部分很有用,通过该地址映射再结合调试的时候观察内存空间可以方便整个工程执行情况,让你了若指掌,而且也方便你解读一个陌生程序的功能(例如参考别人的例程,网上的例程之类的),总之个人觉着这个部分用处很大,有心人可以在此处做很大**。



使用特权

评论回复
5
vigous1|  楼主 | 2015-3-23 23:03 | 只看该作者
(3)这是map文件末尾部分,最后给出了整个工程文件占用的资源情况,即芯片内部Flash和RAM的使用情况,便于你对工程开发规模上的掌握,最后给出工程编译链接输出信息。


使用特权

评论回复
6
longzhigu| | 2015-3-24 08:45 | 只看该作者
1.收藏 2.点赞

使用特权

评论回复
7
FSL_TICS_ZJJ| | 2015-4-10 15:30 | 只看该作者
   非常感谢你关于Kinetis的经验分享 !

使用特权

评论回复
8
八净| | 2015-9-17 16:51 | 只看该作者
点赞下,如果楼主能讲的更详细点就更不错了

使用特权

评论回复
9
stevenzhongan| | 2016-1-15 23:32 | 只看该作者
楼主,不够详细

使用特权

评论回复
10
lw30402048| | 2016-5-8 21:07 | 只看该作者
vigous1 发表于 2015-3-23 23:00
生成之后,我们在IAR环境下打开它(当然可以以记事本直接打开,这里为了更直观),map文件主要由以下几部 ...

你好,比如我写的代码,占用flash,flash的地址 哪里到哪里 怎么看你知道吗?谢谢啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

427

帖子

15

粉丝