pango 发表于 2014-12-31 16:35:35

TMS320F2802芯片的memory.map与cmd文件配置问题?

本帖最后由 pango 于 2014-12-31 16:35 编辑

全新的TMS320F2802芯片,程序仿真时出现这个问题:






我在网上查找是说CMD问题,请高手解决一下。

这个是芯片的memory.map



/*
// TI File $Revision: /main/2 $
// Checkin $Date: August 2, 2006   16:56:57 $
//###########################################################################
//
// FILE:      F2802.cmd
//
// TITLE:      Linker Command File For F2802 Device
//
//###########################################################################
// $TI Release: DSP280x Header Files V1.60 $
// $Release Date: December 3, 2007 $
//###########################################################################
*/

/* ======================================================
// For Code Composer Studio V2.2 and later
// ---------------------------------------
// In addition to this memory linker command file,
// add the header linker command file directly to the project.
// The header linker command file is required to link the
// peripheral structures to the proper locations within
// the memory map.
//
// The header linker files are found in <base>\DSP280x_Headers\cmd
//   
// For BIOS applications add:      DSP280x_Headers_BIOS.cmd
// For nonBIOS applications add:   DSP280x_Headers_nonBIOS.cmd   
========================================================= */

/* ======================================================
// For Code Composer Studio prior to V2.2
// --------------------------------------
// 1) Use one of the following -l statements to include the
// header linker command file in the project. The header linker
// file is required to link the peripheral structures to the proper
// locations within the memory map                                    */

/* Uncomment this line to include file only for non-BIOS applications */
/* -l DSP280x_Headers_nonBIOS.cmd */

/* Uncomment this line to include file only for BIOS applications */
/* -l DSP280x_Headers_BIOS.cmd */

/* 2) In your project add the path to <base>\DSP280x_headers\cmd to the
   library search path under project->build options, linker tab,
   library search path (-i).
/*========================================================= */

/* Define the memory block start/length for the F2806
   PAGE 0 will be used to organize program sections
   PAGE 1 will be used to organize data sections

   Notes:
         Memory blocks on F2802 are uniform (ie same
         physical memory) in both PAGE 0 and PAGE 1.
         That is the same memory region should not be
         defined for both PAGE 0 and PAGE 1.
         Doing so will result in corruption of program
         and/or data.
         
         L0 memory block is mirrored - that is
         it can be accessed in high memory or low memory.
         For simplicity only one instance is used in this
         linker file.

         Flash sectors can be combined if required.
*/

MEMORY
{
PAGE 0:    /* Program Memory */
         /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

   RAML0       : origin = 0x3F8000, length = 0x001000   /* on-chip RAM block L0 */
   OTP         : origin = 0x3D7800, length = 0x000400   /* on-chip OTP */
   FLASHD      : origin = 0x3F0000, length = 0x001000   /* on-chip FLASH */
   FLASHC      : origin = 0x3F1000, length = 0x004000   /* on-chip FLASH */
   FLASHA      : origin = 0x3F6000, length = 0x001F80   /* on-chip FLASH */
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076   /* Part of FLASHA.Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x3F7FF6, length = 0x000002   /* Part of FLASHA.Used for "boot to Flash" bootloader mode. */
   CSM_PWL   : origin = 0x3F7FF8, length = 0x000008   /* Part of FLASHA.CSM password locations in FLASHA */
   
   ROM         : origin = 0x3FF000, length = 0x000FC0   /* Boot ROM */
   RESET       : origin = 0x3FFFC0, length = 0x000002   /* part of boot ROM*/
   VECTORS   : origin = 0x3FFFC2, length = 0x00003E   /* part of boot ROM*/

PAGE 1 :   /* Data Memory */
         /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
         /* Registers remain on PAGE1                                                */

   RAMM0       : origin = 0x000000, length = 0x000400   /* on-chip RAM block M0 */
   BOOT_RSVD   : origin = 0x000400, length = 0x000080   /* Part of M1, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000480, length = 0x000380   /* on-chip RAM block M1 */
   FLASHB      : origin = 0x3F5000, length = 0x001000   /* on-chip FLASH */
}

/* Allocate sections to memory blocks.
   Note:
         codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                   execution when booting to flash
         ramfuncsuser defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

   /* Allocate program areas: */
   .cinit            : > FLASHA      PAGE = 0
   .pinit            : > FLASHA,   PAGE = 0
   .text               : > FLASHC      PAGE = 0
   codestart         : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHD,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

   csmpasswds          : > CSM_PWL   PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0
   
   /* Allocate uninitalized data sections: */
   .stack            : > RAMM0       PAGE = 1
   .ebss               : > RAML0       PAGE = 0
   .esysmem            : > RAMM1       PAGE = 1

   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASHA      PAGE = 0
   .switch             : > FLASHA      PAGE = 0      

   /* Allocate IQ math areas: */
   IQmath            : > FLASHC      PAGE = 0                  /* Math Code */
   IQmathTables      : > ROM         PAGE = 0, TYPE = NOLOAD   /* Math Tables In ROM */

   /* .reset is a standard section used by the compiler.It contains the */
   /* the address of the start of _c_int00 for C Code.   /*
   /* When using the boot ROM this section and the CPU vector */
   /* table is not needed.Thus the default type is set here to*/
   /* DSECT*/
   .reset            : > RESET,      PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS   PAGE = 0, TYPE = DSECT

}

/*

sunrosewang 发表于 2014-12-31 16:40:34

是不是FLASHA 太小了,你把FLASHA,B,C,D合在一起用试试

Ticl4 发表于 2014-12-31 16:44:34

cmd文件,你用的官方默认的吗?
我C2000芯片一直没问题啊,除了由于某几个RAM段划分不足,出现过编译问题,修改下CMD配置就解决了
PS:我一直是硬件仿真的,你软件仿真?

pango 发表于 2014-12-31 17:18:25

新手啊,请教      Ticl4    CMD怎么配置,具体的那一块?

steaven2000 发表于 2014-12-31 17:38:51

还是先搞清楚cmd文件中那些项的意义吧。
另外,楼主你看F280x的数据手册了吗?Page 31,图3-5以及表3-1列出了Flash的配置的,你可以对比cmd文件看看就知道大概如何配置了。

pango 发表于 2014-12-31 17:46:31

ok,steaven2000,我先研究研究基础,呵呵{:smile:}

zhailine 发表于 2015-1-4 02:03:00

仿真时好像不能用flash。全用ram应该就可以仿真通过了 将.pinit cinit txt 等都 映射到raml0
页: [1]
查看完整版本: TMS320F2802芯片的memory.map与cmd文件配置问题?