欢迎来到天天文库
浏览记录
ID:43323839
大小:187.32 KB
页数:12页
时间:2019-10-01
《bootloader启动过程分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、BootLoader启动过程分析2011-03-1114:07:12
2、分类:Bootloader
3、字号大中小订阅一、BootLoader的概念和功能1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和BootLoader两部分。而这个内部固化ROM是厂家在芯片生产吋候固化的,作用基本上是引导BootLoadero有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式:USB、UART
4、或以太网等等。而S3C24X0则很简单,只有Norboot和Nandbooto(2)Linuxkernel和drivers。(3)文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4、UBI、CRAMFS等等)。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境的载体。(4)应用程序。用户自定义的应用程序,存放于文件系统之中。在Flash存储器屮,他们的一般分布如下:BootloaderBootKernek*RootFileSystem-Parameter但是以上
5、只是大部分情况下的分布,也有一些可能根文件系统是initramfs,被一起压缩到了内核映像里,或者没有Bootloader参数区,等等。2^在嵌入式Linux屮为什么要有BootLoader在linux内核的启动运行除了内核映像必须在主存的适当位置,CPU还必须具备一定的条件:[1]CPU寄存器设置:R0=0;R1=MachineID(即MachineTypeNumber,定义在linux/arch/arm/tools/mach-types);只2=内核启动参数在RAM屮起始基地址;[2]CPU模式:必
6、须禁止中断(IRQs和FIQs);CPU必须工作在是超级保护模式(SVC)模式;[1]Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭;但是在CPU刚上电启动的时候,一般连内存控制器都没有配置过,根本无法在内存中运行程序,更不可能处在Linux内核的启动环境中。为了初始化CPU及其他外设,使得Linux内核可以在系统主存屮跑起来,并让系统符合Linux内核启动的必备条件,必须要有一个先于内核运行的程序,他就是所谓的引导加载程序(BootLoader)o而
7、BootLoader并不是Linux才需要,是几乎所有的运行操作系统的设备都具备的。我们的PC的BOIS就是BootLoader的一部分(只是前期引导,后面一般还有外存中的各种BootLoader),对于LinuxPC来说,BootLoader=BIOS+GRUB/LILOo正如前面所述,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,最后从别处(Flash、以太网
8、、UART)载入内核映像并跳到入口地址。由于BootLoader直接操作硬件,所以她严重依赖于硬件,而且依据所引导的操作系统的不同。二、BootLoader的工作模式大多数BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用來加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Bootloading)模式:这种模式也称为”自主”(Autonomous)模式。也即BootL
9、oader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。下载(Downloading)模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的
10、FLASH类固态存储设备屮。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。象Blob或U-Boot等这样功能强大的BootLoader通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,Blob在启动时处于正常的启动加载模式,但是它会延时10秒
此文档下载收益归作者所有