lds文件与scatter文件相似都是决定一个可执行程序的各个段的存储位置,以及入口地址,这也是链接定位的作用。U-boot的lds文件说明如下:
      SECTIONS{
       ...
       secname start BLOCK(align)(NOLOAD):AT(ldadr)
            {contents}>region:phdr = fill
       ...
       }
       secname和contents是必须的,前者用来命名这个段,后者用来确定代码中的什么部分放在这个段,以下是这个描述中的一些关键字的解释。
       1、secname :段名
       2、contents :决定哪些内容放在本段,可以使整个目标文件,也可以是目标文件中的某段(代码段,数据段等)
       3、start:是段的重定位地址,本段连接(运行)的地址, 如果代码中有位置无关指令,程序运行时这个段必须放在这个地址上,start可以用任意一种描述地址的符号来描述。
       4、AT(ldar):定义本段存储(加载)的地址,如果不使用这个选项,则加载地址等于运行地址通过这个选项可以控制各个分段分别保存于输出文件中的不同位置
  例如:
       /*nand.lds*/
     SECTIONS {
      first 0x00000000:{head.o init.o}
      second 0x30000000:AT(4096) {main.o}
    
}
    
   //下面是   u-boot-1.1.6/board/smdk2410
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
//指定输出可执行文件是elf格式,32位ARM指令,小端*/
OUTPUT_ARCH(arm)
//指定输出可执行文件的平台为ARM*/
ENTRY(_start)
//指定函数入口点为_start。cpu/arm920t/start.S中定义。
SECTIONS
{
//指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。必须使编译器知道这个地址,通常都是修改此处来完成*/
. = 0x00000000; //从0x0位置开始*/
. = ALIGN(); //代码以4字节对齐*/
.text :
{
cpu/arm920t/start.o (.text) //代码的第一个代码部分*/
*(.text) //其它代码部分*/
}
. = ALIGN();
.rodata : { *(.rodata) } //指定只读数据段*/
. = ALIGN();
.data : { *(.data) } //指定读/写数据段*/
. = ALIGN();
.got : { *(.got) } //指定got段, got段式是uboot自定义的一个段, 非标准段*/
. = .;
//把__u_boot_cmd_start赋值为当前位置, 即起始位置*/
__u_boot_cmd_start = .;
//指定u_boot_cmd段, uboot把所有的uboot命令放在该段.*/
.u_boot_cmd : { *(.u_boot_cmd) }
//把__u_boot_cmd_end赋值为当前位置,即结束位置*/
__u_boot_cmd_end = .;
. = ALIGN();
__bss_start = .; //把__bss_start赋值为当前位置,即bss段的开始位置*/
.bss : { *(.bss) } //指定bss段*/
_end = .; //把_end赋值为当前位置,即bss段的结束位置*/
}

uboot.lds (一)的更多相关文章

  1. U-Boot GOT表分析和u-boot.lds解读

    转自:http://blog.sina.com.cn/s/blog_70dd16910100zab6.html u-boot-2010.09/arch/powerpc/cpu/mpc86xx/star ...

  2. arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression

    在裁剪uboot的时候出现下面错误: LDS u-boot.lds LD u-boot arm-linux-: ignoring invalid character `#' in expression ...

  3. 五、u-boot 启动流程---u-boot.lds

    5.1 u-boot.lds  链接脚本分析 uboot 编译出来的第一个链接脚本就是执行 u-boot.lds 链接脚本,去掉里面无用的和没有定义的,进行分析. /* 配置头文件,自动生成的,包含芯 ...

  4. u-boot.lds文件简介

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

  5. u-boot简单学习笔记(二)——AR9331 uboot.lds分析

    最开始系统上电后 从uboot.lds开始引导 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", ...

  6. U-boot.lds文件分析

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

  7. u-boot.lds 链接脚本分析(hi3515)

    目录:/u-boot_hi3515/board/hi3515v100 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm& ...

  8. 第2阶段——编写uboot之硬件初始化和制作链接脚本lds(1)

    目标: 1.关看门狗 2.设置时钟 3.初始化SDRAM (初始化寄存器以及清除bss段) 4.重定位 (将nand/nor中代码COPY到链接地址上,需要初始化nandflash,读flash) 5 ...

  9. uboot的lds文件分析

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

随机推荐

  1. 文件操作_菜单<代码>

    info文件中的内容为: { "河北省": {"石家庄": {"无极县":"", "高邑县":&qu ...

  2. shopping cart<代码>

    i = ["iphone 6000", "bicycle 1000", "coffee 50", "python book 100 ...

  3. magento email模板设置相关

    magento后台 可以设置各种各样的邮件,当客户注册.下单.修改密码.邀请好友等等一系列行为时,会有相关信息邮件发出. 进入magento后台,System > Transactional E ...

  4. JS判断浏览器是否安装flash插件

    1.直接判断是否有flash插件 var myFlash = (function(){ if(typeof window.ActiveXObject != "undefined") ...

  5. c#中DropDownList控件绑定枚举数据

    c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = , 皇子 = , 大头 = , 剑圣 = , } 如果 ...

  6. http://blog.csdn.net/qiutongyeluo/article/details/52468081

    http://blog.csdn.net/qiutongyeluo/article/details/52468081

  7. 多台CentOS服务器时间同步(NTP时间同步)(转)

    1.用ntpdate从时间服务器更新时间 如果你的linux系统根本没有ntpdate这个命令 yum install ntp 安装完了之后,你不要做什么配置,也不需要,直接测试一下 [root@lo ...

  8. 删除docker私有库镜像

    不断往私库里push image,发现里面大多数镜像已经版本过旧,用不到了,所以决定删除私库里那些没用的镜像. Docker registry默认提供了一个仓库清理的url,如下:可以删除镜像ubun ...

  9. mkdir

    1,mkdir Problem: You want to use the mkdir() function from the sys/stat.h POSIX header, but you don’ ...

  10. MySQL学习笔记——存储引擎的索引特性