u-boot.lds 文件分析
指定输出的格式是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 文件分析相关推荐
- U-Boot的LDS文件分析
U-Boot.lds文件分析: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32- ...
- 全志H3 uboot传参到内核分析,boot.scr文件分析
传参过程 uboot倒计时结束,默认以bootcmd来启动内核,它等于 fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr} 上面两 ...
- 链接脚本.lds文件分析
本篇文章是我特地转载的,以作为我博客中其他文章的基本知识的补充,同时也方便自己学习使用.本篇详细全面的介绍了连接脚本lds文件的介绍与使用,这个脚本文件很重要,在最后的链接阶段,决定了各个文件的位置安 ...
- U-boot.lds文件分析
1 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm" ...
- MIT6.828 boot.S文件分析
#include <inc/mmu.h># Start the CPU: switch to 32-bit protected mode, jump into C. # The BIOS ...
- FreeNOS-kernel目录下boot.S、链接脚本kernel.ld文件分析(四)
上节提到过引导程序在将控制权交给内核时,相关寄存器状态已确定,并且程序入口地址为boot.S文件中的_start,下个面就来看看boot.S文件. kernel目录下文件如下: 其中Sconscrip ...
- uboot.lds 链接文件分析
lds文件与scatter文件相似都是决定一个可执行程序的各个段的存储位置,以及入口地址,这也是链接定位的作用. U-boot的lds文件说明如下: SECTIONS{...secname start ...
- Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...
- u-boot.lds文件详解
网上大部分u-boot.lds文件的分析大部分都是千遍一律,例如下面就是本人在网上找到的关于u-boot.lds的资料. OUTPUT_FORMAT("elf32-littlearm&quo ...
最新文章
- ftp 的三种数据传输模式
- 小米手机调用系统截图挂掉问题
- 【LiteOS】STM32F103-LiteOS移植教程(详细篇)
- idea设置类多行显示_IDEA 常用设置
- JS——scroll动画
- 21个php常用方法汇总
- Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
- OpenStack Queens版本Security项目介绍
- 短视频系统+购物直播APP开发方案
- 圣思园Java视频 学习笔记
- Win10显示无网络(无Internet连接)但能上网的解决办法
- 模拟实现ATM系统——Java
- Linux 服务器 OOM 分析
- 请在mysql配置文件修sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
- 计算机桌面图片唐诗,唐诗高清壁纸
- NoSQL学习笔记之MongoDB-01初识NoSQL
- wine安装迅雷、qq2009
- android stk 卡号切换,[技巧]mpx200如何使用一卡双号或者一卡多号
- 解决mac删除launchpad中无法正常移除的图标
- 【guava】 谷歌guava工具包的常用方法 双key的map 、驼峰转下划线等小结
热门文章
- c语言电子期末考试题,山东师范大学11-12电子C语言期末试题
- java实现网站错别字搜索对的结果_Java问题:根据输入的关键词查询出搜索结果,再将搜索结果中的关键词用红色显示?这个怎么实现?...
- 购物商城Web开发第一天
- 数据加解密和数据签名验签
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟
- 微软 .net 你更新这么快IDE vs2015 、语法糖 6.0、framework、‘吹得这么牛,然并用...
- 在Windows Server 2012中配置NAT代理服务器
- QQ无法安装,不用着急,用毒霸2011来解决
- 时尚的基因是创新 -- 旺旺平台产品线员工大会即兴发言提要
- 使用docker的mysql镜像