我正在尝试了解第三方链接器脚本。
在脚本的开头,它定义了两个内存(使用 MEMORY {...}),称为 iram 和 dram。
然后定义了一些具有以下语法的部分:
.data{
...
} > dram AT > iram
Run Code Online (Sandbox Code Playgroud)
我知道 > 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
| 归档时间: |
|
| 查看次数: |
4908 次 |
| 最近记录: |