> region1 AT > region2 在 LD 链接描述文件中是什么意思?
What does > region1 AT > region2 mean in an LD linker script?
我正在尝试了解第三方链接描述文件。
在脚本的开头,它定义了两个内存(使用 MEMORY {...}),称为 iram 和 dram。
然后定义了几个具有以下语法的部分:
.data{
...
} > dram AT > iram
我知道最后的 > dram 意味着将该部分(在本例中为 .data)定位在 dram 区域中。但是我不明白 "AT > iram" 是什么意思。
您的示例中 .data 定义的 dram 部分指定了 .data 部分的虚拟内存地址 (VMA),而 iram 部分指定了加载内存地址 (LMA)。
VMA 是程序为 运行 时该部分的地址。 LMA是加载程序时的段地址。例如,这可用于为非易失性存储器中的全局变量提供初始值,这些初始值在程序加载期间复制到 RAM。
更多信息也可以在 GNU 链接器 ld 的手册中找到:https://sourceware.org/binutils/docs/ld/Output-Section-Attributes.html#Output-Section-Attributes
我正在尝试了解第三方链接描述文件。
在脚本的开头,它定义了两个内存(使用 MEMORY {...}),称为 iram 和 dram。
然后定义了几个具有以下语法的部分:
.data{
...
} > dram AT > iram
我知道最后的 > dram 意味着将该部分(在本例中为 .data)定位在 dram 区域中。但是我不明白 "AT > iram" 是什么意思。
您的示例中 .data 定义的 dram 部分指定了 .data 部分的虚拟内存地址 (VMA),而 iram 部分指定了加载内存地址 (LMA)。
VMA 是程序为 运行 时该部分的地址。 LMA是加载程序时的段地址。例如,这可用于为非易失性存储器中的全局变量提供初始值,这些初始值在程序加载期间复制到 RAM。
更多信息也可以在 GNU 链接器 ld 的手册中找到:https://sourceware.org/binutils/docs/ld/Output-Section-Attributes.html#Output-Section-Attributes