[Linux操作系统层次]: 引导加载程序, 包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分: Linux内核, 特定于嵌入式板子的定制内核以及内核的启动参数: 文件系统, 包括根文件系统和建立于Flash内存设备之上文件系统, 通常用ramdisk来作为rootfs: 用户应用程序, 有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。[自启动模式]: bootloader 从目标机上固态存储设备上将操作系统加载到RAM中运行, 整个过程并没有用户的介入[交互模式]: 目标机上的bootloader将通过串口或网络等通行手段从开发主机(Host)上下载内核映像等到RAM中可以被bootloader写到目标机上的固态存储媒质中, 或者直接进入系统的引导, 可以通过串口接收命令
[启动过程]: 第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现# 基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据Cache等)# 为第二阶段准备RAM空间# 如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM# 设置堆栈# 跳转到第二阶段的C程序入口点: 第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。# 初始化本阶段要使用到的硬件设备# 检测系统内存映射# 将内核映像和根文件系统映像从Flash读到RAM# 为内核设置启动参数# 调用内核[常见BootLoader]: Redboot Redhat公司随eCos发布的一个BOOT方案,是一个开源项目: 支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等: ARMboot ARM平台的开源固件项目,它特别基于PPCBoot, 已经与PPCBoot项目合并为U-Boot: 支持的处理器构架有StrongARM ,ARM720T ,PXA250 等: U-Boot 开源项目PPCBoot发展起来的,ARMboot并入了PPCBoot,和其他一些arch的Loader合称U-Boot: PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx): ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86: Blob 专门为StrongARM 构架下的LART设计的Boot Loader: Bios-lt 专门支持三星(Samsung)公司ARM构架处理器S3C4510B的Loader
BootLoader 是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。
在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。
引导加载程序是系统加电后运行的第一段软件代码,称之为Bootloader。BootLoader是Booter和Loader的合写:前者意味着要初始化嵌入式系统硬件使之运行起来,至少是部分运行起来,与PC机中的BIOS作用相似;后者意味着将嵌入式操作系统映像加载到内存中,并跳转过去运行。
如PC机中MBR上的BootLoader(PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。
