Tool/software:
Hello,
I'm using TMS320VC5509A DSP processor for the application software. Currently we are using internal RAM to run the software but the application code size is large and cant fit it into the internal RAM. So decided to use the external SDRAM (EMIF 16 bit external SDRAM ) while trying to load the software getting the "Verification failed: Values at address 0x403746@PROGRAM do not match Please verify target memory and memory map. The application .out file a data verification error occurred, file load failed" error.
1. Linker command file:
CODE: origin : 0x400000 ( External CE1 Space) per https://www.ti.com/lit/ds/symlink/tms320vc5509a.pdf
2. CE0 is already configured for different purpose. So DSP connected to External SDRAM 4M x 16 (CE1), Full EMIF mode by setting ESBR ( 0x6C00 to 1) and configure EMIF as 16-bit asynchronous memory with max timings CE1_1 (0x806 to 0x1FFF) per (spru670a.pdf)
EBSR_REG = 0x0001;
EMIF_RST_REG = 0xFFFF;
EMIF_EGCR_REG = 0x0221;
EMIF_CE1_1_REG = 0x3FFF;
EMIF_CE1_2_REG = 0xFFFF;
EMIF_CE1_3_REG = 0x00FF;
EMIF_SDC1_REG = 0x2911;
EMIF_SDPER_REG = 0x0410;
EMIF_INIT_REG = 0x07FF;
3. BOOT mode set to (16bit Async memory (on CE1 space) or Execute from 16bit Async memory (on CE1 space) both didnt work.
4. Hardware side: DSP is connected to the External SDRAM
BE0
BE1
SDRAS
SDCAS
SDWE
SDA10
CLKMEM
Due to Verification failed: Values at address 0x403746@DATA do not match Please verify target memory and memory map issue, I tried simple code below write 0xABAB to 0x403746 but it fills the data into the entire memory.
volatile Uint32 *SdramBASEp;
Uint32 testData
EBSR_REG = 0x0001;
EMIF_RST_REG = 0xFFFF;
EMIF_EGCR_REG = 0x0221;
EMIF_CE1_1_REG = 0x3FFF;
EMIF_CE1_2_REG = 0xFFFF;
EMIF_CE1_3_REG = 0x00FF;
EMIF_SDC1_REG = 0x2911;
EMIF_SDPER_REG = 0x0410;
EMIF_INIT_REG = 0x07FF;
testData = 0xABAB;
SdramBASEp = (Uint32*)0x400000;
*(SdramBASEp) = (Uint32)testData;
Please advise me why Values at address 0x403746@DATA do not match Please verify target memory and memory map issue and why when I wrote value to 0x403746 it fills entire memory with the same value ( i.e. 0xABAB). Also define 0x400000 memory space as program memory instead of data memory?. The 5509A gel file configured as below:-
/* Program Space */
GEL_MapAdd(0x0000C0,0,0x00FF40,1,1); /* DARAM */
GEL_MapAdd(0x010000,0,0x030000,1,1); /* SARAM */
GEL_MapAdd(0x040000,0,0x3C0000,1,1); /* External CE0 */
GEL_MapAdd(0x400000,0,0x400000,1,1); /* External CE1 */
GEL_MapAdd(0x800000,0,0x400000,1,1); /* External CE2 */
/* For MP/MC=1 */
GEL_MapAdd(0xC00000,0,0x400000,1,1); /* External CE3 */
/* Data Space */
GEL_MapAdd(0x000000,1,0x000050,1,1); /* MMRs */
GEL_MapAdd(0x000060,1,0x007FA0,1,1); /* DARAM */
GEL_MapAdd(0x008000,1,0x018000,1,1); /* SARAM */
GEL_MapAdd(0x020000,1,0x1E0000,1,1); /* External CE0 */
GEL_MapAdd(0x200000,1,0x200000,1,1); /* External CE1 */
GEL_MapAdd(0x400000,1,0x200000,1,1); /* External CE2 */
/* For MP/MC=1 */
GEL_MapAdd(0x600000,1,0x200000,1,1); /* External CE3 */
.
Thank you,
Ramesh