Linker 什么是>;地区1 AT>;区域2在LD链接器脚本中是什么意思?
我正在尝试理解第三方链接器脚本 在脚本的开头,它定义了两个名为iram和dram的内存(使用内存{…}) 然后定义了几个具有以下语法的部分:Linker 什么是>;地区1 AT>;区域2在LD链接器脚本中是什么意思?,linker,Linker,我正在尝试理解第三方链接器脚本 在脚本的开头,它定义了两个名为iram和dram的内存(使用内存{…}) 然后定义了几个具有以下语法的部分: .data{ ... } > dram AT > iram 我知道末尾的>dram意味着将该部分(.data)定位在dram区域中。但是我不明白“AT>iram”是什么意思。示例中.data定义的dram部分指定.data部分的虚拟内存地址(VMA),而iram部分指定加载内存地址(LMA) VMA是程序运行时节的地址。LMA是程序加载时节的
.data{
...
} > dram AT > iram
我知道末尾的>dram意味着将该部分(.data)定位在dram区域中。但是我不明白“AT>iram”是什么意思。示例中.data定义的dram部分指定.data部分的虚拟内存地址(VMA),而iram部分指定加载内存地址(LMA) VMA是程序运行时节的地址。LMA是程序加载时节的地址。例如,这可用于为非易失性存储器中的全局变量提供初始值,这些变量在程序加载期间复制到RAM中
更多信息也可以在GNU链接器ld的手册中找到:使用此链接器脚本的启动代码将.data部分从ROM复制到RAM。所以,如果我理解正确,当你知道这将要发生时,你需要>ram AT>rom参数吗?很抱歉,我看不到这个链接。还有一件事,“地址是程序加载时的部分地址”中的句子你指的是LMA,对吗?是的,对不起,我的意图是写LMA(我编辑了上面的答案)。另一个stackoverflow问题也解释了一个类似的示例:。