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.

[参考译文] TMS570LC4357:如何将.cinit 段与其他段合并到单个输出段中

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1460237/tms570lc4357-how-to-combine-the-cinit-section-with-other-sections-into-a-single-output-section

器件型号:TMS570LC4357

工具与软件:

大家好、团队:

我正在尝试.cinit在链接器脚本中将该段与其他段合并到单个输出段中。 下面是我的SECTIONS配置的相关部分:

SECTIONS {
combined_section: {
*(.cinit)
*(other_section)
} > MEMORY_REGION
}

但是、在构建过程中、我会收到以下警告:

warning #10068-D: no matching section
warning #10247-D: creating output section ".cinit" without a SECTIONS specification

似乎 未识别*(.cinit)。

对于解决此问题的任何建议、我将不胜感激。

此致、

Hanson Liu

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

    我想您需要以下语法:

    SECTIONS
    {
        GROUP : {
        .cinit : {
        } palign(8)
        .other_section : {
        } palign(8)
        } > MEMORY_REGION
    }

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

    尊敬的 Kier:

    感谢您的答复。 不过、恐怕它无法完全解决我的问题。 在寻求帮助之前、我已经尝试了您建议的语法。 虽然两个语法都运行正常、但当我尝试使用RUN_START()RUN_END()语法时、我的问题会特别出现。

    这些操作被设计为单独使用每个段、这意味着GROUP语法不适用。 因此、我需要将.cinit和组合.other_section到一个部分中、而不是将它们组合在一起。 此外、我不希望分配.cinit给单个隔离部分。

    如果我的初始帖子没有清楚传达问题的细节、我深表歉意。 如果您能提供任何建议或指导、我将不胜感激。

    此致、
    Hanson Liu

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

    但.cinit 已经是输出段。 您的语法适用于输入段。 它不起作用、因为没有名为.cinit 的输入段。 这就是您看到警告的原因。

    因此、你应该制作一个名为"combined_section"的输出段、然后使用 GROUP 将其与.cinit (已经是输出段)组合。

    这些操作设计为单独使用每个节、这意味着GROUP语法不适用

    我的编译器、至少事实并非如此。 我可以在 GROUP 语句之后使用 RUN_START 和 RUN_END。 例如:

    生成的映射文件显示__BSS_START =_dummy_group_start_label 、但_dummy_group_end_label 位于堆栈末尾:

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

    谢谢你。 我的问题得到了解决。 顺便说一下、是否有办法将 crc_table ()用于 整个 GROUP?   

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

    不用客气。 很抱歉、我没有使用 crc_table()的经验。 也许最好为此主题提出新的申请?

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

    您是否检查过编译器手册? 在我的 TI Arm Clang 编译器手册中、显示了 一个 示例:

    10.9.2.在 MEMORY 指令中使用 crc_table ()运算符—《TI Arm Clang 编译器工具用户指南》

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

    我已经通过另一种方式解决了我的问题。 我查看了编译器手册、 似乎不支持 crc()。 仅供参考:
    * ARM 汇编语言工具 v20.2.0.LTS 用户指南(修订版 Z)