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 函数空间不足

Guru**** 2606375 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/681449/compiler-tms320f28379d-linker-complains-about-room-shortage-for-ram-functions

器件型号:TMS320F28379D

工具/软件:TI C/C++编译器

您好!

我想将 RAMLS0、RAMLS1、RAMLS2和 RAMLS3用作代码执行的连续 RAM 区域。

使用以下链接器命令文件、我希望.TI.ramfunc 段具有8K (4x2K) OS 空间。

(笑声)

RAMLS0:origin = 0x008000、length = 0x000800

RAMLS1:origin = 0x008800,length = 0x000800

RAMLS2:origin = 0x009000,length = 0x000800

RAMLS3:origin = 0x009800,length = 0x000800

(笑声)

.TI.ramfunc:{}负载= FLASHD,

运行= RAMLS0|RAMLS1|RAMLS2|RAMLS3

load_start (_RamfuncsIsrLoadStart)、

load_end (_RamfuncsIsrLoadEnd)、

run_start (_RamfuncsIsrRunStart)、

PAGE = 0、ALIGN (4)

 

但是、一旦.TI.ramfunc 超过2K、链接器就会抱怨说它只想在 RAMLS0中找到所有内容。

命令语法中是否存在任何问题? 或者、我是否需要将 RAM 函数拆分为4个大部分、每个部分中的一个部分拆分为专用 RAMLSi?

 

此致、

Christophe Marigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通常、将多个 RAM 块组合为一个的语法为-

    .text :>> FLASHA | FLASHC | FLASHD, PAGE = 0

    但在本例中、我建议组合 RAM 块并制作一个大块、然后使用它来运行。

    此致、

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    除了 Vivek 的回答之外、此 wiki 页面上还有一些有用的提示:

    processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking

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

    感谢您的提示。 解决方案是将连续的 RAMLSx 区域组合成一个大 RAM。

    (笑声)

    RAMLS0_3:origin = 0x008000、length = 0x002000

    /* RAMLS1:origin = 0x008800,length = 0x000800

    RAMLS2:origin = 0x009000,length = 0x000800

    RAMLS3:origin = 0x009800、length = 0x000800 *

    (笑声)

    .TI.ramfunc:{}负载= FLASHD,

    运行= RAMLS0_3、

    load_start (_RamfuncsLoadStart)、

    load_end (_RamfuncsLoadEnd)、

    run_start (_RamfuncsRunStart)、

    run_end (_RamfuncsRunEnd)、

    PAGE = 0、ALIGN (4)

    此致、

    Christophe Marigo