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.

[参考译文] CCS/TMS320F280049:TMS320F280049内存不足错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/908327/ccs-tms320f280049-tms320f280049-out-of-memory-error

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

工具/软件:Code Composer Studio

您好、需要您的帮助。

即使是新的 CCS 版本:10.0.0.00010,我也有同样的旧问题...内存不足:

错误消息:

"file:/C:/ti/ccs1000/ccs/tools/compiler/dmed/HTML/10099.html ">#10099-D 程序将无法放入可用存储器中、或者该段包含一个需要 trampoline 但无法为此段生成的调用站点。 对齐/分块放置在".text"大小为0x213dpage 0的段中失败。  可用存储器范围:

这是280049_flash_link.cmd:

部分


codestart:> begin,page = 0,align (4)
.text:>> FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6,PAGE = 0,ALIGN (4)
.cinit:> FLASH_BANK0_SEC1,PAGE = 0,ALIGN (4)
.pinit:> 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.
.ebss:>> RAMLS5 | RAMLS6 | RAMLS7,page = 1.
.esysmem:>RAMLS7,page = 1//.esysmem:>RAMLS5,page = 1.
.econst:> FLASH_BANK0_SEC7、PAGE = 0、ALIGN (4)

这是地图:

第0页:
RAMM0 000000f5 0000030b 00000000 0000030b RWIX
RAMLS0 00008000 00000800 0000004f 000007b1 RWIX
RAMLS1 00008800 00000800 00000000 00000800 RWIX
RAMLS2 00009000 00000800 00000000 00000800 RWIX
RAMLS3 00009800 00000800 00000000 00000800 RWIX
RAMLS4 0000a000 00000800 00000000 00000800 RWIX
BEGIN 00080000 00000002 00000002 00000000 RWIX
FLASH_BANK0_SEC0 00080002 00000ffe 00000000 00000ffe RWIX
FLASH_BANK0_SEC1 00081000 00001000 00000ffd 00000003 RWIX
FLASH_BANK0_SEC2 00082000 00001000 000001a2 00000e5e RWIX
FLASH_BANK0_SEC3 00083000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC4 00084000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC5 00085000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC6 00086000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC7 00087000 00001000 000001c0 00000e40 RWIX
FLASH_BANK0_SEC8 00088000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC9 00089000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC10 0008a000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC11 0008b000 00001000 00000000 00001000 RWIX

代码不是那么大、不会占用整个存储器...

如何解决此问题?

谢谢、致以诚挚的问候。

路易吉

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

    需要考虑两种解决方案。  

    一种方法 是按照此论坛帖子中的说明组合存储器范围。

    另一个是使用编译器选项 -gen_func_subsections 进行编译。  请在 C28x 编译器手册中搜索该选项。 在这种特殊情况下,所需的效果是创建较小的输入段,从而使该段分离...

    [引用用户="Luigi Vererua"].text:>FLASH_BANK0_SEC1 | FLASH_BANK0_sec2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6、PAGE = 0、(4)/QUERESO[]

    (笑声) 更有可能有效。

    请告诉我这些建议中的一项是否解决了该问题。

    谢谢、此致、

    乔治

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

    谢谢 George、

    我所了解的是、当我将 FW 放入闪存中时、每个段的目标文件不得大于0x1000。

    这是否意味着另一种解决方案可以创建小于"0x1000"的不同目标文件?

    路易吉

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

    谢谢 George、

    但是、当我使用 C 语言编写代码时、在我开始构建项目后、我希望 CCS 使用默认的链接命令文件生成我的可执行代码、而所有这些都是必需的、 包括创建目标文件和段调整或拼接所需的任何拆分或其他操作....

    为什么还要担心编辑链接命令文件?

    路易吉

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

    TI 为 Code Composer Studio 和 C2000Ware 等产品提供链接器命令文件。  在大多数情况下、客户使用来自这些源之一的链接器命令文件、而无需对其进行更改。  偶尔会出现问题、更改链接器命令文件是最佳解决方案。  您的问题就是其中之一。

    若要大致了解链接器命令文件、请参阅文章 链接器命令文件入门。  根据具体情况、重点了解术语 输入部分、输出部分 和 部分拆分。   这种额外的背景应有助于您了解我在上一篇文章中提出的两种解决方案。  这两种解决方案中的任何一种都可以解决您的问题。  请告诉我哪个解决方案最终起作用。

    谢谢、此致、

    乔治

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

    我同意您的意见。。但是如果我选择256KB 闪存 CPU、一个原因可能是我需要一些空间来放置我的代码。

    为什么创建限制闪存使用的链接器命令文件?

    路易吉