OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)

lds文件位于board/samsung/smdk6410/u-boot-nand.lds下。

指定elf32-littlearm 格式,即指定输出文件是elf格式,32位ARM指令,小端模式;

紧接着OUTPUT_ARCH(arm) 指定的是输出可执行文件的运行平台为ARM;

ENTRY(_start)指定_start函数为程序的入口,_start在arch/arm/cpu/arm1176/start.S中定义,真正的启动运行地址段在编译时在board/samsung/smdk6410/config.mk中由CONFIG_SYSTEXT_BASE宏定义,即TEXT_BASE = 0x57E00000
 SECTIONS
{
. = 0x00000000; . = ALIGN();

SECTIONS开始定义程序段。

这里的点”.”,是定位器符号(GNU风格的一个典型)。

把定位器符号置为0x00000000 (若不指定, 则该符号的初始值为0)。

定系统启动从偏移地址零处开始。注意这只是个代码地址偏移值,真正的起始地址是由编译时指定的

CFLAGS指定的。

4字节对齐调整,那么ALIGN(0x10) 即16字节对齐后。

 .text      :
{
arch/arm/cpu/arm1176/start.o (.text)
board/samsung/smdk6410/libsmdk6410.o (.text)
*(.text)
}

.text为段名,这段脚本的意思是将所有输入文件的.text section,以及arch/arm/cpu/arm1176/start.o、board/samsung/smdk6410/libsmdk6410.o合并成一个.text section,该section的地址由定位器符号的值指定(字节对齐后定位器符号的值)。

 . = ALIGN();
.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }

修改当前定位寄存器,使的下面的.rodata输出节与4bytes对齐,定义.rodata输出节为所有文件的.rodata输入节,*表示通配符,(.rodata*)为所有rodata开头的段。

 .rel.dyn : {
__rel_dyn_start = .;
*(.rel*)
__rel_dyn_end = .;
}

用于用于动态连接的重定位信息。

 .dynsym : {
__dynsym_start = .;
*(.dynsym)
}

.dynsym动态符号表,这个表只保存了与动态链接相关的符号, __dynsym_start = . ;这是动态连接符号表的数据结构部分,须与.dynstr联用。

 .bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN();
__bss_end__ = .;
}

bss,为什么会有__rel_dyn_start(OVERLAY),不知道原因。

这里说明一点:在没有对位置技术器进行赋值时,位置计数器会动态的增加,比如. = .;这一条语句,此时位置技术器的位置就是从0开始加上代码段,只读数据段,数据段,got段的大小,紧接着之后的位置。

U-boot.lds文件分析的更多相关文章

  1. uboot的lds文件分析

    OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") ...

  2. lds 文件说明

    主要符号说明 OUTPUT_FORMAT(bfdname) 指定输出可执行文件格式. OUTPUT_ARCH(bfdname) 指定输出可执行文件所运行 CPU 平台 ENTRY(symbol) 指定 ...

  3. linux /boot目录下的文件分析

    一. Linux 启动流程 首先说一下Linux系统大概的启动过程: 1. 主机加电后, 系统首先加载BIOS, 这个BIOS是以写在主板上的. 2. BIOS启动后,执行一些例如开机自检,硬件初始化 ...

  4. /VAR/LOG/各个日志文件分析

     /VAR/LOG/各个日志文件分析 author:headsen  chen    2017-10-24   18:00:24 部分内容取自网上搜索,部分内容为自己整理的,特此声明. 1.   /v ...

  5. Spring Boot 入门详细分析

    推荐阅读: 我们为什么要学习 Spring Boot 我们搭建 Spring Boot 项目,可以使用 Spring 为我们提供的初始化网站,那个可能不太方便,今天呢,我们就来说说如何使用 IDEA ...

  6. u-boot.lds文件简介

    可执行文件由许多链接在一起的对象文件组成.对象文件有许多节,如文本.数据.init 数据.bss等.这些对象文件都是由一个称为 链接器脚本(*lds)的文件链接并装入的.这个链接器脚本的功能是将输入对 ...

  7. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  8. Omapl138中AIS文件分析(参照Using the OMAP-L138 Bootloader)(转)

    Omapl138中AIS文件分析(参照Using the OMAP-L138 Bootloader) 转载链接:https://blog.csdn.net/qq_40788950/article/de ...

  9. Spring Boot源码分析-配置文件加载原理

    在Spring Boot源码分析-启动过程中我们进行了启动源码的分析,大致了解了整个Spring Boot的启动过程,具体细节这里不再赘述,感兴趣的同学可以自行阅读.今天让我们继续阅读源码,了解配置文 ...

随机推荐

  1. 面向对象开发方式的开源硬件--.NET Gadgeteer

    说起.NET Gadgeteer,不得不先说一下.NET Micro Framework,虽然.NET Micro Framework已经有十几年的发展历史了,但是在全球范围内,.NET Micro ...

  2. T4 模板 : 一种提升ASP.NET MVC开发速度方法

    最近由于需要在框架中提供一些自定义模板的功能,找到了一篇博客,可惜似乎是翻译工具直接翻的,读不通顺,就试着自己翻译下,我不会完全翻译原文的句子,可能会对原文进行小范围的我认为更合适的句子并添加些注释, ...

  3. 为什么在Mac中无法用k web运行ASP.NET 5程序

    k web对应的命令如下: "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebLi ...

  4. Wix 安装部署(五) Bootstrapper 捆绑安装

    Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来.可惜有很多加了锁的功能在InstallShield Limited E ...

  5. iOS——Swift开发中的单例设计模式(摘译,非原创)

    最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子 ...

  6. HTTP协议之chunk编码(分块传输编码

    Transfer-Encoding: chunked 表示输出的内容长度不能确定,普通的静态页面.图片之类的基本上都用不到这个. 但动态页面就有可能会用到,但我也注意到大部分asp,php,asp.n ...

  7. duilib进阶教程 -- 设置资源路径 (15)

    在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML ...

  8. Atitit.基于dsl的methodinvoker

    Atitit.基于dsl的methodinvoker V2 new dyn  invoke V3 plan Meth chain Prj  cms methd_invok.bat rem a  sta ...

  9. paip.输入法编程---词库多意义条目分割 python实现.

    paip.输入法编程---词库多意义条目分割 python实现. ==========子标题 python mysql 数据库操作 多字符分隔,字符串分割 字符列表循环  作者 老哇的爪子 Attil ...

  10. Xcode7

    Xcode 7有什么新的特性.Xcode中7包含你需要创建的iPhone,iPad,Mac和Apple关注惊人的应用程序的一切.Swift编程语言已更新,现在比以往任何时候都更快,具有强大的功能,使你 ...