打印

讨论:iar怎样通过map文件查看目标文件内存分配情况

[复制链接]
4782|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vibra2016|  楼主 | 2017-3-15 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,,这个问题的一般开发者很少去关注的,不过在必要时候还是需要去了解并完成内存分配的操作。。一个合格的程序员是必须知道并熟练掌握自己的目标文件的内存分配情况的。。。
沙发
vibra2016|  楼主 | 2017-3-15 22:12 | 只看该作者
说了这些的,不外乎还是关于开发中的内存分配的,,在IAR中,编译工程文件会对应的生成.map文件的,,这个一般的开发者尤其是做单片机开发的同学是很少关注的,,不过在带操作系统开发的MCU中,,这个是必须掌握的,,是分析MCU相关问题的前提的。

使用特权

评论回复
板凳
vibra2016|  楼主 | 2017-3-15 22:16 | 只看该作者
不多说,,开始分享着方面的只是的——
首先是在IAR中做对应的设置的生成的,在linker下的,不多介绍的。。生成之后,在对应的路径下找到该.map文件的,,然后再打开的。。
里面主要有以下几部分的,,这里做分别介绍的、、、、、、、
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的可以从这里查到)。

使用特权

评论回复
地板
vibra2016|  楼主 | 2017-3-15 22:17 | 只看该作者
下边做分别介绍的:
(1)PLACEMENT SUMMARY,该部分主要显示目标代码在芯片内部的存储器映射地址,可能会有人疑问为什么会分配到这些地址的呢,其实这些地址分配都是在前文讲的Linker文件(*.icf文件)里预定义好了,IAR根据所选目标芯片就按照该定义分配地址段,然后烧写进Flash。
(2)ENTRY LIST,开发工程内所有函数的入口地址,个人觉着这部分很有用,通过该地址映射再结合调试的时候观察内存空间可以方便整个工程执行情况,让你了若指掌,而且也方便你解读一个陌生程序的功能(例如参考别人的例程,网上的例程之类的),总之个人觉着这个部分用处很大,有心人可以在此处做很大**。

使用特权

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

还有其他方面的,,后续再继续介绍的。。

使用特权

评论回复
6
chuntian2016| | 2017-3-18 12:28 | 只看该作者
这个map文件是要掌握的,,跟内存的分配相关系的

使用特权

评论回复
7
zhangbo1985| | 2017-3-18 13:04 | 只看该作者
ENTRY LIST,开发工程内所有函数的入口地址,,和一部分的很重要的

使用特权

评论回复
8
tongbu2015| | 2017-3-18 16:29 | 只看该作者
所有涉及到的函数的入口地址的很清晰。。

使用特权

评论回复
9
baimiaocun2015| | 2017-3-18 17:05 | 只看该作者
这个,map文件的可以结合MCU开发导出来的dump文件的进行程序的bug的快速定位的

使用特权

评论回复
10
baimiaocun2015| | 2017-3-18 17:06 | 只看该作者
就是用于解析dump文件的,,然后很直观的可以可看到程序异常到哪一个地方了

使用特权

评论回复
11
angerbird| | 2017-3-19 21:37 | 只看该作者
关于这个map文件的我也有研究的,,不过的确不是很好理解的。

使用特权

评论回复
12
comeon201208| | 2017-3-19 22:20 | 只看该作者
这个介绍非常好的,,必须给点个赞

使用特权

评论回复
13
comeon201208| | 2017-3-19 22:20 | 只看该作者
关于MCU的内存分配这一块的向来就是个难题的。

使用特权

评论回复
14
firstblood| | 2017-3-19 22:43 | 只看该作者
vibra2016 发表于 2017-3-15 22:17
下边做分别介绍的:
(1)PLACEMENT SUMMARY,该部分主要显示目标代码在芯片内部的存储器映射地址,可能会 ...

ENTRY LIST涉及到的内容是最重要的一部分的

使用特权

评论回复
15
vivilzb1985| | 2017-3-26 16:20 | 只看该作者
这个是一个非常好的方法介绍的

使用特权

评论回复
16
shenmu2012| | 2017-3-26 18:10 | 只看该作者
关于这个.map的文件的重要性的我也就不多说了

使用特权

评论回复
17
shenmu2012| | 2017-3-26 18:11 | 只看该作者
楼主在这里分享的解析查看这个map文件的方式的非常值得赞赏。

使用特权

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

本版积分规则

23

主题

1373

帖子

2

粉丝