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.

TMS320F2800157-Q1: Problem in linker command file

Part Number: TMS320F2800157-Q1
Other Parts Discussed in Thread: TMS320F2800157, SYSCONFIG

Dear All,

I am trying to use TMS320F2800157. Trying to build me code and  getting many errors in "F2800157_flash_lnk.cmd" file. 1st error is in this line

     FLASH_BANK0_SEC_32      : origin = 0x088080, length = 0x0400  /* on-chip Flash */
     FLASH_BANK0_SEC_33      : origin = 0x088400, length = 0x0400  /* on-chip Flash */

Can anyone provide a correct linker file for this controller since I am a new user on this and don't have much idea where I can get this. 

My code is currently running OK on different uC and size is 180KB. So I need Linker files to be supporting this size.

Regards,

Aman.

  • Aman, 

    It seems to be an typo error in the linker command file. It should have been 0x088000 for the start address of the FLASH_BANK0_SEC_32 entry in the linker command.

    FLASH_BANK0_SEC_32 : origin = 0x088000, length = 0x0400 /* on-chip Flash */
    FLASH_BANK0_SEC_33 : origin = 0x088400, length = 0x0400 /* on-chip Flash */

    Best Regards

    Siddharth

  • Hi Siddharth,

    Thanks for your response. Now I am getting error on these lines.

    Let me what can I do for these.

    Regards,
    Aman

  • Aman, 

    Pls let me know the errors that are reported for these lines.

    Best Regards

    Siddharth

  • Hi Siddhath,

    The error is "#10099-D</a> program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section ".cinit" size 0xf5 page 0. Available memory ranges: F2800157_flash_lnk.cmd /gpio_ex2_toggle line 112 C/C++ Problem".

    I Found that only 130 KB of Flash is defined in the .cmd file.

    MEMORY
    {
    
       BOOT_RSVD        : origin = 0x00000002, length = 0x0000024E
    
       RAMM0            : origin = 0x00000250, length = 0x000001B0
       RAMM1            : origin = 0x00000400, length = 0x000003F8
       // RAMM1_RSVD       : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       RAMLS0           : origin = 0x00008000, length = 0x00002000
       RAMLS1           : origin = 0x0000A000, length = 0x00001FF8
       // RAMLS1_RSVD      : origin = 0x0000BFF8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       RESET            : origin = 0x003FFFC0, length = 0x00000002
    
    #ifdef __TI_COMPILER_VERSION__
       #if __TI_COMPILER_VERSION__ >= 20012000
    GROUP {      /* GROUP memory ranges for crc/checksum of entire flash */
       #endif
    #endif
       BEGIN            : origin = 0x00080000, length = 0x00000002
       /* Flash sectors */
       /* BANK 0 */
         /* Flash sectors */
       FLASH_BANK0_SEC_0_7     : origin = 0x080002, length = 0x1FFE  /* on-chip Flash */
       FLASH_BANK0_SEC_8_15    : origin = 0x082000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_16_23   : origin = 0x084000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_24      : origin = 0x086000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_25      : origin = 0x086400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_26      : origin = 0x086800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_27      : origin = 0x086C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_28      : origin = 0x087000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_29      : origin = 0x087400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_30      : origin = 0x087800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_31      : origin = 0x087C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_32      : origin = 0x088000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_33      : origin = 0x088400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_34      : origin = 0x088800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_35      : origin = 0x088C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_36      : origin = 0x089000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_37      : origin = 0x089400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_38      : origin = 0x089800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_39      : origin = 0x089C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_40_47   : origin = 0x08A000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_48_55   : origin = 0x08C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_56_63   : origin = 0x08E000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_64_71   : origin = 0x090000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_72_79   : origin = 0x092000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_80_87   : origin = 0x094000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_88      : origin = 0x096000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_89      : origin = 0x096400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_90      : origin = 0x096800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_91      : origin = 0x096C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_92      : origin = 0x097000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_93      : origin = 0x097400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_94      : origin = 0x097800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_95      : origin = 0x097C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_96      : origin = 0x098000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_97      : origin = 0x098400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_98      : origin = 0x098800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_99      : origin = 0x098C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_100     : origin = 0x099000, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_101     : origin = 0x099400, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_102     : origin = 0x099800, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_103     : origin = 0x099C00, length = 0x0400  /* on-chip Flash */
       FLASH_BANK0_SEC_104_111 : origin = 0x09A000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_112_119 : origin = 0x09C000, length = 0x2000  /* on-chip Flash */
       FLASH_BANK0_SEC_120_127 : origin = 0x09E000, length = 0x1FF0  /* on-chip Flash */
    
       // FLASH_BANK0_SEC_127_RSVD : origin = 0x0A0FF0, length = 0x0010  /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
    
    #ifdef __TI_COMPILER_VERSION__
      #if __TI_COMPILER_VERSION__ >= 20012000
    }  crc(_table_name, algorithm=C28_CHECKSUM_16)
      #endif
    #endif
    
    }
    
    
    SECTIONS
    {
       codestart        : > BEGIN
    
       .text            : >> FLASH_BANK0_SEC_0_7    | FLASH_BANK0_SEC_8_15    | FLASH_BANK0_SEC_16_23   | FLASH_BANK0_SEC_24    |
                             FLASH_BANK0_SEC_25      | FLASH_BANK0_SEC_26      | FLASH_BANK0_SEC_27    |
                             FLASH_BANK0_SEC_28      | FLASH_BANK0_SEC_29      | FLASH_BANK0_SEC_30    |
                             FLASH_BANK0_SEC_31      | FLASH_BANK0_SEC_32      | FLASH_BANK0_SEC_33    |
    						 FLASH_BANK0_SEC_34      | FLASH_BANK0_SEC_35      | FLASH_BANK0_SEC_36    |
    						 FLASH_BANK0_SEC_37      | FLASH_BANK0_SEC_38      | FLASH_BANK0_SEC_39    |
                             FLASH_BANK0_SEC_40_47   | FLASH_BANK0_SEC_48_55 |
                             FLASH_BANK0_SEC_56_63   | FLASH_BANK0_SEC_64_71   | FLASH_BANK0_SEC_72_79 |
                             FLASH_BANK0_SEC_80_87   | FLASH_BANK0_SEC_88      | FLASH_BANK0_SEC_89	   |
                             FLASH_BANK0_SEC_90   	 | FLASH_BANK0_SEC_91      | FLASH_BANK0_SEC_92	   |
                             FLASH_BANK0_SEC_93   	 | FLASH_BANK0_SEC_94      | FLASH_BANK0_SEC_95	   |
                             FLASH_BANK0_SEC_96   	 | FLASH_BANK0_SEC_97      | FLASH_BANK0_SEC_98	   |
                             FLASH_BANK0_SEC_99   	 | FLASH_BANK0_SEC_100      | FLASH_BANK0_SEC_101	   |
                             FLASH_BANK0_SEC_102  |  FLASH_BANK0_SEC_103  |
    
                             FLASH_BANK0_SEC_104_111 | FLASH_BANK0_SEC_112_119, ALIGN(8)
    
       .cinit           : > FLASH_BANK0_SEC_120_127, ALIGN(8)
       .switch          : > FLASH_BANK0_SEC_120_127, ALIGN(8)
    
       .reset           : > RESET,  TYPE = DSECT /* not used, */
    
       .stack           : > RAMM1
    

    Can you let me know any .cmd file where I can use the full flash for my code. I don't understand why these .cmd file are so full of errors.

    Regards,
    Aman. 

  • Aman, 

    You can try to allocate the cinit sections across multiple sections similar to what has been done for .text section.

     .cinit           : >> FLASH_BANK0_SEC_112_119 |  FLASH_BANK0_SEC_120_127, ALIGN(8)

    All the Flash sectors are mentioned in the linker command file and this is a generic file.

    You need to change the linker command file to configure the memory allocation as per your use case.

    Best Regards

    Siddharth

  • Please tell me how to generate this .cmd file. Any training video or doc will be helpful.

    Regards,
    Aman.

  • Aman, 

    If you want to create your own linker command file , you can use C2000 SysConfig Linker Command Tool.  Pls refer the following App note https://www.ti.com/lit/an/sprad49/sprad49.pdf

    For getting an overview on the linker command file, pls refer the following link 

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    Best Regards

    Siddharth

  • Fixed the Flash errors.

    Now I am getting error in RAM

    Please let me know how this can be solved.

    Regards,
    Aman.

  • Aman, 

    You can do the same fix for the RAM allocation

    .bss :>> RAMLS0 | RAMLS1

    Best Regards

    Siddharth

  • This does not works.

    Still Same error.

    Regards,
    Aman