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.

[参考译文] TMS320F280049C:F280049C

Guru**** 2460010 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1506779/tms320f280049c-f280049c

器件型号:TMS320F280049C

工具/软件:

您好:

我在使用 F280049C 微控制器时遇到了一个与存储器大小相关的问题。


"../28004x_generic_flash_lnk.cmd"、第78行:错误#10099-D:程序将无法放入可用内存中、或者该段包含一个需要无法为该段生成蹦床函数的调用站点。 对于段".text"大小为0x3229第0页的放置、对齐/分块失败。 可用存储器范围:
FLASH_BANK0_sec2大小:0x1000未使用:0x0最大空洞:0x0
FLASH_BANK0_SEC3大小:0x1000未使用:0x5c 最大空洞:0x5c
FLASH_BANK0_SEC5大小:0x1000未使用:0x1000最大空洞:0x1000
错误#10010:链接时遇到错误;"sc_56rsh15.out"未构建

我如何使用同一家银行、但使用的是不同的部门?

如果您有任何解决此问题的步骤、请分享您的见解。

谢谢你

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

    您好、Nibesh、

    这是查看如何使用 https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html 链接器命令文件的好资源

    听起来您需要调整.text 内存分配。 用户还可以手动调整 FLASH_BANK0_SECx 大小作为链接器命令文件的顶部、以直接加入闪存组

    此致、

    彼得

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

    您好、Peter:

    我已根据您的建议进行了更改、
    但我仍然 收到错误。

    您是否会在链接器存储器中检查类型引用?



    移动数据

    第0页:
    /* BEGIN 用于"引导至闪存"引导加载程序模式*/

    BEGIN:origin = 0x080000、length = 0x000002
    RAMM0:origin = 0x0000F6、length = 0x00030A

    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:原点= 0x008800、长度= 0x000800
    RAMLS2:原点= 0x009000、长度= 0x000800
    RAMLS3:原点= 0x009800、长度= 0x000800
    RAMLS4:原点= 0x00A000、长度= 0x000800
    Reset:origin = 0x3FFFC0、length = 0x000002

    /*闪存扇区*/
    /*组0 */
    FLASH_BANK0_SEC0:origin = 0x080002、length = 0x000FFE /*片上闪存*/
    FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_sec2:origin = 0x082000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC5:origin = 0x085000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_sec7:origin = 0x087000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x001000 /*片上闪存*/
    FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x001000 /*片上闪存*/

    /*组1 */
    FLASH_BANK1_SEC0:origin = 0x090000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC1:origin = 0x091000、length = 0x001000 /*片上闪存*/
    Flash_BANK1_sec2:origin = 0x092000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC3:origin = 0x093000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC4:origin = 0x094000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC5:origin = 0x095000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC6:origin = 0x096000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_sec7:origin = 0x097000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC8:origin = 0x098000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC9:origin = 0x099000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC10:origin = 0x09A000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC11:origin = 0x09B000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC12:origin = 0x09C000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC13:origin = 0x09D000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC14:origin = 0x09E000、length = 0x001000 /*片上闪存*/
    FLASH_BANK1_SEC15:origin = 0x09F000、length = 0x000FF0 /*片上闪存*/

    // FLASH_BANK1_SEC15_RSVD:origin = 0x09FFF0、length = 0x000010 /*根据勘误表公告"存储器:在有效存储器之外预取"保留并不用于代码*/

    第1页:

    BOOT_RSVD:origin = 0x000002、length = 0x0000F1 /* M0的一部分、引导 ROM 将对堆栈使用此方法*/
    RAMM1:origin = 0x000400、length = 0x0003F8 /*片上 RAM 块 M1 */
    // RAMM1_RSVD:origin = 0x0007F8、length = 0x000008 /*根据勘误表公告"存储器:在有效存储器之外预取"保留并不用于代码*/

    RAMLS5:原点= 0x00A800、长度= 0x000800
    RAMLS6:原点= 0x00B000、长度= 0x000800
    RAMLS7:原点= 0x00B800、长度= 0x000800

    RAMGS0:原点= 0x00C000、长度= 0x002000
    RAMGS1:origin = 0x00E000、length = 0x002000
    RAMGS2:origin = 0x010000、length = 0x002000
    RAMGS3:原点= 0x012000、长度= 0x001FF8

    // RAMGS3_RSVD:origin = 0x013FF8、length = 0x000008 /*根据勘误表公告"内存:在有效内存之外预取"保留并不用于代码*/
    }


    很重要

    codestart :> begin, page = 0, align(4)
    .text:>> FLASH_BANK0_sec2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5、PAGE = 0、ALIGN (4)
    .cinit:> FLASH_BANK0_SEC1、PAGE = 0、ALIGN (4)
    .switch:> FLASH_BANK0_SEC1、page = 0、align (4)
    .reset:> reset、page =0、type = DSECT /*未使用、*/

    .stack :> RAMM1, page = 1.

    #if defined (__TI_EABI__)
    .init_array:> FLASH_BANK0_SEC1、page = 0、align (4)
    .bss:> RAMLS5、PAGE = 1
    .bss:output :> RAMLS3, page = 0
    .bss:CIO:> RAMLS0、PAGE = 0
    .data :> RAMLS5, page = 1.
    .sysmem :> RAMLS5, page = 1.
    /*初始化段进入闪存*/
    .const:> FLASH_BANK0_SEC4、page = 0、align (4)
    #else
    .pinit:> FLASH_BANK0_SEC1、PAGE = 0、ALIGN (4)
    .ebss :> RAMLS5, page = 1.
    .esysmem :> RAMLS5, page = 1.
    .cio:> RAMLS0、page = 0
    .econst:> FLASH_BANK0_SEC4、PAGE = 0、ALIGN (4)
    #endif

    ramgs0:> RAMGS0、page = 1
    ramgs1 :> RAMGS1, page = 1.


    #if defined (__TI_EABI__)
    .TI.ramfunc:load = FLASH_BANK0_SEC1、
    RUN = RAMLS0、
    LOAD_START (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    LOAD_END (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    RUN_SIZE (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    #else
    .TI.ramfunc:load = FLASH_BANK0_SEC1、
    RUN = RAMLS0、
    LOAD_START (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    LOAD_END (_RamfuncsLoadEnd)、
    RUN_START (_RamfuncsRunStart)、
    RUN_SIZE (_RamfuncsRunSize)、
    RUN_END (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    #endif

    }

    /*
    //==============================================================================
    //文件结尾。
    //==============================================================================
    */

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

    您好、Nibesh、

    器件上有大量未使用的存储器、因此可以轻松地重新分配存储器。 例如、我建议一个简单的解决方案是将.text 的所有存储器分配给  FLASH_BANK0_SEC5。  

    可以更改

    .text : >> FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 , PAGE = 0, ALIGN(4)

    最终目的

    .text : > FLASH_BANK0_SEC5 , PAGE = 0, ALIGN(4)

    然后、您可以将 FLASH_BANK0_SEC5的存储器更改为更大的大小。 例如、更改为

    FLASH_BANK0_SEC5 : origin = 0x085000, length = 0x004000 /* on-chip Flash */

    然后可以注释掉第6、7和8部分

    此致、

    彼得

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

    您好、Peter:

    非常感谢您的快速响应。
    我一定会实施这个逻辑并进行进一步的测试。


    谢谢