打印

关与MAP文件的一点认识

[复制链接]
371|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Clovee|  楼主 | 2017-8-14 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, TI, pi, DSP, IO
关与MAP文件的一点认识

MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。

一、生成方法
     MAP文件主要有两种生成方法,一种是由系统自动生成,默认文件名为所建立的项目名(如XXX为项目名)加上.map后缀xxx.map,另一种在CMD文件中指定生成MAP文件,操作方法为在MEMORY指令前面加上“-m abc.map”,文件名可以任意。

二、文件格式
     MAP文件大概分为文件头、内存配置、段映射、全局符号四部分。内存配置与CMD文件中的MEMORY指令关联,在CMD文件中定义的程序与数据区间定义,在该部分均可以找到对应,与CMD文件不同的时,在MAP文件中加入了一个实际使用的区间,即在程序中实际用到的空间长度。段映射部分与CMD文件中的SECTION指令关联,在该部分程序中所有的段实际映射的起始地址与实际长度均有详细说明。可以具体到程序中PROGMA指定的段和各个单独文件产生的OBJ文件。全局符号可以是程序使用的每一个函数、程序中定义的全局变量均可以在此找到对应的起始地址。MAP文件中采用两种方式列举,一种为按相应地址排列,另一种按全局符号字母排列。

三、存储地址
     MAP文件默认保存在所在项目下面,由CMD文件产生的MAP文件保存在该项目的DEBUG目录下面。

样例如下(详细见附件):
******************************************************************************
         TMS320C2000 COFF Linker PC v4.1.0                     
******************************************************************************
>> Linked Tue Apr 08 17:52:23 2008

OUTPUT FILE NAME:   <./Debug/F2812.out>
ENTRY POINT SYMBOL: "_c_int00"  address: 003f8362


MEMORY CONFIGURATION

                  name            origin    length      used    attr    fill
          ----------------------  --------  ---------  --------  ----  --------
PAGE  0: RAMM0                   00000000   00000400  00000000  RWIX
          BEGIN                   003f8000   00000002  00000000  RWIX
          PRAMH0                  003f8002   00000ffe  000004a1  RWIX
          RESET                   003fffc0   00000002  00000000  RWIX

PAGE  1: RAMM1                   00000400   00000400  00000400  RWIX
          DEV_EMU                 00000880   00000180  000000d2  RWIX
          FLASH_REGS              00000a80   00000060  00000008  RWIX
          CSM                     00000ae0   00000010  00000010  RWIX
          XINTF                   00000b20   00000020  00000020  RWIX
          CPU_TIMER0              00000c00   00000008  00000008  RWIX
          PIE_CTRL                00000ce0   00000020  0000001a  RWIX
          PIE_VECT                00000d00   00000100  00000100  RWIX
          ECANA                   00006000   00000040  00000034  RWIX
          ECANA_LAM               00006040   00000040  00000040  RWIX
          ECANA_MOTS              00006080   00000040  00000040  RWIX
          ECANA_MOTO              000060c0   00000040  00000040  RWIX
          ECANA_MBOX              00006100   00000100  00000100  RWIX
          SYSTEM                  00007010   00000020  00000020  RWIX
          SPIA                    00007040   00000010  00000010  RWIX
          SCIA                    00007050   00000010  00000010  RWIX
          XINTRUPT                00007070   00000010  00000010  RWIX
          GPIOMUX                 000070c0   00000020  00000020  RWIX
          GPIODAT                 000070e0   00000020  00000020  RWIX
          ADC                     00007100   00000020  0000001a  RWIX
          EVA                     00007400   00000040  00000032  RWIX
          EVB                     00007500   00000040  00000032  RWIX
          SCIB                    00007750   00000010  00000010  RWIX
          MCBSPA                  00007800   00000040  00000025  RWIX
          RAML0L                  00008000   00000800  00000084  RWIX
          RAML0H                  00008800   00000800  00000000  RWIX
          CSM_PWL                 003f7ff8   00000008  00000008  RWIX
          DRAMH0                  003f9000   00001000  00000112  RWIX


SECTION ALLOCATION MAP

output                                  attributes/
section   page    origin      length       input sections
--------  ----  ----------  ----------   ----------------
.switch    0    00000000    00000000     UNINITIALIZED

codestart
*          0    003f8000    00000000     UNINITIALIZED

.pinit     0    003f8002    00000000     UNINITIALIZED

.text      0    003f8002    00000472     
                   003f8002    00000012     DSP281x_Adc.obj (.text)
                   003f8014    0000004b     DSP281x_CpuTimers.obj (.text)
                   003f805f    0000014f     DSP281x_DefaultIsr.obj (.text)
                   003f81ae    000000b4     DSP281x_Ev.obj (.text)
                   003f8262    00000014     DSP281x_Gpio.obj (.text)
                   003f8276    00000015     DSP281x_MemCopy.obj (.text)
                   003f828b    00000028     DSP281x_PieCtrl.obj (.text)
                   003f82b3    00000020     DSP281x_PieVect.obj (.text)
                   003f82d3    00000051     DSP281x_SysCtrl.obj (.text)
                   003f8324    0000003e     Example_281xCpuTimer.obj (.text)
                   003f8362    00000044     rts2800.lib : boot.obj (.text)
                   003f83a6    0000003d                 : exit.obj (.text)
                   003f83e3    0000005a                 : fs_mpy.obj (.text)
                   003f843d    00000021                 : fs_toul.obj (.text)
                   003f845e    00000007                 : _lock.obj (.text)
                   003f8465    0000000f                 : args_main.obj (.text)
。。。

GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name

address    name
--------   ----
00008000   .bss
00000000   .data
003f8002   .text
003f83c5   C$$EXIT
003f83e3   FS$$MPY
003f843d   FS$$TOUL
003f80d2   _ADCINT_ISR
00007100   _AdcRegs
003f8118   _CAPINT1_ISR

。。。

GLOBAL SYMBOLS: SORTED BY Symbol Address

address    name
--------   ----
00000000   ___edata__
00000000   edata
00000000   ___data__
00000000   .data
00000400   __STACK_SIZE
00000880   _DevEmuRegs
00000a80   _FlashRegs
00000ae0   _CsmRegs

相关帖子

沙发
vivilzb1985| | 2017-8-15 22:33 | 只看该作者
MAP文件大概分为文件头、内存配置、段映射、全局符号四部分。内存配置与CMD文件中的MEMORY指令关联,在CMD文件中定义的程序与数据区间定义,在该部分均可以找到对应,与CMD文件不同的时,在MAP文件中加入了一个实际使用的区间,即在程序中实际用到的空间长度。

使用特权

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

本版积分规则

708

主题

1032

帖子

2

粉丝