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.

[参考译文] TMS320F28379D:程序不能放入可用内存中

Guru**** 2587345 points
Other Parts Discussed in Thread: TMS320F28379D

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

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

器件型号:TMS320F28379D

大家好、团队、

我代表我的客户发布。

我正面临此错误... 请帮我纠正这个错误

#10099-D 程序不能放入可用存储器中、或者该段包含需要无法为此段生成的 trampoline 的调用站点。 对".ebss"大小为0x61a9c 第1页运行定位/分块失败。 可用存储器范围:2837x_flash_lnk_cpu1.cmd /Project line 114 C/C++ problem

我在 TMS320F28379D 上工作。
在此、我附上 main.c 文件供您参考。
在代码中,只需将任何一个数组大小增加到>2000,就会出现错误,否则不会出现错误。
 
此致、
Renan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Renan、您好!

    当您增大全局变量大小时、它不能放入段中

    请查看 2837x_flash_lnk_cpu1.cmd、并查找.ebss 段。 您需要按照错误消息中的建议增大大小。 此链接解释了链接器命令文件的详细信息

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

    如下所示。

    ebss:>> RAMLS5 | RAMGS0 | RAMGS1 | RAMGS2,PAGE = 1.
    此致、Santosh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Renan、

    请告诉客户参考此链接以了解更多详细信息:

    https://dev.ti.com/tirex/explore/content/c2000_academy_2_02_01_42_all/modules/c2000_debug_subsystems/c2000_debug_tips.html#linker-error-program-does-not-fit

    此致、Santosh

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

    您好 Santosh、

    请参阅我的客户的回复:

    根据您的建议、访问后、我已在.cmd 文件中更改为以下信息。
     ebss        :>> RAMLS5 | RAMGS0 | RAMGS1 |RAMGS5 |RAMGS6 |RAMGS7 |RAMGS8 | RAMGS9。
    但错误仍然存在。 除此之外、我还必须对 do..pl的指南进行任何修改
    此致、
    Renan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Renan、

    请查看控制台日志中的确切错误。 它将显示所需的量、以及所拥有的量、然后您可以相应地进行计算。

    [引用 userid="392209" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1175535/tms320f28379d-program-will-not-fit-into-available-memory/4424068 #4424068"].ebss        :>>[/报价]

    不知道为什么需要这么大的数组。 您只是在试验中、还是在应用中需要它? 您有13个浮点数数组、每个数组有2000个元素。 因此您需要:

    13 * 2000 * 4字节=仅此数组为104KB。  

    您可能需要将其存储在闪存中、如下所示。 您将需要至少4个闪存扇区。

    ebss        :>>  FLASHH  FLASHG  | FLASHI | FLASHJ  
     
    希望这对您有所帮助。
    此致、Santosh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Santosh、

    请参阅我的客户的回复:

    很抱歉耽误你的回答。
    我的应用需要这些变量。 需要一个大小为4000的变量来存储 ADC 采样数据。

    将在闪存初始化位置添加以下行。 大小为(48000字节)的闪存
    .ebss:>> FLASHE |FLASHH | FLASHG| FLASHI | FLASHJ PAGE = 0

    仍然会发生错误。

    说明资源路径位置类型
    #10099-D 程序不能放入可用存储器中、或者该段包含需要无法为此段生成的 trampoline 的调用站点。 ".ebss"大小为0x1084页1的运行定位/分块失败。 可用存储器范围:2837x_flash_lnk_cpu1.cmd /Project line 115 C/C++ problem

    非常感谢您的帮助。

    此致、

    Renan

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

    Renan、

    具有一个可变的0f 4000大小是可以管理的。 因为它用于采样 ADC 缓冲器、所以它必须放置在 RAM 中。 创建一个单独的段并使用#pragma DATA_SECTION ()将变量放置在该段中。

    您需要一些背景。  请阅读文章 链接器命令文件入门的第一部分。  清楚地了解 输入段 是如何来自目标文件的、如何组合到 输出段中、以及如何将这些输出段分配到 存储器范围

    DATA_SECTION pragma 指示编译器将哪个输入段用于特定全局或静态变量。

    此致、Santosh