This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/LAUNCHXL-F28379D: Unable to load program to flash

Part Number: LAUNCHXL-F28379D
Other Parts Discussed in Thread: CONTROLSUITE, SFRA

Tool/software: Code Composer Studio

Hi,

I'm working with a project based on the Dual Motor Control Using FCL example project in Controlsuite. All development this far has been made in the CCS debug mode with a RAM configuration. Now I would like to test it in stand alone mode meaning that load the program into Flash and run it in RAM. Thus I could boot in in standalone mode without the debugger. I don't want to execute any code from Flash.

Steps I have done:

1. Switch to flash mode: Build Configurations > Set Active > choose F2837x_Flash

2. Use the default linker cmd file that is given in the project files:


MEMORY
{
PAGE 0 : /* Program Memory */
/* Memory (RAM/FLASH) blocks can be moved to PAGE1 for data allocation */
/* BEGIN is used for the "boot to Flash" bootloader mode */

BEGIN : origin = 0x080000, length = 0x000002
RAMM0 : origin = 0x000122, length = 0x0002DE
RAMD0 : origin = 0x00B000, length = 0x000800
RAMLS0 : origin = 0x008000, length = 0x000800
RAMLS1 : origin = 0x008800, length = 0x000800
RAMLS2 : origin = 0x009000, length = 0x000800
/* RAMLS3 : origin = 0x009800, length = 0x000800
RAMLS4 : origin = 0x00A000, length = 0x000800
*/
RAMLS3_4 : origin = 0x009800, length = 0x001000
RESET : origin = 0x3FFFC0, length = 0x000002

/* Flash sectors */
FLASHA : origin = 0x080002, length = 0x001FFE /* on-chip Flash */
FLASHB : origin = 0x082000, length = 0x002000 /* on-chip Flash */
FLASHC : origin = 0x084000, length = 0x002000 /* on-chip Flash */
FLASHD : origin = 0x086000, length = 0x002000 /* on-chip Flash */
FLASHE : origin = 0x088000, length = 0x008000 /* on-chip Flash */
FLASHF : origin = 0x090000, length = 0x008000 /* on-chip Flash */
FLASHG : origin = 0x098000, length = 0x008000 /* on-chip Flash */
FLASHH : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */
FLASHI : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */
FLASHJ : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */
FLASHK : origin = 0x0B8000, length = 0x002000 /* on-chip Flash */
FLASHL : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
FLASHM : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
FLASHN : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */

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

BOOT_RSVD : origin = 0x000002, length = 0x000120 /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAMD1 : origin = 0x00B800, length = 0x000800

RAMLS5 : origin = 0x00A800, length = 0x000800

RAMGS0 : origin = 0x00C000, length = 0x001000
RAMGS1 : origin = 0x00D000, length = 0x001000
RAMGS2 : origin = 0x00E000, length = 0x001000
RAMGS3 : origin = 0x00F000, length = 0x001000
RAMGS4 : origin = 0x010000, length = 0x001000
RAMGS5 : origin = 0x011000, length = 0x001000
RAMGS6 : origin = 0x012000, length = 0x001000
RAMGS7 : origin = 0x013000, length = 0x001000
RAMGS8 : origin = 0x014000, length = 0x001000
RAMGS9 : origin = 0x015000, length = 0x001000
RAMGS10 : origin = 0x016000, length = 0x001000
RAMGS11 : origin = 0x017000, length = 0x001000

}


SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHB PAGE = 0, ALIGN(4)
.pinit : > FLASHB, PAGE = 0, ALIGN(4)
.text : >> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0, ALIGN(4)
codestart : > BEGIN PAGE = 0, ALIGN(4)
#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
.TI.ramfunc : {} LOAD = FLASHD,
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3_4, /* | RAMLS4, */
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#else
ramfuncs : LOAD = FLASHD,
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3_4,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#endif

#endif

/* Allocate uninitalized data sections: */
.stack : > RAMM1 PAGE = 1
.ebss : >> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1
.esysmem : > RAMLS5 PAGE = 1

/* Initalized sections go in Flash */
.econst : >> FLASHF | FLASHG | FLASHH PAGE = 0, ALIGN(4)
.switch : > FLASHB PAGE = 0, ALIGN(4)

.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */

ramgs0 : > RAMGS0, PAGE = 1
ramgs1 : > RAMGS1, PAGE = 1

/* The following section definitions are for SDFM examples */
Filter1_RegsFile : > RAMGS1, PAGE = 1, fill=0x1111
Filter2_RegsFile : > RAMGS2, PAGE = 1, fill=0x2222
Filter3_RegsFile : > RAMGS3, PAGE = 1, fill=0x3333
Filter4_RegsFile : > RAMGS4, PAGE = 1, fill=0x4444
Difference_RegsFile : >RAMGS5, PAGE = 1, fill=0x3333

// DCL lib
dclfuncs : >> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0, ALIGN(4)

/* SFRA test */
SFRA_F_Data : > RAMGS11, PAGE = 1

}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

3. Build it succesfully.

4. Try to load it unsuccessfully and get the following error:

C28xx_CPU1: File Loader: Verification failed: Values at address 0x86000@Program do not match Please verify target memory and memory map.
C28xx_CPU1: GEL: File: C:\ti\controlSUITE\libs\app_libs\motor_control\libs\FCL_SFRA\v01_00_00_00\Examples\git_repo\FCL_28379D\F2837x_FLASH\FCL_379XL_git.out: a data verification error occurred, file load failed.

Any advise on how to solve this? I tried also other linker cmd files for F28379D that I found from Controlsuite but I get the same error. I'm using CCS8.

  • Hi,

    1) When you look at the address 0x86000 in Debugger's memory window, what do you see? Is the data all 0x0000?

    2) Did you program any DCSM settings? If yes, can you check the values that you programmed for the password locations?

    Also, Please check for updates in CCS and install any updates available for below packages:

    (i) TI C2000 Device support package

    (ii) CCS Flash Content (sometimes this package is named as “Debug Server Flash”)

    (iii) Debug Server

    Thanks and regards,
    Vamsi

  • Thanks for the quick reply.

    1) Was not able to access the debugger since it didn't load the program.

    2) Didn't touch the DCSM settings.

    3) Updating the C2000 support package helped. No error anymore and standalone boot works. Thanks!

  • Hi,

    Glad that it helped.

    I would like to suggest updating TI Emulators package as well - Update to Version 8.1.0.00012 or higher.  This emulator update is needed to fix a bug regarding Multi-core emulation.  If you already updated it, please ignore.  Just wanted to save another debug round for you in case you are using a buggy version.

    Thanks and regards,

    Vamsi