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.

[参考译文] COFF 的#pragma 位置?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1009470/pragma-location-for-coff

您好!

我在编译器手册中看到#pragma LOCATION 仅适用于 EABI。

在 COFF 项目中、是否有一种同样简单的方法可以找到特定地址处的符号? 例如、闪存扇区的最后两个字中的 CRC。

我目前唯一能想到的解决方案是使用目标地址和长度2定义 MEMORY 指令:

  FLASHM            :origin = 0x0BC000、length = 0x001FFE  //片上闪存*/

  FLASHM_CRC :origin = 0x0BDFFE,length = 0x000002  //片上闪存*

然后是一个 SECTION 指令、用于将变量定向到 FLASHM_CRC。 这是我唯一的选择吗?

谢谢你。

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

    Kier、

    您的方法应该起作用。  我们有关这方面的专家今天就已经发言,可以就明天是否有更好的办法来做这件事发表意见。

    此致、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="479799" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1009470/pragma-location-for-coff "]例如,闪存扇区的最后两个字中的 CRC。

    另一种选择是将 CRC 放置在其自己的段中、并使用 该段的 HIGH 位置说明符。

    请参阅 《TMS320C28x 汇编语言工具 v20.12.0.STS 用户指南》中的第8.5.2.4节"使用高位置说明符控制放置"

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

    您建议的方法是合理的。  我将建议另一种更易于实施和理解的方法。

    在创建符号的 C 代码中,使用#pragma DATA_SECTION 的方式类似于...

    Fullscreen
    1
    2
    #pragma DATA_SECTION(special_global_variable, "odd_section_name")
    int special_global_variable;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    链接器命令文件的 SECTIONS 指令部分,编写类似于...的内容。

    Fullscreen
    1
    odd_section_name > 0x0BDFFE
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此代码会创建一个名为 ODD/SECTION 的输出段。  它由所有名为 ODD/SECTION _NAME 的输入段组成。  在本例中、只有一个这样的输入段。  它被分配给硬编码地址 0x0BDFFE。   有关本段中使用的术语的更多背景信息、请参阅文章 链接器命令文件入门的第一部分。

    谢谢、此致、

    乔治

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

    谢谢 George。 我认为这会很好。

x 出现错误。请重试或与管理员联系。