关于MAP文件的一点认识 - DSP数字信号处理

来自:http://www.360doc.com/content/09/0407/15/799_3050704.shtml

本文来自于HELLODSP交流网 作者:huttu
近来有很多朋友问及MAP文件,下面我就对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

猜你喜欢

转载自blog.csdn.net/u014183377/article/details/98353271