嵌入式系统的BootLoader

嵌入式系统的BootLoader

ID:47247933

大小:92.50 KB

页数:11页

时间:2019-08-15

嵌入式系统的BootLoader_第1页
嵌入式系统的BootLoader_第2页
嵌入式系统的BootLoader_第3页
嵌入式系统的BootLoader_第4页
嵌入式系统的BootLoader_第5页
资源描述:

《嵌入式系统的BootLoader》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式系统的BootLoader3.1 BootLoader概述一个嵌入式Linux系统从软件的角度看通常分为4个层次:引导加载程序、Linux内核、文件系统、用户应用程序。引导加载程序是系统加电后运行的第一段代码。大家熟悉的PC中的引导程序一般由BIOS和位于MBR的操作系统BootLoader(例如LILO或者GRUB)一起组成。然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。在嵌入式Linux中,引导加载程序即等效为BootLoader。简单地说,BootLoader就是在操作系统内核运行前执行的一段小程序。通过这段

2、小程序,我们可以初始化必要的硬件设备,创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。BootLoader是依赖于硬件实现的,特别是在嵌入式系统中。不同体系结构需求的BootLoader是不同的,除了体系结构,BootLoader还依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们基于相同的CPU构建,运行在其中一块电路板上的BootLoader,未必能够运行在另一块电路开发板上。Bootloader的启动过程可以是单阶段的,也可以是多阶段的。大多数单阶段

3、的BootLoader应用于简单的系统,比如没有操作系统的系统。通常多阶段的BootLoader能提供更为复杂的功能以及更好的可移植性。从固态存储设备上启动的BootLoader大多数是两阶段的启动过程,也就是启动过程可以分为stage1和stage2两部分。依赖于CPU体系结构的代码,比如设备初始化代码  等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。大多数BootLoader都包含两种不同的操作模式:启动加载(Bootloading)模式和下载(Dow

4、nloading)模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。(1)启动加载模式:这种模式也称为自主(Autonomous)模式,即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入。这种模式是BootLoader的正常工作模式。因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下。(2)下载模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机上下载文件,比如下载应用

5、程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中然后再被BootLoader写到目标机上的固态存储设备中,BootLoader的这种模式通常在系统更新时使用。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口,比如U-Boot、Blob、VIVI等。3.2 常用的嵌入式LinuxBootLoader从上一节的内容可以了解到BootLoader是嵌入式系统中非常重要的一部分,也是系统运行工作的必要组成部分。在嵌入式系统中常见的BootLoader有以下几种。3.2.1 U-BootU-Boot是德国DENX小

6、组开发的用于多种嵌入式CPU的BootLoader程序,它可以运行在基于PowerPC、ARM、MIPS等多种嵌入式开发板上。从http://u-boot.sourceforge.net/或ftp://ftp.denx.de/pub/u-boot/站点都可以下载U-Boot的源代码,U-Boot源代码的主要目录解释如下。  ●board 目标板相关文件,主要包含SDRAM、Flash驱动;  ●common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;  ●cpu 与处理器相关的文件,如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;  ●driver 通用

7、设备驱动,如CFIFlash驱动(目前对IntelFlash支持较好);  ●doc U-Boot的说明文档;  ●examples 可在U-Boot下运行的示例程序,如hello_world.c、timer.c;  ●include U-Boot头文件,尤其是configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;  ●lib_xxx 处理器体系相关的文件,如lib_ppc、lib_arm目录分别包含与Powe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。