Bootloader启动流程:
Bootloader启动流程一般分为两个阶段stage1和stage2,下面分别对这两个阶段讲解。
stage1中Booloader主要完成以下工作:
*基本硬件初始化包括屏蔽所有中断,设置CPU的速度和时钟频率。RAM初始化,初始化LED,关闭CPU内部指令和数据cache等。
*为加载stage2准备RAM空间,通常为了获得更快的执行速度,通常把Stage2加载到RAM空间执行因此必须为加载Bootloader的stage2准备好一段可用的RAM空间范围。
*拷贝Stage2到RAM中,在这里要确定两点:1 stage2的可执行映像在固态存储设备存放的起始地址和终止地址,2 RAM 空间的起始地址。
*设置堆栈指针SP,这是为了执行stage2的C语言代码做好准备。
stage2主要完成以下工作:
*用汇编语言跳转到main的入口函数:
*初始化本阶段要使用的硬件设备,包括初始化串口,初始化计时器等。在初始化这些设备之前可以输出一些打印信息。
*检测系统的内存映射,所谓内存地址映射是指在4GB的地址空间中有指出哪些地址范围被分配用来寻址系统的RAM单元。
*加载内核映像和根文件系统映像,这里包括规划内存占用的布局和从Flash上拷贝数据
*设置内存启动参数。