嵌入式Linux引导过程之1.1——Xloader的xloader.lds

本文详细分析了嵌入式Linux系统中Xloader的链接脚本xloader.lds,解释了OUTPUT_FORMAT、OUTPUT_ARCH、ENTRY等关键定义,以及.text、.rodata、.data、.bss等段的存储配置,揭示了程序从XLOADER_ENTRY标号开始执行的过程。
摘要由CSDN通过智能技术生成

--by FeCen

本文中的所有代码版本都是基于ST的SpearPlus开发板的。

xloader是在系统上电之后,执行完ROM中的frimware后最先开始执行的用户程序,它的体积很小,执行的功能也很简单,主要是对系统时钟以及外部SDRAM进行初始化,初始化完成之后就检查Flash中的uboot image是否准备好,如果准备好了就将Flash中的uboot image根据image header中指定的load address加载到外部SDRAM中,然后就跳转到uboot执行代码。

这里,我试图从头开始,在源代码级别上来分析整个系统的引导过程。

像Xloader或者uboot之类的程序,并不像我们平常写的应用程序那样,程序的入口函数直接找main函数就行。对于这种系统程序,在最开始看代码,尤其是要找到最开始执行的代码的位置的时候,最好的一个方法就是找到整个工程的.lds文件,也就是链接脚本文件(linker loader script)。它定义了整个工程在编译之后的链接过程,以及各个输入目标文件中的各个段在输出目标文件中的分布。详细的关于lds文件的介绍可以参考 gnu的在线文档:http://sourceware.org/binutils/docs/ld/index.html。其中的第三节Linker Script对链接脚本文件进行了介绍。

现在,我们首先开看一看xloader.lds的代码:

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(XLOADER_ENTRY)
bootloader阶段是启动计算机的第一个阶段,主要负责硬件的初始化和加载操作系统。在实际的系统中,bootloader阶段可以分为多个部分,例如xloader、UEFI、BL2和BL3等。下面分别对它们进行简单的介绍: 1. xloader:xloader是ARM架构下的一种bootloader,主要负责初始化硬件和加载操作系统。xloader一般由开发者编写,可以根据需要进行定制。在启动过程中,xloader会首先运行,然后将控制权交给操作系统内核。 2. UEFI:UEFI是一种新型的固件标准,可以替代传统的BIOS。UEFI提供了更强大的功能和更高的安全性,可以在启动阶段提供更多的可选项和更好的用户体验。在ARM架构中,UEFI也可以作为bootloader的一部分。UEFI的启动方式与传统BIOS不同,需要重新编写启动程序。 3. BL2:BL2是bootloader的第二个阶段,也是xloader的一部分。BL2主要负责初始化硬件和加载操作系统,与xloader的功能类似。BL2一般由开发者编写,可以根据需要进行定制。 4. BL3:BL3是操作系统内核,也是bootloader的最后一个阶段。BL3负责启动操作系统和管理硬件资源,是整个系统的核心部分。在ARM架构中,BL3一般由操作系统厂商或开发者编写。 综上所述,bootloader阶段可以分为多个部分,例如xloader、UEFI、BL2和BL3等。不同部分的功能和作用略有不同,但它们都是启动计算机的必要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值