分类: LINUX
2012-06-05 13:52:08
※ 硬件设备初始化:关WATCHDOG、关中断、设置CPU的速度和时钟频率、RAM初始化等(并不都是必须的,可放置在第二阶段);
※ 为加载Bootloader的第二阶段代码准备RAM空间;
※ 复制Bootloader的第二阶段代码到RAM空间(不是必须的);
※ 设置好栈;
※ 跳转到第二阶段代码的C入口点。
②Bootloader第二阶段功能:※ 初始化本阶段要用到硬件设备;
※ 检测系统内存映像(memory map);
※ 将内核映像和根文件系统映像从Flash上读到RAM空间;
※ 为内核设置启动参数;
※ 调用内核
调用内核之前,必须满足下列条件:
①CPU寄存器设置:
※ R0=0;
※ R1=及其类型ID;可参见linux/arch/arm/tools/mach-types
※ R2=启动参数标志列表在RAM中的起始地址;
②CPU工作模式:
※ 必须禁止中断
※ CPU必须为SVC模式
③Cache和MMU设置:
※ MMU必须关闭
※ 指令Cache可以打开也可以关闭
※ 数据Cache必须关闭
3、Bootloader与内核交互
传递方法:Bootloader将参数放在某个约定的地方之后,再启动内核,内核启动后从这个地方获得参数。
标志列表:数据结构tag。