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.

Compiler/TMS320F28235: FLASH API #10068-D

Part Number: TMS320F28235
Other Parts Discussed in Thread: C2000WARE

Tool/software: TI C/C++ Compiler

Hello:

I try to save data in 28235 flash memory. 

The linker make a warning #10068-D: no matching section at line : -l Flash28235_API_V210.lib(.econst)

Flash28_API:
   {
        -lFlash28235_API_V210.lib(.econst)
        -lFlash28235_API_V210.lib(.text)
   }

LOAD = FLASHA,
                       RUN = RAML_lib, 
                       LOAD_START(_Flash28_API_LoadStart),
                       LOAD_END(_Flash28_API_LoadEnd),
                       RUN_START(_Flash28_API_RunStart),
                       PAGE = 0

Someone could help me?

  • The diagnostic means this line ...

    user3815859 said:
            -lFlash28235_API_V210.lib(.econst)

    ... does not pick up any input sections.  That is probably because some earlier line like this ...

        .econst > FLASHA

    ... picks up all the input sections named .econst, including the ones from this library.  The usual fix is to move this general .econst line so it appears after the library specific .econst line.

    Thanks and regards,

    -George

  • Dear George,

    Thank you for your reply. There is no earlier line like .const :> FLASHA in the .cmd file. The linker make a warning #10068-D: no matching section at line : -l Flash28235_API_V210.lib(.econst) and line: -lFlash28235_API_V210.lib(.text).

    Is there any other reason for this problem?

    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 */
       RAML0       : origin = 0x008000, length = 0x001000     /* on-chip RAM block L0 */
       FLSDRV_AREA : origin = 0x009800, length = 0x000800
       RAML_lib    : origin = 0x00A000, length = 0x00800     /* on-chip RAM block L0 */
       /*RAML1      : origin = 0x009000, length = 0x0000b0 */    /* on-chip RAM block L1 */

      
       RAML2       : origin = 0x00A800, length = 0x000800     /* on-chip RAM block L2 */
       RAML3       : origin = 0x00B000, length = 0x001000     /* on-chip RAM block L3 */

    /*   FLASHA      : origin = 0x33C000, length = 0x003F80      on-chip FLASH */
        FLASHB      : origin = 0x300062, length = 0x0070 /* on-chip Flash */
     BOOTVER  : origin = 0x3000e0, length = 0x0020
     PARTNUM  : origin = 0x300100, length = 0x0020
        BOOTIDF  : origin = 0x300160, length = 0x0020
        FLASHC      : origin = 0x300180, length = 0x000100
     FLASHA      : origin = 0x300280, length = 0x005F00


    /*   CSM_RSVD    : origin = 0x33FF80, length = 0x000076      Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
    /* BEGIN       : origin = 0x33fff6, length = 0x000002*/
       BEGIN       : origin = 0x300060, 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 */
    /*   OTP         : origin = 0x380400, length = 0x000400      on-chip OTP */
    /*   ADC_CAL     : origin = 0x380080, length = 0x000009      ADC_cal function in Reserved memory */
      
       OTP         : origin = 0x380400, length = 0x000400     /* on-chip OTP */
       ADC_CAL     : origin = 0x380080, length = 0x000009     /* ADC_cal function in Reserved memory */

       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                                                  */
      
       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 */
       RAML4       : origin = 0x00C000, length = 0x001000     /* on-chip RAM block L1 */
       RAML5       : origin = 0x00D000, length = 0x001000     /* on-chip RAM block L1 */
       RAML6       : origin = 0x00E000, length = 0x001000     /* on-chip RAM block L1 */
       RAML7       : origin = 0x00F000, length = 0x001000     /* on-chip RAM block L1 */
      /* ZONE7B      : origin = 0x20FC00, length = 0x000400      XINTF zone 7 - data space */
       /*FLASHB      : origin = 0x338000, 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: */
       /* The Flash API functions can be grouped together as shown below.
          The defined symbols _Flash28_API_LoadStart, _Flash28_API_LoadEnd
          and _Flash28_API_RunStart are used to copy the API functions out
          of flash memory and into SARAM


          */
       /*GROUP */
       codestart           : > BEGIN       PAGE = 0
       initboot      : > FLASHB      PAGE = 0

       Flash28_API:
       {
      //bl_flash.obj
            -lFlash28235_API_V210.lib(.econst)
            -lFlash28235_API_V210.lib(.text)
       }
               LOAD = FLASHA,
                           RUN = RAML_lib,
                           LOAD_START(_Flash28_API_LoadStart),
                           LOAD_END(_Flash28_API_LoadEnd),
                           RUN_START(_Flash28_API_RunStart),
                           PAGE = 0

       .cinit              : > FLASHA      PAGE = 0
       .pinit              : > FLASHA,     PAGE = 0
       .text               : > FLASHA      PAGE = 0

       boot_ver            : > BOOTVER    PAGE = 0
       part_num            : > PARTNUM    PAGE = 0

       BOOTID      : > BOOTIDF    PAGE = 0

      ramfuncs            : LOAD = FLASHC,
                            RUN = RAML_lib,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
                             PAGE = 0

    /*   csmpasswds          : > CSM_PWL     PAGE = 0*/
    /*   csm_rsvd            : > CSM_RSVD    PAGE = 0*/
       FLSDRV              : > FLSDRV_AREA    PAGE = 0

       /* Allocate uninitalized data sections: */
       .stack              : > RAMM1       PAGE = 1
       .ebss               : > RAML4       PAGE = 1
       .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

       .reset              : > RESET,      PAGE = 0, TYPE = DSECT
       /**/
       vectors             : > VECTORS     PAGE = 0, TYPE = DSECT

       /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
       .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD

    }

  • The engineering framework is as follows:

  • There is no warns when link the F28234 Flash API. But the MCU I used is 28235. There may be a problem with the project settings. I don't know how to deal with this problem.

  • I presume the library Flash28235_API_V210.lib comes from C2000Ware.  This library contains two input sections named .econst.  One is in the object file Flash28_DepRecover.obj and the other one is in the object file Flash28_Erase.obj.  If your program never calls any functions, or uses any data, in either of these object files, then this library contributes no .econst input sections, and the linker issues that warning.  Does that describe what is happening?

    Thanks and regards,

    -George

  • Is the description in my previous post accurate?

    Thanks and regards,

    -George

  • Since it has been a while, I presume you have resolved your problem.  I'd appreciate hearing how you resolved it.

    Thanks and regards,

    -George