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.

[参考译文] MSP430F2350:在链接器脚本中将段与 UNION 语句叠加

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/745057/msp430f2350-overlay-sections-with-union-statement-in-the-linker-script

器件型号:MSP430F2350

为了减少 RAM 的使用、我尝试使用链接器脚本中的 UNION 语句将 remote_update.c 中的全局变量与固件复位中使用的全局变量叠加。 下面的操作正常、但我对此不满意。 如何告知链接器将 remote_update.c 中的全局变量与所有其他全局变量叠加、而不仅仅是 link.c 中的全局变量?

union:
{
.bss:P1:::{link.obj (.bss)}
.bss:P2::{remote_update.obj (.bss)}
> RAM
.bss :{}> RAM /*全局和静态变量 *

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

    请阅读文章 链接器命令文件入门的第一部分、尤其是为了了解术语输出部分。  union 是输出段的集合、所有这些段都从同一地址开始。  因此我建议您执行类似的操作...

    UNION
    {
    .bss_remote /*远程的全局和静态变量*/
    {
    remote_update.obj (.bss)
    }
    
    .bss /*所有其他全局和静态变量*/
    
    }>RAM 

    谢谢、此致、

    乔治

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

    谢谢 George、

    我尝试过类似的操作、但我遇到了语法错误。 我不得不稍微调整一下您的答案。 再次感谢。


    union: { .bss_remote:{ remote_update.obj (.bss)}//远程全局和静态变量*/ .bss/*所有其他全局变量和静态变量*/ }>RAM