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.

[参考译文] TMS320F280025C:错误#10010:链接期间遇到错误;

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1165945/tms320f280025c-error-10010-errors-encountered-during-linking

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

大家好、  

我正在尝试构建我的第一个项目、因此这可能是一个枯燥的问题。

然而昨天我试图控制伺服电机并且运转良好、今天我尝试重建我的程序并且得到了以下警告:

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

"C:/ti/c2000/C2000Ware_4_01_00_00/device_support/f28002x/common/cmd/28002x_generic_ram_lnk.cmd、第64行:错误#10099-D:程序不能放入可用存储器中、或者该段包含一个需要无法为此段生成的 trampoline 的调用站点。 对".sysmim"大小为0x400page 0的段运行定位/分块失败。 可用存储器范围:
RAMLS4567大小:0x2000未使用:0x12d 最大孔:0x12c
错误#10010:链接期间遇到错误;未构建"F28002x_Project.out"

>>编译失败
Makefile:144:目标'F28002x_Project.out'的配方失败
gmake.1]:***[F28002x_Project.out]错误1.
Makefile:140:目标'all'的配方失败
gmake:***[全部]错误2.

是否有人知道如何修复它?

P.S:该文件已在工程属性-> Build -> C2000 Linker -> File search Path -> C:\ti\c2000Ware_4_01_00_00\device_support\f28002x\con\cmd:\28002x_generic_ram_lnk.cmd 中链接

谢谢、

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

    您好!

    如错误消息中所述、链接 器正在尝试将长度为0x400的 sysmem 段放入 LSRAM 中、LSRAM 中只剩下0x12d 未使用的存储器。

    请将其重新分配到另一个 RAM 块

    此致、

    Veena

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

    您好!

    感谢您的回答。 我尝试了它、然后发现问题是程序加载到 ROM 中、为了解决这个问题、我应该将程序加载到闪存中。

    您对如何实现这一点有什么想法吗?

    此致、

    Abdel Karim

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

    P.S:我还尝试链接"28002x_generic_flash_lnk"而不是"28002x_generic_ram_lnk"来解决该问题。 但是、该程序是在没有错误的情况下构建的、但仍然无法正常工作。

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

    您的应用是否使用 0x400 字节 的堆存储器? 如果不是、您可以减小该尺寸以减小截面尺寸。

    如果 GSRAM 中还有备用存储器、可以尝试将 sysmem 分配给 GSRAM 存储器  

    .sysmem :>RAMGS0  

    请注意、C2000ware 中提供的 cmd 文件仅供参考、请根据应用要求进行更新

    此致、

    Veena

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

    谢谢你  

    通过链接 "28002x_general_flash_lnk"解决了问题。  

    按照 建议更新 C2000ware 中提供的 cmd 文件、将 BANK0到 BANK15的闪存组组合在一起:

    // 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 = 0x000FF0 //片上闪存*

    FLASH_BANK0_SEC2To15:origin = 0x082000,length = 0xDFF0 //组合闪存组0到15  

    然后我添加了:

    #include //添加到 main.c

    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(uint32_t)&RamfuncsLoadSize);//添加到 main.c