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:链接器命令文件中的问题

Guru**** 2543100 points
Other Parts Discussed in Thread: TMS320F2800157, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1256488/tms320f2800157-q1-problem-in-linker-command-file

器件型号:TMS320F2800157-Q1
主题中讨论的其他器件:TMS320F2800157SysConfig

尊敬的所有人:

我正在尝试使用 TMS320F2800157。 尝试构建我的代码、并 在"F2800157_flash_lnk.cmd"文件中收到许多错误。 第1个错误在此行中

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

我是此控制器的新用户、不知道从哪里可以获得此文件、任何人都可以为该控制器提供正确的链接器文件吗?  

我的代码当前在不同 uC 上运行正常、大小为180KB。 因此、我需要链接器文件来支持该大小。

此致、

Aman.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aman,  

    这似乎是链接器命令文件中的拼写错误。 对于 链接器命令中 FLASH_BANK0_SEC_32条目的起始地址、应为0x088000。

    FLASH_BANK0_SEC_32:origin = 0x088000、length = 0x0400 /*片上闪存*/
    FLASH_BANK0_SEC_33:origin = 0x088400、length = 0x0400 /*片上闪存*/

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Siddharth:

    感谢您的答复。 现在、这些行上出现错误。

    让我为这些做些什么。

    此致、
    阿曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aman,  

    请告诉我针对这些行报告的错误。

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Siddhha:

    错误是" #10099-D 程序将无法放入可用内存中,或者该段包含的调用站点需要无法为该段生成 trampoline。 对齐/分块放置在".cinit"大小为0xf5 PAGE 0的段中失败。 可用存储器范围:F2800157_flash_lnk.cmd /GPIO_ex2_toggle line 112 C/C++ problem"。

    我发现在.cmd 文件中仅定义了130 KB 的闪存。

    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
    

    您能告诉我任何可以为我的代码使用完整闪存的.cmd 文件吗? 我不明白为什么这些.cmd 文件充满错误。

    此致、
    Aman.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aman,  

    您可以尝试跨多个段分配 cinit 段、类似于对.text 段所做的操作。

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

    链接器命令文件中提到了所有闪存扇区、并且这是一个通用文件。

    需要 根据用例更改链接器命令文件以配置存储器分配。

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请告诉我如何生成这个.cmd 文件。 任何培训视频或文档都会有所帮助。

    此致、
    Aman.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aman,  

    如果要创建自己的链接器命令文件,可以使用 C2000 SysConfig 链接器命令工具。  请参阅以下应用手册 https://www.ti.com/lit/an/sprad49/sprad49.pdf

    有关链接器命令文件的概述、请参阅以下链接  

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

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    修复了闪存错误。

    现在、我在 RAM 中收到错误

    请告诉我如何解决该问题。

    此致、
    Aman.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aman,  

    您可以针对 RAM 分配执行相同的修复、

    .bss:>> RAMLS0 | RAMLS1

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这不奏效。

    仍然是相同的误差。

    此致、
    阿曼