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**** 2124380 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 连接器文件中设置了以下存储器:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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


但是、在执行此操作时、我收到一条消息、说我的程序将无法放入可用内存中、并提示我以下错误消息、似乎 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 中似乎没有剩余内存:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我刚刚从我的代码行中删除了 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

    此致  

    阿斯温