【发布时间】:2021-08-08 16:24:11
【问题描述】:
嵌入式设备有两个 SRAM 区域。首先是 0x20000000,长度为 16k。然后在 0x20040000 长度 96k。在应用程序中,生成的 .bss 部分大小为 102k,因此它不能完全适合任一 RAM 区域。它需要在两个区域之间进行拆分。如何在 .ld 链接器脚本中做到这一点?
我知道两个很笨拙的选择。
选项 A:在脚本中按名称手动选择对象并将它们分成两个部分。有了这个选项,我觉得我正在手动执行链接器应该执行的操作。
选项 B:将属性放置到源代码中以使某些对象成为特殊的 .bss2 部分。这个比选项 A 还要糟糕。
我希望链接器自动优化地跨两个内存区域拆分对象。我知道至少 IAR 链接器可以在没有任何手动工作的情况下以最佳方式完成它。
【问题讨论】:
-
您在链接器文档和/或互联网上的研究揭示了什么?
-
这里有重复的问题没有答案:stackoverflow.com/questions/15156201/…
标签: gcc linker embedded ld linker-scripts