Bootloader流程简介
(通用的linux内核,启动时需要很多参数 ,这些参数必须通过Bootloader传递。而且内核一半是压缩存放在外存上的,从外存到内存的复制也是由Bootloader完成。从Bootloader的第二个功能就知道,Bootloader时不能与内核放在一起的。由于Bootloader的实现依赖于CPU的体系结构,因此大多数的Bootloader都分为Stage1和Stage2l辆大部分)
依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在Stage1中,而且通常用汇编语言来实现,以达到短小精悍的目的。而Stage2则通常用C语言来实现,这样可以实现复杂的功能,并且代码会具有更好的可读性和可移植性。
(1)Bootloader的Stage1通常包括以下步骤。
1:硬件设备初始化
2:为加载Bootloader的Stage2准备RAM空间
3:将Bootoader的Stage2复制到RAM空间中
4:设置好堆栈
5:跳转到Stage2的C入口点
(2)Bootloader的Stage2通常包括以下步骤。
1:初始化本阶段要使用到的硬件设备
2:检测系统内存映射(Memory Map)
3:将Kernel映像和根文件系统映像从Flash上读到RAM空间中
4:为内核设置启动参数
5:调用内核。
Stage1:汇编阶段
1:基本硬件初始化
(1)屏蔽所有中断。