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.

[参考译文] TMS320F28377S:程序无法装入可用内存

Guru**** 2391445 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1497414/tms320f28377s-program-will-not-fit-into-available-memory

器件型号:TMS320F28377S
主题:C2000WARE 中讨论的其他器件

工具/软件:

链路故障指示内存不足。 但是、它显示的可用存储器远远足以满足其需求(0x2d8b)。 如果是"trampoline"问题、如何确定和解决此问题?

调用:C2000链接器
"c:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/cl2000 /ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/lib /ti/c2000/C2000Ware_5_04_00_00/device_support/f2837xs/headers/cmd -v28 -ml -mt ---cla_support=cla1 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -g -diag_warning=225 -diag_swrap=off /ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include /ti/c2000/C2000Ware_5_04_00_00/device_support/f2837xs/common/cmd src src src src src src src src src src src src src src src src src src src src /BlueCrest/projects/CMCScannerPlusPlus/cmd/2837xS_Generic_RAM_lnk.cmd

警告#10210-D:创建默认大小为0x400的".esysmem"段;使用-heap 选项更改默认大小

"C:/BlueCrest/projects/CMCScannerPlusPlus/cmd/2837xS_Generic_RAM_lnk.cmd "、第56行:错误#10099-D:程序无法放入可用内存中、或者该段包含一个调用点、该调用点需要无法为该段生成的蹦床函数。 对于段".text"大小为0x2d8b 第0页的放置、对齐/分块失败。 可用存储器范围:
RAMGS0大小:0x1000未使用:0x0最大孔:0x0
RAMGS1大小:0x1000未使用:0x342最大孔:0x342
RAMGS2大小:0x1000未使用:0x1000最大空洞:0x1000
RAMGS3大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS4大小:0x1000未使用:0x1000最大空洞:0x1000
RAMGS5大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS6大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS7大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS8大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS9大小:0x1000未使用:0x2最大空洞:0x1

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

    我不是附加 cmd 文件的人。 复制了以下内容。


    移动数据

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

    begin:origin = 0x000000、length = 0x000002
    RAMM0:原点= 0x000123、长度= 0x0002DD
    RAMD0:原点= 0x00B000、长度= 0x000800
    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:原点= 0x008800、长度= 0x000800
    RAMLS2:原点= 0x009000、长度= 0x000800
    RAMLS3:原点= 0x009800、长度= 0x000800
    RAMLS4:原点= 0x00A000、长度= 0x000800
    Reset:origin = 0x3FFFC0、length = 0x000002

    第1页:

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

    RAMLS5:原点= 0x00A800、长度= 0x000800

    RAMGS0:原点= 0x00C000、长度= 0x001000
    RAMGS1:origin = 0x00D000、length = 0x001000
    RAMGS2:origin = 0x00E000、length = 0x001000
    RAMGS3:origin = 0x00F000、length = 0x001000
    RAMGS4:原点= 0x010000、长度= 0x001000
    RAMGS5:原点= 0x011000、长度= 0x001000
    RAMGS6:原点= 0x012000、长度= 0x001000
    RAMGS7:origin = 0x013000、length = 0x001000
    RAMGS8:原点= 0x014000、长度= 0x001000
    RAMGS9:原点= 0x015000、长度= 0x001000
    RAMGS10:原点= 0x016000、长度= 0x001000
    RAMGS11:原点= 0x017000、长度= 0x001000
    RAMGS12:原点= 0x018000、长度= 0x001000
    RAMGS13:原点= 0x019000、长度= 0x001000
    RAMGS14:原点= 0x01A000、长度= 0x001000
    //RAMGS15:origin = 0x01B000、length = 0x001000
    RAMGS15:原点= 0x01B000、长度= 0x000FF8

    //RAMGS11:原点= 0x017000、长度= 0x000FF8
    // RAMGS11_RSVD:origin = 0x017FF8、length = 0x000008 /*根据勘误表公告"内存:在有效内存之外预取"保留并不用于代码*/

    CANA_MSG_RAM:origin = 0x049000、length = 0x000800
    CANB_MSG_RAM:原点= 0x04B000、长度= 0x000800
    }


    很重要

    codestart:> begin、page = 0
    //.text:>> RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4、页面= 0
    .text:>> RAMGS0 | RAMGS1 | RAMGS2 | RAMGS3 | RAMGS4 | RAMGS5 | RAMGS6 | RAMGS7 | RAMGS8 | RAMGS9、ALIGN (8)
    .cinit:> RAMM0、PAGE = 0
    .switch:> RAMM0、page = 0
    .reset:> reset、page =0、type = DSECT /*未使用、*/

    .stack :> RAMM1, page = 1.

    #if defined (__TI_EABI__)
    .bss:> RAMLS5、PAGE = 1
    .bss:output :> RAMLS3, page = 0
    .init_array:> RAMM0、page = 0
    .const :> RAMLS5, page = 1.
    .data :> RAMLS5, page = 1.
    .sysmem :> RAMLS5, page = 1.
    #else
    .pinit:> RAMM0、page = 0
    //.ebss :> RAMLS5, page = 1.
    .ebss:>> RAMGS9 | RAMGS10 | RAMGS11 | RAMGS12 | RAMGS13 | RAMGS14 | RAMGS15 PAGE = 1
    .econst:> RAMLS5、page = 1
    .esysmem :> RAMLS5, page = 1.
    #endif

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

    #ifdef _TI_COMPILER_VERSION__
    #if __TI_COMPILER_VERSION_>= 15009000
    .TI.ramfunc:{}> RAMM0、PAGE = 0
    #else
    ramfuncs :> RAMM0 page = 0
    #endif
    #endif

    /*以下部分的定义针对 SDFM 示例*/
    // Filter1_RegsFile:> RAMGS1, page = 1, fill=0x1111
    // Filter2_RegsFile:> RAMGS2、page = 1、fill=0x2222
    // Filter3_RegsFile:> RAMGS3、page = 1、fill=0x3333
    // Filter4_RegsFile:> RAMGS4、page = 1、fill=0x4444
    // Difference_Regs 文件:>RAMGS5, page =1, fill=0x3333
    }

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

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

    您好、Paul:

    我看不到您的链接器 cmd 文件有问题。 GS RAM 中有足够的空间可容纳。 您是否遇到了使您将其更新为 GSRAM 的 LSRAM 问题?

    是否可以共享您的项目以进行更多分析?

    谢谢

    Aswin

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

    是的,有同样的问题与 LSRAM 和尝试 GSRAM 作为一个实验.

    e2e.ti.com/.../CMCScannerPlusPlus.zip

    CMCScannerPlusPlus.zip 包含该工程。

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

    您好、Paul:

    我已经检查了您的工程属性。 该工程配置为在编译器标志中使用 coffabi 格式。 我们现在支持 EABI 格式。

    当我将编译器标志从 --abi=coffabi 替换  为  --abi=eabi 时、我能够解决链接器 cmd 问题、但工程中的其他文件存在问题。  

    请将编译器标志更新为 eabi 格式并重新编译您的工程。

    谢谢

    Aswin