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.

[参考译文] MSPM0G1507:关于链接器命令文件的格式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1640122/mspm0g1507-regarding-the-format-of-the-linker-command-file

部件号: MSPM0G1507

您好、

我们使用的是 MSPM0G1507SPTR。  我们正在考虑在启动代码中执行我们自己的内存初始化、而不是完全依赖_c_int00 ()。

在链接器命令文件中、我们尝试使用 LOADADDR (.data) 来获取.data 段的闪存加载地址、但会导致链接器错误。

我们的理解是 LOADADDR() 是 GCC 链接器脚本语法、不能在 TI 链接器命令文件中使用。
对于 TI 链接器命令文件、我们是否应该改用 LOAD_START ()、RUN_START ()、RUN_END () 等?

例如、以下方法是否正确?

数据: palign(8)

  *(.data)
  *(.data.*)
} LOAD = FLASH、RUN = SRAM、
 LOAD_START (_sidata)、
 run_start (_sdata)、
 run_end (_edata)

BSS : palign(8)

  *(.bss)
  *(.bss.*)
} RUN = SRAM、
 RUN_START (_SBSS)
 RUN_END (_ebss)

在本例中、我们计划在启动代码中将.data 从_sidata 复制到_sdata–_edata、并将.bss 从_sbss 清除为_ebss。  您能否确认此理解是否正确?

谢谢、
Conor

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

    您有任何更新吗?

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

    您好 Connor、是的、",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 0px;="" text-decoration:="" none;="" border-bottom:="" 0px="" rgb(230,="" 232,="" 240);"="">您的理解是正确的。 由于您使用的是 TI Arm Clang 链接器、因此 LOADADDR() 不支持特定于 GCC 的函数。 使用内置链接运算符的建议方法是为自定义启动例程检索这些地址的标准方法。 我建议查看 此设置 以确保符合自定义存储器初始化要求。 希望这对您有所帮助!

    -布赖恩