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

指定输出的格式是32bits ARM 小端

OUTPUT_FORMAT原型为 OUTPUT_FORMAT(default, big, little),在链接的时候,如果使用了-EB的命令行参数,则使用这里的big参数指定的字节序,如果使用了-EL的命令行参数,则使用这里的little参数指定的字节序,如果没有使用任何命令行参数,则使用这里的default参数指定的字节序。由uboot.lds中的定义可见,不管在链接的时候使用了何种命令行参数,输出的目标文件都是使用elf32-littlearm方式的字节序。

28 OUTPUT_ARCH(arm)

指出输出可执行文件的平台是armd

29 ENTRY(_start)

指定输出可执行文件的起始代码段是_start

30 SECTIONS
31 {
32     . = 0x00000000;
33
34     . = ALIGN(4);
35     .text   :
36     {
37         cpu/arm_cortexa8/start.o    (.text)
38         *(.text)
39     }

32行对定位计数器进行赋值,.=0x00000000对定位计数器初始化为0x0

34 行使得当前定位计数器向四字节对齐

35~39定义了一个输出节 .text,冒号是语法需要。.text后花括号中,列出了所有应当放到这个输出节中的输入节的名字,*是一个通配符,匹配任何文件名,

37行表示要把/cpu/arm_cortexa8/start.o中的.text输入节放入这个输出文件的.text输出节。

38行*(.text)的意思是所有的输入文件中的.text输入节;

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

41 修改当前定位寄存器,使的下面的.rodata输出节与4bytes对齐

42 定义.rodata输出节为所有文件的.rodata输入节

44     . = ALIGN(4);
45     .data : { *(.data) }
46
47     . = ALIGN(4);
48     .got : { *(.got) }

44 ~ 48 .data和.got输出节的定义类似于.rodata,要求这两个输出节要以4 bytes对齐

50     __u_boot_cmd_start = .;
51     .u_boot_cmd : { *(.u_boot_cmd) }
52     __u_boot_cmd_end = .;

50 把__u_boot_cmd_start设置为当前定位技术器,即.u_boot_cmd节的起始位置

52 把__u_boot_cmd_end设置为当前定位计数器,即.u_boot_cmd节的结束位置

51 定义.u_boot_cmd输出节为所有输入文件的.u_boot_cmd输入节

54     . = ALIGN(4);
55     __bss_start = .;
56     .bss : { *(.bss) }
57     _end = .;
58 }
定义.bss输出节,并且把__bss_start定义为__bss_start输出节的起始位置,把_end定义为__bss节的结束位置

转载于:https://blog.51cto.com/7090376/1264611

u-boot.lds 文件分析相关推荐

  1. U-Boot的LDS文件分析

    U-Boot.lds文件分析: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32- ...

  2. 全志H3 uboot传参到内核分析,boot.scr文件分析

    传参过程 uboot倒计时结束,默认以bootcmd来启动内核,它等于 fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr} 上面两 ...

  3. 链接脚本.lds文件分析

    本篇文章是我特地转载的,以作为我博客中其他文章的基本知识的补充,同时也方便自己学习使用.本篇详细全面的介绍了连接脚本lds文件的介绍与使用,这个脚本文件很重要,在最后的链接阶段,决定了各个文件的位置安 ...

  4. U-boot.lds文件分析

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

  5. MIT6.828 boot.S文件分析

    #include <inc/mmu.h># Start the CPU: switch to 32-bit protected mode, jump into C. # The BIOS ...

  6. FreeNOS-kernel目录下boot.S、链接脚本kernel.ld文件分析(四)

    上节提到过引导程序在将控制权交给内核时,相关寄存器状态已确定,并且程序入口地址为boot.S文件中的_start,下个面就来看看boot.S文件. kernel目录下文件如下: 其中Sconscrip ...

  7. uboot.lds 链接文件分析

    lds文件与scatter文件相似都是决定一个可执行程序的各个段的存储位置,以及入口地址,这也是链接定位的作用. U-boot的lds文件说明如下: SECTIONS{...secname start ...

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

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

  9. u-boot.lds文件详解

    网上大部分u-boot.lds文件的分析大部分都是千遍一律,例如下面就是本人在网上找到的关于u-boot.lds的资料. OUTPUT_FORMAT("elf32-littlearm&quo ...

最新文章

  1. ftp 的三种数据传输模式
  2. 小米手机调用系统截图挂掉问题
  3. 【LiteOS】STM32F103-LiteOS移植教程(详细篇)
  4. idea设置类多行显示_IDEA 常用设置
  5. JS——scroll动画
  6. 21个php常用方法汇总
  7. Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
  8. OpenStack Queens版本Security项目介绍
  9. 短视频系统+购物直播APP开发方案
  10. 圣思园Java视频 学习笔记
  11. Win10显示无网络(无Internet连接)但能上网的解决办法
  12. 模拟实现ATM系统——Java
  13. Linux 服务器 OOM 分析
  14. 请在mysql配置文件修sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
  15. 计算机桌面图片唐诗,唐诗高清壁纸
  16. NoSQL学习笔记之MongoDB-01初识NoSQL
  17. wine安装迅雷、qq2009
  18. android stk 卡号切换,[技巧]mpx200如何使用一卡双号或者一卡多号
  19. 解决mac删除launchpad中无法正常移除的图标
  20. 【guava】 谷歌guava工具包的常用方法 双key的map 、驼峰转下划线等小结

热门文章

  1. c语言电子期末考试题,山东师范大学11-12电子C语言期末试题
  2. java实现网站错别字搜索对的结果_Java问题:根据输入的关键词查询出搜索结果,再将搜索结果中的关键词用红色显示?这个怎么实现?...
  3. 购物商城Web开发第一天
  4. 数据加解密和数据签名验签
  5. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟
  6. 微软 .net 你更新这么快IDE vs2015 、语法糖 6.0、framework、‘吹得这么牛,然并用...
  7. 在Windows Server 2012中配置NAT代理服务器
  8. QQ无法安装,不用着急,用毒霸2011来解决
  9. 时尚的基因是创新 -- 旺旺平台产品线员工大会即兴发言提要
  10. 使用docker的mysql镜像