如果DSP带着仿真器运行是一切正常,而去掉仿真器后运行一段时间就开始不稳定了。
请问是那里出了错误。
估计和cmd文件有关,请看:
其中的 FlASH与CLA_C 已经预定义。
MEMORY
{
PAGE 0 : /* Program Memory */
/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
CLAPROGRAM : origin = 0x009000, length = 0x001000 /* on-chip RAM block L3 */
//RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
//RAML5 : origin = 0x00C000, length = 0x002000 /* on-chip RAM block L5 */
//RAML6 : origin = 0x00E000, length = 0x002000 /* on-chip RAM block L6 */
//RAML7 : origin = 0x010000, length = 0x002000 /* on-chip RAM block L7 */
//RAML8 : origin = 0x012000, length = 0x002000 /* on-chip RAM block L8 */
RAML5L8 : origin = 0x00C000, length = 0x008000
OTP : origin = 0x3D7800, length = 0x000400 /* on-chip OTP */
//FLASHH : origin = 0x3D8000, length = 0x004000 /* on-chip FLASH */
//FLASHG : origin = 0x3DC000, length = 0x004000 /* on-chip FLASH */
//FLASHF : origin = 0x3E0000, length = 0x004000 /* on-chip FLASH */
//FLASHE : origin = 0x3E4000, length = 0x004000 /* on-chip FLASH */
FLASHEH : origin = 0x3D8000, length = 0x010000 /* on-chip FLASH */
FLASHD : origin = 0x3E8000, length = 0x004000 /* on-chip FLASH */
FLASHC : origin = 0x3EC000, length = 0x004000 /* on-chip FLASH */
FLASHA : origin = 0x3F4000, length = 0x003F80 /* 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_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
FPUTABLES : origin = 0x3FD860, length = 0x0006A0 /* FPU Tables in Boot ROM */
IQTABLES : origin = 0x3FDF00, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEA50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEADC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
ROM : origin = 0x3FF3B0, length = 0x000C10 /* 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 */
BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */
//RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */
//RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAMM01 : origin = 0x000050, length = 0x0007B0
CLA1_MSGRAMLOW : origin = 0x001480, length = 0x000080
CLA1_MSGRAMHIGH : origin = 0x001500, length = 0x000080
CLARAM0 : origin = 0x008800, length = 0x000400 /* on-chip RAM block L1 */
CLARAM1 : origin = 0x008C00, length = 0x000400 /* on-chip RAM block L2 */
CLARAM2 : origin = 0x008000, length = 0x000800 /* on-chip RAM block L0 */
RAML4 : origin = 0x00A000, length = 0x002000 /* on-chip RAM block L4 */
USB_RAM : origin = 0x040000, length = 0x000800 /* USB RAM */
FLASHB : origin = 0x3F0000, length = 0x004000 /* 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
ramfuncs user defined section to store functions that will be copied from Flash into RAM
*/
SECTIONS
{
/* Allocate program areas: */
codestart : > BEGIN, PAGE = 0
#if defined(RAM)
.cinit : > RAMM0, PAGE = 0
.pinit : > RAMM0, PAGE = 0
.text : > RAML5L8, PAGE = 0
ramfuncs : > RAML5L8, PAGE = 0
.econst : > RAML5L8, PAGE = 0
.switch : > RAMM0, PAGE = 0
IQmath : > RAML5L8, PAGE = 0 /* Math Code */
Cla1Prog : {_Cla1ProgRunStart = .;} > CLAPROGRAM,
PAGE = 0
CLA1mathTables : > CLARAM1, PAGE = 1
#elif defined(FLASH)
.cinit : > FLASHEH, PAGE = 0
.pinit : > FLASHEH, PAGE = 0
.text : > FLASHEH, PAGE = 0
ramfuncs : LOAD = FLASHC,
RUN = RAML5L8,
LOAD_START(_RamfuncsLoadStart),
RUN_START(_RamfuncsRunStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0
/* Initalized sections to go in Flash */
/* For SDFlash to program these, they must be allocated to page 0 */
.econst : > FLASHEH, PAGE = 0
.switch : > FLASHEH, PAGE = 0
IQmath : > FLASHEH, PAGE = 0 /* Math Code */
Cla1Prog : LOAD = FLASHD,
RUN = CLAPROGRAM,
LOAD_START(_Cla1ProgLoadStart),
LOAD_SIZE(_Cla1ProgLoadSize),
RUN_START(_Cla1ProgRunStart),
PAGE = 0
CLA1mathTables : LOAD = FLASHB,
RUN = CLARAM0,
LOAD_START(_CLA1mathTablesLoadStart),
LOAD_SIZE(_CLA1mathTablesLoadSize),
RUN_START(_CLA1mathTablesRunStart),
PAGE = 1
#else
#error Add either "RAM" or "FLASH" to C2000 Linker -> Advanced Options -> Command File Preprocessing -> --define
#endif //RAM
csmpasswds : > CSM_PWL_P0, PAGE = 0
csm_rsvd : > CSM_RSVD, PAGE = 0
/* Allocate uninitalized data sections: */
.stack : > RAML4, PAGE = 1
.ebss : > RAML4, PAGE = 1
.esysmem : > RAML4, PAGE = 1
//OSStack : > RAML4, PAGE = 1
Comm_Section : > RAML4, PAGE = 1
Buff_Section : > RAMM01, PAGE = 1
/* Allocate IQ math areas: */
IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/* Allocate FPU math areas: */
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
Cla1ToCpuMsgRAM : > CLA1_MSGRAMLOW, PAGE = 1
CpuToCla1MsgRAM : > CLA1_MSGRAMHIGH, PAGE = 1
Cla1DataRam0 : > CLARAM0, PAGE = 1
Cla1DataRam1 : > CLARAM1, PAGE = 1
Cla1DataRam2 : > CLARAM2, PAGE = 1
Cla1DataRam : > CLARAM2, PAGE = 1
/* Allocate CLA 'C' Areas */
#ifdef CLA_C
/* CLA C compiler sections */
//
// Must be allocated to memory the CLA has write access to
//
// Local variables and compiler temps are expected to be placed into a scratchpad memory area "CLAScratch"
// and accessed directly using the symbols '__cla_scratchpad_start' and '__cla_scratchpad_end' (for CGT 6.2.x and older),
// while they are placed in ".scratchpad"
// for CGT 6.4.0 (and above) and the compiler access them relative to the local frame symbol
CLAscratch :
{ *.obj(CLAscratch)
. += CLA_SCRATCHPAD_SIZE;
*.obj(CLAscratch_end) } > CLARAM1,
PAGE = 1
.scratchpad : > CLARAM1, PAGE = 1
.bss_cla : > CLARAM0, PAGE = 1
.const_cla : > CLARAM0, PAGE = 1
#endif //CLA_C