其实是在做程序升级的时候出现的报错情况。 进行的操作是:新建了两个工程即bootloader,用户APP程序,分别通过JTAG烧入flashA,FLASH B扇区后,
bootloader程序烧写如flashA扇区时可以正常运行,APP程序烧写如FLashB扇区时出现了如图所示的报错。
已经在CCS的debug上进行了flash空间的分配。
请问TI工程师及各位高手:能否通过JTAG先后向DSPF28335的芯片的不同扇区下载两个工程?
我知道问题可能出现在cmd文件上,但是不知道问题在哪里?附上两个工程的cmd文件。
//BOOTLOADER 的CMD文件 MEMORY { PAGE 0:/* Program Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ RAM_L2L3: origin = 0x00A000, length = 0x002000/* on-chip RAM */FLASHA: origin = 0x338000, length = 0x007F80/* on-chip FLASH */CSM_RSVD: origin = 0x33FF80, length = 0x000076/* Part of FLASHA. Program with all 0x0000 when CSM is in use. */BEGIN_FLASH : origin = 0x33FFF6, length = 0x000002/* Part of FLASHA. Used for "boot to Flash" bootloader mode. */CSM_PWL: origin = 0x33FFF8, length = 0x000008/* Part of FLASHA. CSM password locations in FLASHA */ RESET: origin = 0x3FFFC0, length = 0x000002/* 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 */ RAML6L7: origin = 0x00E000, length = 0x002000/* on-chip RAM block L4 */ PAGE 2 : RAMH0_L0L1L2L3: origin = 0x3F8000, length = 0x004000/* high 64k Lo_SARAM */ } /* Allocate sections to memory blocks.Note:codestart user defined section in DSP28_CodeStartBranch.asm used to redirect codeexecution when booting to flashramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS { Flash28_API: { -lFlash28335_API_V210.lib(.econst) -lFlash28335_API_V210.lib(.text) } LOAD = FLASHA, RUN = RAM_L2L3, LOAD_START(_Flash28_API_LoadStart), LOAD_END(_Flash28_API_LoadEnd), RUN_START(_Flash28_API_RunStart), PAGE = 0/* Allocate program areas: */ .cinit: > FLASHA,PAGE = 0 .pinit: > FLASHA,PAGE = 0 .text: > FLASHA,PAGE = 0 codestart: > BEGIN_FLASH,PAGE = 0 blockTransferbuffer1 : > RAM_L2L3, PAGE = 0 blockTransferbuffer2 : > RAML6L7, PAGE = 1 ramfuncs: LOAD = FLASHA, RUN = RAM_L2L3, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0csmpasswds: > CSM_PWLPAGE = 0csm_rsvd: > CSM_RSVDPAGE = 0/* Allocate uninitalized data sections: */.stack: >RAMM0PAGE = 1.ebss: > RAML6L7PAGE = 1/*.esysmem: > RAMM1PAGE = 1*//* Initalized sections go in Flash *//* For SDFlash to program these, they must be allocated to page 0 */.econst: > FLASHAPAGE = 0.switch: > FLASHAPAGE = 0/* Allocate IQ math areas: */IQmath: > FLASHAPAGE = 0/* Math Code *//* .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 } /* //=========================================================================== // End of file. //=========================================================================== */ //APP程序的cmd文件 MEMORY { PAGE 0:/* Program Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ ZONE0: origin = 0x004000, length = 0x001000/* XINTF zone 0 */ RAM_L0L1: origin = 0x008000, length = 0x002000/* on-chip RAM */ OTP: origin = 0x380400, length = 0x000400/* on-chip OTP */ZONE6: origin = 0x100000, length = 0x100000/* XINTF zone 6 */ZONE7A: origin = 0x200000, length = 0x00FC00/* XINTF zone 7 - program space */ FLASHH: origin = 0x300000, length = 0x008000/* on-chip FLASH */FLASHG: origin = 0x308000, length = 0x008000/* on-chip FLASH */FLASHF: origin = 0x310000, length = 0x008000/* on-chip FLASH */FLASHE: origin = 0x318000, length = 0x008000/* on-chip FLASH */FLASHD: origin = 0x320000, length = 0x008000/* on-chip FLASH */FLASHC: origin = 0x328000, length = 0x008000/* on-chip FLASH */FLASHB : origin = 0x330000, length = 0x007F80 /* on-chip FLASH */CSM_RSVD: origin = 0x337F80, length = 0x000076/* Part of FLASHA. Program with all 0x0000 when CSM is in use.BEGIN_FLASH : origin = 0x337FF6, length = 0x000002/* Part of FLASHB. Used for "boot to Flash" bootloader mode. */CSM_PWL: origin = 0x337FF8, length = 0x000008/* Part of FLASHA. CSM password locations in FLASHA */ADC_CAL: origin = 0x380080, length = 0x000009/* Part of TI OTP */IQTABLES: origin = 0x3FE000, length = 0x000b50/* IQ Math Tables in Boot ROM */IQTABLES2: origin = 0x3FEB50, length = 0x00008c/* IQ Math Tables in Boot ROM */FPUTABLES: origin = 0x3FEBDC, length = 0x0006A0/* FPU Tables in Boot ROM */ROM: origin = 0x3FF27C, length = 0x000D44/* 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*/ RAMM1: origin = 0x000480, length = 0x000380/* on-chip RAM block M1 */ RAML4L5: origin = 0x00C000, length = 0x002000/* on-chip RAM block L4 */ZONE7B: origin = 0x20FC00, length = 0x000400/* XINTF zone 7 - data space */ } /* Allocate sections to memory blocks.Note:codestart user defined section in DSP28_CodeStartBranch.asm used to redirect codeexecution when booting to flashramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS {/* Allocate program areas: */.cinit: > FLASHBPAGE = 0.pinit: > FLASHB,PAGE = 0.text: > FLASHBPAGE = 0codestart: > BEGIN_FLASHPAGE = 0ramfuncs: LOAD = FLASHB,RUN = RAM_L0L1,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0csmpasswds: > CSM_PWLPAGE = 0csm_rsvd: > CSM_RSVDPAGE = 0/* Allocate uninitalized data sections: */.stack: > RAMM1PAGE = 1.ebss: > RAML4L5PAGE = 1.esysmem: > RAMM1PAGE = 1/* Initalized sections go in Flash *//* For SDFlash to program these, they must be allocated to page 0 */.econst: > FLASHBPAGE = 0.switch: > FLASHBPAGE = 0/* Allocate IQ math areas: */IQmath: > FLASHCPAGE = 0/* Math Code */IQmathTables: > IQTABLES, PAGE = 0, TYPE = NOLOAD/* Uncomment the section below if calling the IQNexp() or IQexp()functions from the IQMath.lib library in order to utilize therelevant IQ Math table in Boot ROM (This saves space and Boot ROMis 1 wait-state). If this section is not uncommented, IQmathTables2will be loaded into other memory (SARAM, Flash, etc.) and will takeup space, but 0 wait-state is possible.*//*IQmathTables2: > IQTABLES2, PAGE = 0, TYPE = NOLOAD{IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)}*/FPUmathTables: > FPUTABLES, PAGE = 0, TYPE = NOLOAD/* Allocate 0x400 of XINTF Zone 7 to storing data */ZONE7DATA: > ZONE7B,PAGE = 1/*.reset: > RESET,PAGE = 0, TYPE = DSECT*/vectors: > VECTORSPAGE = 0, TYPE = DSECT/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */.adc_cal: load = ADC_CAL,PAGE = 0, TYPE = NOLOAD } /* //=========================================================================== // End of file. //=========================================================================== */