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}
    
}
    
  1. //下面是 u-boot-1.1.6/board/smdk2410
  2. OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
  3. //指定输出可执行文件是elf格式,32位ARM指令,小端*/
  4. OUTPUT_ARCH(arm)
  5. //指定输出可执行文件的平台为ARM*/
  6. ENTRY(_start)
  7. //指定函数入口点为_start。cpu/arm920t/start.S中定义。
  8. SECTIONS
  9. {
  10. //指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置。必须使编译器知道这个地址,通常都是修改此处来完成*/
  11. . = 0x00000000; //从0x0位置开始*/
  12. . = ALIGN(); //代码以4字节对齐*/
  13. .text :
  14. {
  15. cpu/arm920t/start.o (.text) //代码的第一个代码部分*/
  16. *(.text) //其它代码部分*/
  17. }
  18. . = ALIGN();
  19. .rodata : { *(.rodata) } //指定只读数据段*/
  20. . = ALIGN();
  21. .data : { *(.data) } //指定读/写数据段*/
  22. . = ALIGN();
  23. .got : { *(.got) } //指定got段, got段式是uboot自定义的一个段, 非标准段*/
  24. . = .;
  25. //把__u_boot_cmd_start赋值为当前位置, 即起始位置*/
  26. __u_boot_cmd_start = .;
  27. //指定u_boot_cmd段, uboot把所有的uboot命令放在该段.*/
  28. .u_boot_cmd : { *(.u_boot_cmd) }
  29. //把__u_boot_cmd_end赋值为当前位置,即结束位置*/
  30. __u_boot_cmd_end = .;
  31. . = ALIGN();
  32. __bss_start = .; //把__bss_start赋值为当前位置,即bss段的开始位置*/
  33. .bss : { *(.bss) } //指定bss段*/
  34. _end = .; //把_end赋值为当前位置,即bss段的结束位置*/
  35. }

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. Bootstrap 辅组类和响应式工具

    1.情景文本颜色 //各种色调的字体 <p class="text-muted">Bootstrap 视频教程</p> <p class=" ...

  2. 防止sql注入,过滤敏感关键字

    //sql过滤关键字 public static bool CheckKeyWord(string sWord) { //过滤关键字 string StrKeyWord = @"select ...

  3. VS下如何调试多线程

    四步即可 1.打开多线程窗口,找到当前线程 此时,出现窗口如下: 2.右击任意位置,选中全部线程 3.停止全部线程 此时,线程状态如下: 4.单独启动当前线程:先单击当前线程,在点击启动按钮,如下红色 ...

  4. Region的预分区

    1.预分区的方式 共有四种方式 2.帮助信息 help 'create' 3.第一种方式 4.在页面上查看效果(端口号:60010) 5.第二种方式 )创建文件,并在文件中书写分区的值 )创建表 6. ...

  5. hadoop 2.4 伪分布式模式

    1.core-site.xml 在<configuration></configuration>中插入 <property> <name>fs.defa ...

  6. CSS优先级别计算

    a.b.c.d,可以以这四种等级为依据确定CSS选择器的优先级: a-----style 行内样式 个数  +1000 b-----id 个数+100 c-----类 个数+10 d-----类型个数 ...

  7. 行高不设单位的好处 line-height:1.8

    今天无意间看了到了line-height:1.8 感觉挺有意思的,然后翻了下行高的知识,发现还挺有文章的,不妨温故而知新. 先回顾下:顶线.中线.基线.底线 vertical-align是元素的垂直对 ...

  8. Android笔记:gson处理多层嵌套的复杂形式的json

    当一个Class的字段属性中包含另一个class时gson能正常处理吗? 最初看到网上有说使用static的说法 经验证是不需要的 直接当普通类来用就可以了. 直接使用gson.fromJson方法即 ...

  9. Cupid's Arrow---hdu1756(判断点与多边形的位置关系 模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1756 题意:中文题,套模板即可: /* 射线法:判断一个点是在多边形内部,边上还是在外部,时间复杂度为 ...

  10. Nginx负载均衡和LVS负载均衡的比较分析

    LVS和Nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用. 首先提醒,做技术切不可人云亦云,我云即你云:同时也不可太趋向保守,过于相信旧有方式而等别人来帮你 ...