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.

"placement fails for object "Cla1Prog", size 0x2da (page 0)"

Hi everyone,

I get this fail and after building on F28035, like below, could anyone give me some suggestions?

 

Thanks.

 

placement fails for object "Cla1Prog", size 0x2da (page 0).  Available
   ranges:   RAML0L1      size: 0xc00        unused: 0x2d2        max hole: 0x2d2     


warning: entry-point symbol other than "_c_int00" specified:  "code_start"
error: errors encountered during linking; "Example_2803xClaAdcFir.out" not   built

 

  • Hi Daniel,

    your object Cla1Prog is too large to be placed into RAML0L1 (size is 0x2da, available space in RAML0L1 is 0x2d2). Change your linker command file - either make the RAM Section larger, or split your Cla1Prog into multiple Sections and map them into different RAM Sections.

    Best regards

    Andreas

  • Daniel,

    Note that you can only run code on the CLA from L3 RAM. You will need to copy this code over to L3 and then configure L3 to be a CLA RAM to run it.

    Regards,
    Dave Foley

     

  • Hi Andreas, hi David,

    thanks for the fast response.

    I have no idea how to that.  I tyed to somethink like this:

     

    MEMORY
    {
    PAGE 0 :
       /* BEGIN is used for the "boot to SARAM" bootloader mode   */

       BEGIN      : origin = 0x000000, length = 0x000002
       RAMM0      : origin = 0x000050, length = 0x0003B0
     /*  RAML0L1    : origin = 0x008000, length = 0x000C00*/
       RAML0L1    : origin = 0x008000, length = 0x001000
       RESET      : origin = 0x3FFFC0, length = 0x000002
       IQTABLES   : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
       IQTABLES2  : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
       IQTABLES3  : origin = 0x3FEBDC, length = 0x0000AA     /* IQ Math Tables in Boot ROM */

       BOOTROM    : origin = 0x3FF27C, length = 0x000D44


    PAGE 1 :

       BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
       RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
       RAML2       : origin = 0x009000, length = 0x000C00
     /*  RAML2       : origin = 0x008C00, length = 0x000400*/
     /*  RAML3       : origin = 0x009000, length = 0x001000*/
    }


    SECTIONS
    {
       /* Setup for "boot to SARAM" mode:
          The codestart section (found in DSP28_CodeStartBranch.asm)
          re-directs execution to the start of user code.  */
       codestart        : > BEGIN,     PAGE = 0
       ramfuncs         : > RAMM0      PAGE = 0
    ;   .text            : > RAML0L1,   PAGE = 0
       .text            : > RAML3,   PAGE = 1
       .cinit           : > RAMM0,     PAGE = 0
       .pinit           : > RAMM0,     PAGE = 0
       .switch          : > RAMM0,     PAGE = 0
       .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

    ;   .stack           : > RAMM1,     PAGE = 1
       .stack           : > RAMML0L1,     PAGE = 0
       .ebss            : > RAML2,     PAGE = 1
       .econst          : > RAML2,     PAGE = 1
       .esysmem         : > RAML2,     PAGE = 1

       IQmath           : > RAML0L1,   PAGE = 0
       IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD

     

    But I always got  new error messages:

    warning: creating output section "Cla1Prog" without a SECTIONS specification
       library "libc.a"
    warning: creating output section "Cla1ToCpuMsgRAM" without a SECTIONS
       specification
    warning: creating output section "CpuToCla1MsgRAM" without a SECTIONS
       specification
    "../28035_RAM_lnk.cmd", line 120: warning: memory range not found: RAMML0L1 on
       page 0
    "../28035_RAM_lnk.cmd", line 120: error: no valid memory range(NULL) available
       for placement of ".stack"
    "../28035_RAM_lnk.cmd", line 120: error: run placement fails for object

       ".stack", size 0x300 (page 0)

    error: unresolved symbols remain

     

    if I do it in normal configuration (change the uncomment code) the I'll get these error messages:

    arning: creating output section "Cla1Prog" without a SECTIONS specification
    warning: creating output section "Cla1ToCpuMsgRAM" without a SECTIONS
       specification
    warning: creating output section "CpuToCla1MsgRAM" without a SECTIONS
       specification

     undefined           first referenced           
      symbol                 in file                
     ---------           ----------------           
     _Cla1funcsLoadEnd   ./Example_2803xClaAdcFir.obj
     _Cla1funcsLoadStart ./Example_2803xClaAdcFir.obj
     _Cla1funcsRunStart  ./Example_2803xClaAdcFir.obj

    error: unresolved symbols remain
    warning: entry-point symbol other than "_c_int00" specified:  "code_start"
    error: errors encountered during linking; "Example_2803xClaAdcFir.out" not
       built
       library "libc.a"

    >> Compilation failure
    gmake: *** [Example_2803xClaAdcFir.out] Error 1
    gmake: Target `all' not remade because of errors.

     

    Can someone help me again?

     

    Tank you

     

  • I got the fail.

    But now there's a problem I can't understand.

    I'm using the body of the "cla_adc_fir" example. Just the main, shared and cla sections will be changed by myself. If I'll run my programm, everytime I'll  jump into the "DSP2803x_DefaultIsr.c" into the Illegal operation TRAP (interrupt void ILLEGAL_ISR(void)  ).

    Can someone tell me what why the program could be jump into this interrupt (just in general)

     

    Thank you

     

    Greets

  • Daniel,

    The ILLEGAL_ISR is executed if an instruction fetch retreives a value from memory that does not correspond to a proper opcode. It is likely you are making a call to a RAM location that has not been initialized. I think if you return from the ISR it should bring you back to the offending address. Or, it might be stored in the RPC register, I can't remember.

    Regards,
    Dave Foley

     

  • hi David

    when I run code on the CLA from L3 RAM,but I only use 2K,can I use the other 2k for CUP?if you can ,how to do that?

    Can you help me ?

    Thank you