搜索
bottom↓
回复: 49

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

  [复制链接]

出0入0汤圆

发表于 2014-9-3 13:28:27 | 显示全部楼层 |阅读模式
    又是一年五四青年节,也不知道自己还会像现在意气风发多少个青年节,也不清楚自己对技术的执着还会一如既往的坚持多久,总之既然现在依旧坚定不移的“前进”着(前段日子看到奥巴马的竞争口号就是“前进”,说不定跟俺一个境界来,哈哈),未来不可预知,但可规划和争取,把握好现在,莫要虚度光阴,我们年轻并不代表我们有浪费时间的理由~比较推崇特权的那句话,“技术源于积累,成功源于执着”,大家共勉之~
    哈哈,感慨发完了,该回归正事了... ...不知道别的地儿方怎么样,总之济南今天天气是格外的好,绿树成荫,草长莺飞的,不写点东西都觉着不舒坦了,我要是文人墨客的话估计早就开始吟诗作对了,不过既然俺是工科技术男,还是写篇技术博客来的实际吧,嘿嘿~
    好了,不天气预报了,呵呵,来说说正题吧。本篇算是自己的一篇经验总结吧,这里给大家分享一下,同时也让自己养成文档总结的好习惯。为了具体化问题,我这里还是以IAR开发Kinetis为例深入介绍一下。其实map文件(内存映射文件)可能初手开发的时候甚少有去关注它的,甚至好些都不知道它是干嘛的,呵呵,只有一些有经验的老手或者搞移植搞深入研究的才会去查看它,初手往往上来就是在线调试、查看内存(这个都很少用)、看寄存器、断点(这个用的也少)等等,但是等你了解了map文件,再去完成上述调试的时候会让你事半功倍,且有一种运筹帷幄的感觉都不夸张。哈哈,说的这么多,还是上图介绍吧(俺还是喜欢图文并茂的感觉,话说乔布斯以前在每次开苹果新品展示会的时候,你看见的绝对大多数是图片形式的演讲稿,因为乔大爷深谙这个道理,估计这也是为什么iOS,Mac OS都是UI强大的原因吧):
    首先当然要生成map文件了,注意IAR的默认设置是不生成map文件的,我们需要手动设置一下,如下图,然后点击准备就绪之后编译即可在PROJDIR\FLASH_256KB_PFLASH\List文件夹下找到:
    生成之后,我们在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的可以从这里查到)。

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


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


(3)这是map文件末尾部分,最后给出了整个工程文件占用的资源情况,即芯片内部Flash和RAM的使用情况,便于你对工程开发规模上的掌握,最后给出工程编译链接输出信息。




阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-9-3 13:38:49 | 显示全部楼层
辛苦了楼主      谢谢楼主

出0入0汤圆

发表于 2014-9-3 13:40:27 | 显示全部楼层
这功能强大,多谢分享

出0入0汤圆

发表于 2014-9-3 13:43:12 | 显示全部楼层
这个很实用,感谢露珠的分享。

出0入0汤圆

发表于 2014-9-3 13:45:10 | 显示全部楼层
实用资料,学习了。

出100入101汤圆

发表于 2014-9-3 13:47:33 | 显示全部楼层
map文件,顾名思义!

出0入0汤圆

发表于 2014-9-3 13:56:21 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2014-9-3 14:12:34 | 显示全部楼层
很好的经验分享,凡事深入后都会有很多的收获!

出0入0汤圆

发表于 2014-9-3 14:15:13 | 显示全部楼层
楼主辛苦

出0入0汤圆

发表于 2014-9-3 14:55:47 | 显示全部楼层
很实用,LZ辛苦了

出0入0汤圆

发表于 2014-9-3 15:02:30 | 显示全部楼层
友情帮顶,自己飞币!

出0入0汤圆

发表于 2014-9-3 15:09:02 | 显示全部楼层
jicheng写的哈。。。很好。

出0入0汤圆

发表于 2014-9-3 15:11:08 | 显示全部楼层
楼主辛苦,很实用

出0入0汤圆

发表于 2014-9-3 15:45:56 | 显示全部楼层
楼主写的不错!

出0入0汤圆

 楼主| 发表于 2014-9-3 15:47:53 | 显示全部楼层
qdyuyan 发表于 2014-9-3 15:45
楼主写的不错!

很大两个字 【转帖】
这个不是我写的

出0入0汤圆

发表于 2014-9-3 18:23:53 | 显示全部楼层
看楼主要入手终极大奖的节奏,论坛都是你的身影。mark

出0入0汤圆

 楼主| 发表于 2014-9-3 18:26:46 | 显示全部楼层
mypear 发表于 2014-9-3 18:23
看楼主要入手终极大奖的节奏,论坛都是你的身影。mark

冲向二等奖 mini无爱

出0入0汤圆

发表于 2014-9-3 18:27:19 | 显示全部楼层
挺实用的资料

出0入0汤圆

 楼主| 发表于 2014-9-3 18:40:52 | 显示全部楼层

多谢支持啊,我也是浏览了一下,看着可以就转过来了
要用到的时候再来翻

出0入0汤圆

发表于 2014-9-3 18:49:50 | 显示全部楼层
楼主你今天到底发了多少贴啊。。。不过都还是很有用的啊

出0入0汤圆

 楼主| 发表于 2014-9-3 18:50:38 | 显示全部楼层
yzb1019 发表于 2014-9-3 18:49
楼主你今天到底发了多少贴啊。。。不过都还是很有用的啊

不记得了,看着还可以就转过来了

出0入0汤圆

发表于 2014-9-3 18:52:24 | 显示全部楼层
cn_x 发表于 2014-9-3 18:50
不记得了,看着还可以就转过来了

开发板已经距离你越来越近了

出0入0汤圆

 楼主| 发表于 2014-9-3 19:02:16 | 显示全部楼层
yzb1019 发表于 2014-9-3 18:52
开发板已经距离你越来越近了

纠结也离我越来越近了
先到12000吧
继续找资料

出0入0汤圆

发表于 2014-9-3 19:03:06 | 显示全部楼层
cn_x 发表于 2014-9-3 19:02
纠结也离我越来越近了
先到12000吧
继续找资料

你这意思是,其实你不是太想要开发板啊

出0入0汤圆

 楼主| 发表于 2014-9-3 19:05:11 | 显示全部楼层
yzb1019 发表于 2014-9-3 19:03
你这意思是,其实你不是太想要开发板啊

我想要第二代芯片的板子
那个塔式开发板是第一代的K60
如果level 5是第二代的话 我会考虑是不是换两块

出0入0汤圆

发表于 2014-9-3 19:06:34 | 显示全部楼层
cn_x 发表于 2014-9-3 19:05
我想要第二代芯片的板子
那个塔式开发板是第一代的K60
如果level 5是第二代的话 我会考虑是不是换两块 ...

就只不知道6000的奖品到底是什么

出0入0汤圆

 楼主| 发表于 2014-9-3 19:08:50 | 显示全部楼层
yzb1019 发表于 2014-9-3 19:06
就只不知道6000的奖品到底是什么

是啊
我做工业设备的
不在乎在MCU上多花点钱
第二代应该会修正第一代的一些问题
而且像内部基准和SDK库第二代都已经有了,第一代没有这些,麻烦的

出0入0汤圆

发表于 2014-9-3 21:25:28 | 显示全部楼层
谢谢楼主分享,一般自己也会看map文件,当然仅限看看单个文件占用ram、rom的多少,然后去查找有没有优化的余地

出0入0汤圆

发表于 2014-9-3 21:52:18 | 显示全部楼层
顶一个                    

出0入0汤圆

发表于 2014-9-3 21:57:08 | 显示全部楼层
慢慢学习

出0入0汤圆

发表于 2014-9-26 14:14:48 | 显示全部楼层
辛苦了,收藏备用!

出10入95汤圆

发表于 2014-9-27 08:15:28 | 显示全部楼层
多谢分享!

出0入0汤圆

发表于 2014-9-28 14:40:51 | 显示全部楼层
每次都精品。慢慢学习。

出0入0汤圆

发表于 2014-9-28 16:07:53 | 显示全部楼层
很有用的东西,前一段时间正是看着内存映射弄懂了stm32的启动流程,原来感觉像天书一样的内容现在越来越觉得有趣了

出0入0汤圆

发表于 2014-12-4 11:38:07 | 显示全部楼层
还是处于看着像天书一样的阶段

出0入0汤圆

发表于 2014-12-4 12:32:23 | 显示全部楼层
顶               

出0入0汤圆

发表于 2014-12-4 23:57:14 | 显示全部楼层
最近意识到mao很重要。不了解这个的话,也是对自己写出来多大的代码不了解 。

出0入0汤圆

发表于 2014-12-5 08:10:21 | 显示全部楼层
学习,谢谢!

出0入0汤圆

发表于 2014-12-5 08:20:21 | 显示全部楼层
IAR和KEIL生成的map文件格式是不是一样的?

出0入4汤圆

发表于 2014-12-5 08:27:34 来自手机 | 显示全部楼层
程序莫名的死机时候这个文件很有用

出0入0汤圆

发表于 2014-12-5 09:00:15 | 显示全部楼层
精华帖要仔细看看, map  keil里面也有的,

bbs,数据段,代码段,堆栈  分布~

出0入0汤圆

发表于 2014-12-5 10:20:09 | 显示全部楼层

我的和LZ的不一样。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-12-5 12:14:33 | 显示全部楼层
yzb1019 发表于 2014-9-3 19:06
就只不知道6000的奖品到底是什么

。。。。“塔式开发板换两套”, 土豪交个朋友吧!

出0入4汤圆

发表于 2014-12-5 19:10:27 | 显示全部楼层
看过点keil的map文件,也了解下这个。

出0入0汤圆

发表于 2014-12-5 19:28:02 | 显示全部楼层
搞这么深入确实不容易

出0入0汤圆

发表于 2015-3-27 22:40:31 | 显示全部楼层
map文件 好好学习下

出0入0汤圆

发表于 2015-3-27 23:21:23 | 显示全部楼层
这个是好东西

出0入0汤圆

发表于 2015-4-1 11:15:24 | 显示全部楼层
好东西,顶一个

出0入0汤圆

发表于 2015-4-1 22:54:23 | 显示全部楼层
学习了果然是高手

出0入0汤圆

发表于 2015-4-2 12:51:45 | 显示全部楼层
呵呵,谢谢楼主加了“转帖”俩字~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 17:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表