历史上的今天
返回首页

历史上的今天

今天是:2025年08月16日(星期六)

正在发生

2021年08月16日 | 飞思卡尔S12(X)系列单片机之map文件详解

2021-08-16 来源:eefocus

本文介绍的map文件内容解析适用于Freescale S12(X)系列MCU(CodeWarrior 5.9.0) 的CodeWarrior 应用工程编译结果的map文件,结合的具体例子是基于S12XS256的工程编译链接的MAP文件。


map文件是嵌入式MCU应用工程编译链接结果的内存映射结果文件,其中输出了工程编译器、链接器配置信息、用户代码和数据编译结果,函数调用关系,存储器资源分配和使用结果统计等非常详尽的信息,可以说是对编译结果所做分门别类的最详细描述。(上面这段是百度里面搜的)。


详细介绍如下:

TARGET SECTION(编译目标属性设置)


列举工程所使用的处理器类型(processor):Freescale HC12


内存模型:SMALL/BANKED/LARGE


输出文件格式:ELF/DWARF 2.0


链接器版本信息:SmartLinker V-5.0.52 Build 15249


Tips:内存模型(memory model)的差别如下:


SMALL:小内存,适合于Flash小于64KB的MCU part,其使用局部地址访问,编译的代码运行效率最高;


BANKED:分页内存,适用于大于64KB的MCU part,使用分页访问的机制访问存储器,编译的代码中函数调用和数据访问使用16位地址(页内访问)和24位宽度的逻辑地址(跨页访问,使用关键词__far 修饰),实现相同功能的C代码,编译结果较SMALL要大;


LARGE:大内存,适用于S12XE系列的Flash较大的MCU part,但因为其编译结果中函数调用和数据访问默认使用24位的逻辑地址(无需关键词__far修饰),所以其编译结果较大,运行速度也是最慢的。


−FILE SECTION(工程文件列表)


列出所有工程链接使用的.c和.s文件,包括标准库文件编译之后的.o目标文件;


−STARTUP SECTION(启动结构体信息)


启动结构体,用于startup过程完成对RAM的初始化;


−SECTION-ALLOCATION SECTION(区分配)


系统默认段和用户自定义段分配和存储器分区映射统计结果,详细列出了每个段的段名(Section Name),所占的存储器大小(Size),属性(Type, R--只读,R/W--可读可写),在存储器中存储起始(From)和结束地址(To)和分区(Segment);


从.stack段的分配信息,我们可以获得正常stack的地址空间,以此在调试时可以通过查看SP寄存器判断是否堆栈溢出或越界


在SECTION-ALLOCATION SECTION的最后是所有段所占RAM和Flash大小的统计结果:其中READ_ONLY(R) 为Flash的大小,而 READ_WRITE(R/W)为RAM大小:

如果用户为了实现自定义RAM初始化,在工程的prm链接文件中,将某段RAM定义为NO_INIT属性(不计入.bss段和.common段,在工程的启动结构体_startupData中也不包含该段的信息,startup过程中不会自动对该属性存储器进行初始化),则计算占用RAM大小时还需要加上相应的大小;

−VECTOR-ALLOCATION SECTION(中断向量分配)


复位向量地址以及具体的ISR函数名以及ISR函数地址信息

−OBJECT-ALLOCATION SECTION(目标文件段分配)


详细列举工程中每一个.s和.c文件编译后的.o目标文件里的函数(PROCEDURES)和变量(VARIABLES)的大小(hSize/dSize)和调用次数(Ref)以及所在段(Section)。

−MODULE STATISTIC(目标文件编译结果统计)


详细列出了工程中每一个被选择编译的.s和.c文件编译后的.o目标文件名字(Name),所占RAM(数据Data)和Flash(代码Code和常数Const)的大小。

−SECTION USE IN OBJECT-ALLOCATION SECTION(目标使用区列表)


详细列出每个段中的变量和函数名。

−OBJECT LIST SORTED BY ADDRESS(寄存器/全局变量/函数储存地址清单)


列举具体每一个寄存器、函数和全局变量的名字,存储地址(Addr),大小(hSize--十六进制大小/dSize--十进制大小,单位为字节),被调用次数(Ref),以及所在的段(Section);

−UNUSED-OBJECTS SECTION(未使用函数清单)


列出每一个目标函数中未使用的函数和全局变量;

−COPYDOWN SECTION(内存初始化copy down地址及大小)


       RAM初始化是全局变量有初始化值的拷贝信息;

−OBJECT-DEPENDENCIES SECTION (函数调用描述)


以文本方式描述的应用工程中函数间的相互调用层级和关系;

−DEPENDENCY TREE(函数调用和依赖关系树)


以树状图方式直观描述的应用工程中函数间的相互调用层级和关系;

−STATISTIC SECTION(统计段)


统计最后工程编译链接结果需要下载到Flash中的数据+代码大小和所占Flash扇区(sector)的数量(下载该结果需要擦除的Flash扇区数量)统计结果。该工程编译结果下载时总共需要擦除14个Flash扇区,下载37960字节。

推荐阅读

史海拾趣

CMD公司的发展小趣事

随着公司业务的不断拓展,CMD开始在全球范围内建立销售办事处。从最初的美国加利福尼亚州Irvine总部,逐渐扩展至加州、明尼苏达州、马萨诸塞州,甚至英国等地。这一布局不仅增强了公司的市场影响力,也为其提供了更多的商业合作机会。

Acopian Power Supplies公司的发展小趣事

随着公司业务的不断拓展,CMD开始在全球范围内建立销售办事处。从最初的美国加利福尼亚州Irvine总部,逐渐扩展至加州、明尼苏达州、马萨诸塞州,甚至英国等地。这一布局不仅增强了公司的市场影响力,也为其提供了更多的商业合作机会。

Comtronic Gmbh-Verbindungstechnik公司的发展小趣事

CMD技术公司成立于1986年,当时的市场正处于计算机技术的飞速发展时期。公司初期主要聚焦于为DEC计算机系统开发SCSI主机适配器,这一决策在当时看来是富有远见的。随着个人电脑的普及,CMD的产品迅速获得了市场的认可,为后续的发展奠定了坚实的基础。

Cedrat Technologies公司的发展小趣事

海洋勘探、水下通信和声学测量等领域对精准探测和数据采集有着极高的要求。Cedrat Technologies凭借其高性能压电陶瓷传感器技术,成功开发出用于声纳阵列系统的探测和成像设备。这些设备能够精确接收和分析水下环境中的声波,实现目标探测和数据采集。这一创新应用不仅拓展了电子行业的应用范围,也为海洋科学研究和工程实践提供了有力的技术支持。

Analog Microwave Design公司的发展小趣事

随着通信技术的不断进步,对微波器件的性能要求也越来越高。Analog Microwave Design公司敏锐地捕捉到了这一市场变化,开始致力于研发更高性能的微波器件。经过多次试验和改进,公司成功开发出了一款具有低损耗、高稳定性的微波放大器,这一创新产品在市场上引起了热烈反响。公司凭借这一技术突破,迅速扩大了市场份额,并树立了行业内的技术领先地位。

Allianc公司的发展小趣事

在XXXX年,Allianc公司迎来了一次重大的技术突破。公司研发团队成功开发出了一款具有领先性能的新型电子产品,该产品不仅具有更高的性能和更低的能耗,还具备更好的用户体验。这一技术突破使得Allianc公司在市场上迅速脱颖而出,赢得了大量客户的青睐。随着产品销量的不断攀升,公司的知名度和影响力也逐渐扩大。

问答坊 | AI 解惑

吐血力作:TI系列硬件设计电路参考

我收藏的一些TI各个系列的电路,包括2000,5000,6000。不是很全,但对于一般的系统设计会够用的。 …

查看全部问答>

门禁基础资料

门禁系统根据和计算机通讯的方式分为 独立型门禁系统 和 联网型门禁系统。 独立型门禁系统 不能和计算机通讯,门禁权限的设置在本机的键盘或者母卡就行设置。也有一些独立门禁机是带液晶显示的辅助键盘等做卡片的授权。 独立型门禁系统的组成部 ...…

查看全部问答>

出租车计费器又闹内鬼了?

多地出租车计价器集体故障 日期成2012年 http://news.163.com/10/0102/02/5S07U1DH0001124J.html 核心提示:1月1日,沈阳、锦州数千辆出租车的计价器集体故障,屏幕出现“归零”问题,打印出来的发票日期大多为2012年1月1日,而且无论行驶多远价 ...…

查看全部问答>

bootloader是否需要传递启动参数

我自己谢了一个bootloader 已经拷贝NK至sdram 我想是否需要可以直接跳到sdram-NK的地址直接,启动还是需要....比如参数传递等等 thank u so much.…

查看全部问答>

改板后得优龙开发板跑wince得一些问题:再开一贴

运行优龙bootloader选择boot wince后bootloader加载wince结束后wince开始运行,但是到给flash挂载文件系统得时候就出错,直接崩溃了,原因是flash改成了1G的flash,BSP中flash驱动是支持1G得,挂载文件系统失败原因估计是参数配置出错(实在惭愧我 ...…

查看全部问答>

电源EMI滤波器

1 概述在电子设备供电电源上,存在有各种各样的外来干扰信号。很多电子设备本身,在完成其功能同时,也产生了形形色色的EMI信号,以及人为和大自然的EMI信号。这些EMI信号,通过传导和辐射的方式,影响着该环境里运行的电子设备。如图1.0是用示波器 ...…

查看全部问答>

研发人员的职业化与职业素养

2005年,在德国,我乘坐一辆德国司机开的大客车,车上装了GPS导航,有导航地图,也有一个领路人。在一段高速上,领路人说不对,不该在这个高速公路口出去,应该是下一个,司机坚持,固执的依靠导航仪,最后还是走错路了,原因是两个地方、同一个地 ...…

查看全部问答>

TI LM3S系列在TFT屏上显示波形或者柱状图的例程哪位大哥有?

求助:   TI LM3S系列在TFT屏上显示波形或者柱状图的例程哪位大哥有? 听说TI有的系列中有波形显示的程序,但我用的9B92中没有,哪位有这个例程的共享下,谢谢! 邮箱:zhangyao1213@126.com…

查看全部问答>

最小Linux系统制作例程

一,什么是BabyLinux   BabyLinux不是一个完整的发行版,他是利用原有的一套完整的linux系统的内核原代码和编译工具,利用busybox内建的强大功能,在一张软盘上做的一个很小的linux系统.他具备一个linux系统的基本特征,支持linux系统最常用的一百多 ...…

查看全部问答>