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.

[参考译文] RTOS:从 RTSC XDC 配置文件访问链接器符号

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/686735/rtos-access-linker-symbols-from-rtsc-xdc-config-file

工具/软件:TI-RTOS

您好!

是否有方法使用链接器符号的值初始化.cfg 文件变量?

在 C 代码中、我将具有如下内容:

extern char __sym;

unsigned int var=(unsigned int)&_sym;

如何从.cfg 文件中执行相同的操作?

我之所以需要这样做、是因为我想更改 XDC 代码所使用的一些变量的值、而不是为它们分配常量数、然后使用符号的值进行分配。  

谢谢

家伙

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

    这是否适合您? processors.wiki.ti.com/.../Accessing_Variables_and_Macros_in_RTSC_projects

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Guy、
    要分配给哪种类型的配置参数? 参数是在模块中定义的、还是要分配给某些 RTSC 产品中定义的参数?
    根据这些问题的答案、可能会有多种解决方案或根本没有解决方案。 如果您拥有该模块、则可以对其进行更改、以便更轻松地执行您想要执行的操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    谢谢-这是一个信息丰富的地方、但它没有提到我想要的。
    我尝试定义 cfg 脚本变量并将其值设置为链接器符号的值(它可以是我输入到链接文件中的符号、例如 start a some section 或 address of some variable)。 此外、我希望稍后能够从 C 代码访问该 cfg 变量。

    谢谢
    家伙
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Guy、
    如果问题仍然存在、您能否回答我上一个帖子中的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我以为我已经回答了这个问题,但我可能会误解了这个问题。
    我想知道是否以及如何在.cfg 文件中设置变量(当变量是某个模块的变量时以及当变量是我在全局中创建的变量时) 并使其值等于链接器命令脚本中定义的符号的值(而不是像#define 这样定义的常量)。 然后、我想知道我还如何通过 C 代码访问该变量。
    我对 RTSC 及其模块不太熟悉、因此我可能仍会误解您的要求。

    谢谢
    家伙
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    cfg 脚本的目的是为 RTSC 模块和模块实例的配置参数分配值、以便创建一个 C 文件、从而初始化与参数对应的 C 变量。 所有这些参数都在模块规格文件中定义、这些文件的扩展名为.xDC。 此外、还会键入所有参数、您只能将特定类型的值分配给参数。

    有时、在 cfg 脚本中、您将看到分配给未键入的 JavaScript 变量、如下所示:
    var jsVar = ;
    这些变量仅在脚本的持续时间内存在、并且它们没有等效的 C 语言。

    我不确定您提到您在全局创建的变量时意味着什么。 如果您像上面描述的那样引用 JavaScript 变量、那么正如我说过的、它将不起作用。

    因此、您需要创建一个 RTSC 封装和一个具有配置参数的模块、该参数的目的是向 C 语言世界传递一个值。 如果你想做这件事、请告诉我、我将添加更多详细信息。
    此外、一旦您拥有自己的软件包和模块、可能还有其他不包含 cfg 脚本的选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、感谢您的回答。
    如果您能添加有关创建我们自己的模块的更多详细信息、我将不胜感激。
    另外、关于此模块、有一种方法(以及如何)可以确保其中的链接器脚本部分是最后一个要添加的部分(因此、在生成的自动链接器脚本中、我的模块发出的命令将是最后一个)?

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

    您可以在此处了解如何创建软件包和模块 - rtsc.eclipse.org/.../Lesson_6

    完成此操作后、您可以将以下内容添加到模块的 XDC 文件中:

      extern UINT symbol = link_symbol;
       配置 UINT *cVar;

    第一行声明有一些名为 link_symbol 的外部符号、您希望引用它。  您还可以为其创建一个名为'symball'的别名,这就是您将在 cfg 脚本中使用的别名。

    第二行定义了一个将接受符号值的参数、该参数将是对链接符号的 C 引用。

    现在、在 cfg 脚本中、您可以进行状态指示

    VAR Mod = XDC.module ("myPkg.myMod");
    Mod.cVar = Mod.symbol;

    假设软件包的名称是"myPkg"、模块的名称是"myMoD"。

    最后、您可以在 C 文件中找到它

    printf ("link_symbol =%d\n"、myMod_cVar);

    它应打印链接符号的值。

    我不确定您对链接器脚本的疑问。 如何向链接器脚本添加任何内容? 只需添加一个额外的链接器命令文件并定义:

    LINK_SYMBOL = 5;

    或者 somthing、然后您可以控制链接器命令文件的顺序、但这取决于您的构建环境如何控制它。 在 CCS 中、转到 Project Properties->CCS Build->Link Order 来调整顺序。  

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

    大家好、谢谢。
    我将尝试查看您发布的链接。
    至于链接器-我的意思是、我看到每个模块也有一个文件、其内容将添加到生成的链接器脚本中、 如何为我创建的模块定义这样一个文件、以及将这些模块文件内容添加到最终生成的链接器脚本的顺序是什么?

    谢谢
    家伙

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

    大家好、

    我可以将其标记为已解决吗?

    Todd

    [7/3 TI 认为已解决的标记]