一、链接脚本的解析

注意:
① 链接脚本中首先放所有程序的代码段text,那么这些程序的代码段按照什么样的顺序排列呢?
在Makefile中有这些程序的排序

② 这里的data数据段设置了加载地址0x800,表明在生成的bin文件中,data段在0x800的位置,而前面没有指定加载地址的text代码段和rodata只读数据段存放在bin文件中的0地址开始的位置。
③ data数据段的重定位功能由前面的text代码段实现。
④ bss段的runtime addr运行地址紧接着data段。
⑤ bin文件、ELF文件中都不存放bss段。

核心观点:程序在运行时应该位于它的runtime addr(或relocate addr),这两个地址又叫做链接地址。
ELF文件:

本文介绍了嵌入式Linux中链接脚本的作用和解析,包括程序代码段的排列顺序、数据段的加载地址、bss段的处理。通过实例展示了如何改进链接脚本以优化代码的读写效率,特别是在处理SDRAM时,利用ldr和str命令提高效率。同时,文章揭示了因未正确调整BSS段导致的全局变量破坏问题,并提供了修复方案。
最低0.47元/天 解锁文章
1161





