非连续内存区域的 gnu 链接器部分

问题描述 投票:0回答:2

我正在尝试编写一个链接器脚本以将一个部分内容写入两个不连续的内存区域。

我在这个邮件列表中找到了一个关于此的旧线程: “ld 链接描述文件和非连续内存区域” http://sourceware.org/ml/binutils/2012-01/msg00188.html

我知道 C28x 编译器针对此问题的一个功能是 将各个部分拆分为多个内存段:(使用 or 函数)

SECTIONS { .text: { *(.text) } >> FLASH1|闪存3}

此处描述: http://processors.wiki.ti.com/index.php/C28x_Compiler_-_Understanding_Linking

我已经尝试过但没有成功。 目前我必须手动填充第一个内存区域。但很难搜索代码女巫的部分 我以后不会改变,完全适合并填满第一个内存区域。

GNU 链接器中是否实现了此类功能?或者有人有更好的主意 我怎么解决这个问题?

memory linker gnu regions
2个回答
1
投票

我认为最简单的方法(也许是唯一的方法)是将您的部分分成两个部分,然后将一个部分分配给第一个内存区域,将第二个部分分配给第二个内存区域。

您可能已经看到了这一点,但这是链接脚本的非常简洁的描述: http://www.math.utah.edu/docs/info/ld_3.html


0
投票

看来较新版本的 GNU LD 现在支持此功能:

必须添加的标志是:

-Wl,--enable-non-contiguous-regions

可找到的文档:

Excerpt from the Documentation

© www.soinside.com 2019 - 2024. All rights reserved.