Outline BootLoader简介 o Boot Loader的概念 o Boot Loader的安装 。Boot Loader的启动过程和操作模式 ●Boot Loader的主要任务和典型结构框架 。那分开源的Boot Loade u-boot 。u-bo0t简介 。编译u-boot 。简单分析u-boot源码 RedBoot 。RedBoot荷介 。RedBoot的下载、编译和运行 。RedBoot的简单分析 小结和作业 4口4四1是14P刀00 陈香兰(xlanchenoustc,ed加,cn)(升异款应 长人式择作系统 December 4.2014 20/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline 1. BootLoader简介 Boot Loader 的概念 Boot Loader 的安装 Boot Loader 的启动过程和操作模式 Boot Loader的主要任务和典型结构框架 部分开源的Boot Loader .2 u-boot u-boot简介 编译u-boot 简单分析u-boot源码 .3 RedBoot RedBoot简介 RedBoot的下载、编译和运行 RedBoot的简单分析 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 20 / 87
Boot Loader的主要任务 ●系统假设: 内核映像与根文件系统映像都被加载到RAM中运行。 ·尽管在嵌入式系统中它们也可直接运行在ROM 或F1ash这样的固态存储设备中。但这种做法无 疑是以运行速度的栖牲为代价的。 ●从操作系统的角度看,Boot Loader的总目标就是 正确地加载并调用内核来执行· 4口4四是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作系统 December 4.2014 21 87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boot Loader的主要任务 系统假设: 内核映像与根文件系统映像都被加载到 RAM 中运行。 ▶ 尽管在嵌入式系统中它们也可直接运行在 ROM 或 Flash这样的固态存储设备中。但这种做法无 疑是以运行速度的牺牲为代价的。 从操作系统的角度看,Boot Loader 的总目标就是 正确地加载并调用内核来执行。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 21 / 87
Boot Loader的典型结构框架 。由于Boot Loader的实现依赖于CPU体系结构,大多 数Boot Loader都分为stagel和stage?2两大部分 ①Stagel ★依赖于CPU体系结构·如设备初始化代码 ★通常用汇编语言实现,短小精悍 ⑧Stage2 ★通常用C语言 ★可以实现复杂功能 ★代码具有较好的可读性和可移植性 4口4四是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 December 4.2014 22 /87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boot Loader的典型结构框架 由于 Boot Loader 的实现依赖于 CPU 体系结构,大多 数 Boot Loader 都分为 stage1 和 stage2 两大部分 1. Stage1 ⋆ 依赖于 CPU 体系结构,如设备初始化代码 ⋆ 通常用汇编语言实现,短小精悍 2. Stage2 ⋆ 通常用C语言 ⋆ 可以实现复杂功能 ⋆ 代码具有较好的可读性和可移植性 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 22 / 87
Boot Loader的stagel ·Stagel直接运行在固态存储设备上,通常包括以下步骤 。硬件设备初始化 O为加载Boot Loader的stage?2准备RAW空间拷贝 Boot Loader的stage2到RAM空间中 。设置好堆栈 ⑥跳转到stage2的C入口点 1口t4四1是142刀00 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作香统 ecember4,201423/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boot Loader的stage1 Stage1直接运行在固态存储设备上,通常包括以下步骤 1. 硬件设备初始化 2. 为加载 Boot Loader的stage2准备RAM空间拷贝 3. Boot Loader的stage2到RAM空间中 4. 设置好堆栈 5. 跳转到 stage2 的 C 入口点 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 23 / 87
Stagel:硬件初始化I 。这是Boot Loader一开始就执行的操作 ●目的:为stage?2及kernel的执行准备好基本硬件环境 通常包括 ©屏敲所有的中断 ·为中断提供服务通常是0S或设备驱动程序的贡任, 在Boot Loader阶段不必响应任何中断 ,中断屏蔽可以通过写CPU的中断屏蔽寄存器或状 态寄存器来完成 ★比如ARW的CPSR寄存器 ©设置CPU的速度和时钟频率 4口4四是4P在刀00 陈香兰(xlanchenoustc,edu,cn)(计界机应 长人式操作香统 December 4.2014 24 87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage1:硬件初始化 I 这是 Boot Loader 一开始就执行的操作 目的:为 stage2及kernel的执行准备好基本硬件环境 通常包括 1. 屏蔽所有的中断 ▶ 为中断提供服务通常是 OS或设备驱动程序的责任, 在 Boot Loader阶段不必响应任何中断 ▶ 中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状 态寄存器来完成 ⋆ 比如 ARM 的 CPSR 寄存器 2. 设置 CPU 的速度和时钟频率 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 24 / 87