飞思卡尔S12(X)系列单片机之map文件详解

本文介绍的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字节。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值