完善链接脚本的注解

    百图画鸿蒙 + 百文说内核 + 百万注源码  => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 9b7c33c9
......@@ -84,9 +84,9 @@ OUTPUT_ARCH(arm)
MEMORY //链接器的默认配置允许分配所有可用内存,描述链接器可以使用哪些内存区域
{ //ram,sram为存储区域的名字,可以随意取
ram : ORIGIN = KERNEL_VADDR_BASE, LENGTH = KERNEL_VADDR_SIZE //用户空间范围
ram : ORIGIN = KERNEL_VADDR_BASE, LENGTH = KERNEL_VADDR_SIZE //内核运行空间范围
sram : ORIGIN = 0x40000000, LENGTH = 0x1000
user_ram : ORIGIN = 0x1000000, LENGTH = 0x100000 //用户空间内存范围 USER_ASPACE_BASE ,此大小不是真正最后映射到用户空间的大小
user_ram : ORIGIN = 0x1000000, LENGTH = 0x100000 //用户运行空间范围 USER_ASPACE_BASE ,此大小不是真正最后映射到用户空间的大小
}
SECTIONS
{
......@@ -95,8 +95,8 @@ SECTIONS
.ram_vectors TEXT_BASE : { //内核代码段开始位置
__ram_vectors_vma = .; //定位到当前位置,即TEXT_BASE处
KEEP (*(.vectors)) //告诉链接器 强制保留所有输入文件中的 .vectors
} > ram
__ram_vectors_lma = LOADADDR(.ram_vectors);//加载地址和链接地址一致,说明内核设计者希望从加载地址处运行指令
} > ram //中断向量是开机代码的位置 , 可翻看 鸿蒙内核源码分析(开机启动篇) (中断管理篇)
__ram_vectors_lma = LOADADDR(.ram_vectors);//启动时对向量的初始化,加载地址和链接地址一致,说明内核设计者希望从加载地址处运行指令
}
//LMA:加载存储地址,指加载到存储器的地址,即加载或烧写到哪里
//VMA:虚拟存储地址,也就是链接地址,即代码和数据运行的时候应在哪里
......
......@@ -34,7 +34,7 @@
GNU 链接脚本语法 https://sourceware.org/binutils/docs/ld/LD-Index.html
*/
ENTRY(reset_vector) /*指定程序入口地址*/
INCLUDE board.ld // > ram 指的是要大于 ram这个地址, ram在board.ld中定义
INCLUDE board.ld // > ram 指放入ram这个地址范围中, ram在board.ld中定义
/* SECTIONS 是脚本中最重要的命令,所有的LD脚本都会有这个命令,用来指定如何将输入文件映射到输出文件等等 */
SECTIONS
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册