1 概述
之所以称为UBOOT方式快速启动,是因为相对于内核方式快速启动,在快速启动的过程中只需经历UBOOT的启动便可进行系统状态的恢复,从而跳过内核的初始化过程。
UBOOT方式快速启动的实现是在内核方式快速启动技术的基础上,修改系统映像格式和写入方式,并在UBOOT中添加bootss命令,调整UBOOT的启动流程。
2 UBOOT方式快速启动原理
2.1 系统启动流程的更改
UBOOT方式快速启动技术中,系统启动过程先后经历UBOOT启动、读取系统镜像和系统状态恢复等阶段。其启动过程同内核方式快速启动技术对比如图所示:
2.2 系统运行时状态的保存和恢复
由于快速启动流程的改变,系统启动过程不再经历内核初始化的步骤,因此要使系统正常运行起来,就需要保存和恢复系统运行时的状态。系统的运行时状态包括:内存状态、处理器寄存器状态、处理器协处理器状态、设备状态等。系统运行是动态的,在保存和恢复的过程中,其它进程必须冻结起来,以免出现进程状态前后不一致的情况。
内存状态不需要全部保存,如free page frames,这就需要建立内存位图用来区分内存页框,标记哪些内存页框应该被保存以及哪些不应该被保存。并且,系统镜像的大小也会随着所要保存的内存映像大小的缩减而减小,进一步提高系统保存和恢复的速度。另外,为了保证文件系统的一致性状态,需要冻结进程之前,对文件系统进行同步操作,将对文件的更改写回外设。
处理器的状态包含18个寄存器(包含R0-R14、PC、CPSR、SPSR)、协处理器、MMU、FPU等的状态。这18个寄存器中,PC值指示系统快速启动恢复回来后要执行的下一条语句的地址;R13即是堆栈指针SP,指示堆栈栈顶的位置;CPSR是程序状态字寄存器,用来存储条件标志、中断禁止标志、当前处理器模式标志和其它的一些控制和状态位。SPSR是程序状态保存寄存器,用于保存CPSR的状态,便于在异常中断退出时,用SPSR来恢复CPSR,保证系统能够恢复到异常发生时的状态。
协处理器中,C2中保存的是基地址;C8和C10控制TLB内容的清除和锁定;C5和C6在内存访问失效时指示其状态和地址。MMU