从固态存储设备上启动的 Boot Loader 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1 (汇编部分)和 stage 2 (C语言部分)两部分。
第一阶段:A,基本的硬件初始化(屏蔽依赖于CPU体系架构的所有中断,关闭CACHE);B,为第二阶段准备RAM;C,复制第二阶段的CODE到RAM;D,设置堆栈;E,跳转到第二阶段的C入口点。
第二阶段:A,初始化本阶段的硬件设备;B,建立内存映射;C,将内核映像和根文件系统映像从FLASH读到RAM中;D,设置内核启动参数;E,调用内核。
大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。最常见的情况就是,目标机上的 Boot Loader 通过串口与主机之间进行文件传输,传输协议通常是 xmodem/ymodem/zmodem 协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助 TFTP 协议来下载文件是个更好的选择,在通过以太网连接和 TFTP 协议来下载文件时,主机方必须有一个软件用来的提供 TFTP 服务。