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:在 RAM 链接器文件上针对错误#10099-D 增加了.text 段

Guru**** 2394305 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1353517/tms320f28379d-increasing-text-section-on-a-ram-linker-file-for-error-10099-d

器件型号:TMS320F28379D

大家好、我目前在 RAM 连接器文件中设置了以下存储器:

PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN           	: origin = 0x000000, length = 0x000002
   RAMM0           	: origin = 0x000122, length = 0x0002DE
   RAMD0           	: origin = 0x00B000, length = 0x000800
   RAMLS0          	: origin = 0x008000, length = 0x000800
   RAMLS1          	: origin = 0x008800, length = 0x000800
   RAMLS2      		: origin = 0x009000, length = 0x000800
   RAMLS3      		: origin = 0x009800, length = 0x000800
   RAMLS4      		: origin = 0x00A000, length = 0x000800
   RESET           	: origin = 0x3FFFC0, length = 0x000002

然后、将链接器文件的"SECTIONS"部分中的.text 分离、如下所示:

   .text            : >>RAMM0 | RAMD0 | RAMD1 |  RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,   PAGE = 0


但是、在执行此操作时、我收到一条消息、说我的程序将无法放入可用内存中、并提示我以下错误消息、似乎 PAGE 0中的所有存储块都已满。  

#10099-D 程序将无法放入可用内存中,或者该段包含的调用站点需要无法为该段生成 trampoline。 对齐/分块放置在".text"大小0x33e8 page 0的段失败。  可用存储器范围:

我可以通过哪些选项来解决该问题?

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

    您好、Eric、

    请查看类似的主题 - (+) TMS320F28379D:错误#10099-D:程序无法放入可用内存。 对齐放置段".text"大小0x2b12失败。 - C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛

    另外、配置中的 RAMD1也会出现在 Page1下。 您能否从.map 文件检查 LS RAMS 中剩余的内存大小?

    此致

    阿斯温

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

    您好、Aswin:

    希望您做得好。 在.map 文件中、LS RAMS 中似乎没有剩余内存:

             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
    PAGE 0:
      BEGIN                 00000000   00000002  00000002  00000000  RWIX
      RAMM0                 00000122   000002de  000002dd  00000001  RWIX
      RAMLS0                00008000   00000800  00000800  00000000  RWIX
      RAMLS1                00008800   00000800  00000800  00000000  RWIX
      RAMLS2                00009000   00000800  000007ff  00000001  RWIX
      RAMLS3                00009800   00000800  00000800  00000000  RWIX
      RAMLS4                0000a000   00000800  00000800  00000000  RWIX
      RAMD0                 0000b000   00000800  00000800  00000000  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX

    我刚刚从我的代码行中删除了 RAMD1、我首先会将其放入、以便尝试将我的大型.text 文件放入其中。

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

    您好、Eric、

    看起来完整的 LS RAM 用于这些段、并且我们没有剩余任何内存容纳 LSRAM 中的.text 段。

    如您所见、Total .text 段总共需要0x33e8。 如果您计算的是 LSRAM 总长度+M0长度+ D0长度、则将接近于总.text 大小。 因此、我认为此 LS 段不足以容纳总计.text 段。

    我建议使用 第1页中的 GSRAM 位置来配置.text 段。

    例如- .text       :>> RAMD1 | RAMGS0 | RAMGS1 | RAMGS2 ,  页面= 1

    此致  

    阿斯温