嵌入式操作系统 5 BootLoader和bootloader.举例 陈香兰(xlanchenc@ustc.edu.cn) 计算机应用教研室。计算机学院 嵌入式系统实验室。苏州研究院 中国科学技术大学 Fa112014 December 4,2014 4口4四1是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作系统 Decem0er4.20141/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 嵌入式操作系统 5 BootLoader和bootloader举例 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室@计算机学院 嵌入式系统实验室@苏州研究院 中国科学技术大学 Fall 2014 December 4, 2014 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 1 / 87
Outline ①BootLoader简介 ●Boot Loader的概念 ●Boot Loader的安装 ●Boot Loader的启动过程和操作模式 ●Boot Loader的主要任务和典型结构框架 ●部分开源的Boot Loader 2 u-boot ●u-boot简介 ●编译u-boot ●简单分析u-boot源码 RedBoot ●RedBoot简介 ●RedBoot的下载、编译和运行 ●RedBoot的简单分析 小结和作业 4口4四1是4P,刀00 练奇兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 Dece0er4,20142/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 2 / 87
●本节从以下四个方面来讨论嵌入式系统的Boot Loader,包括: ①Boot Loader的概念 ©Boot Loader的安装 Boot Loader的启动过程 Boot Loader的主要任务和典型框架结构 1口4四是42刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作香统 Dece0er4.20144/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 本节从以下四个方面来讨论嵌入式系统的 Boot Loader,包括: 1. Boot Loader 的概念 2. Boot Loader 的安装 3. Boot Loader 的启动过程 4. Boot Loader 的主要任务和典型框架结构 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 4 / 87
嵌入式Linux的软件层次 ●在专用的嵌入式板子上运行GNU/Linux系统已变得越来越流行。 ●一个嵌入式Liux系统从软件的角度看通常可以分为四个层次: ①引导加载程序。 包括固化在固件(firmware)中的boot代码(可选)和Boot Loader 两大部分 Linux内核o 特定于嵌入式板子的定制内核及内核的启动参数 ®文件系统。 包括根文件系统和建立于Flash内存设备之上的文件系统 通常用RAM-Disk来作为根文件系统 。用户应用程序。 特定于用户的应用程序 。嵌入式GUI 有时在用户应用程序和内核层之间可能还会包括一个嵌入式 图形用户界面(GUI)。 常用的嵌入式GUI有:MicroWindows和MiniGUI等o 4口4四是42刀00 陈香兰(xlanchenoustc,edu,cn)(计界机应 长人式择作系统 December 4.2014 5 87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 嵌入式Linux的软件层次 在专用的嵌入式板子上运行GNU/Linux系统已变得越来越流行。 一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。 包括固化在固件(firmware)中的 boot 代码(可选)和 Boot Loader 两大部分 2. Linux内核。 特定于嵌入式板子的定制内核及内核的启动参数 3. 文件系统。 包括根文件系统和建立于 Flash 内存设备之上的文件系统 通常用RAM-Disk来作为根文件系统 4. 用户应用程序。 特定于用户的应用程序 嵌入式GUI 有时在用户应用程序和内核层之间可能还会包括一个嵌入式 图形用户界面(GUI)。 ▶ 常用的嵌入式 GUI 有: MicroWindows 和 MiniGUI等。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 5 / 87
引导加载程序 ·引导加载程序是系统加电后运行的第一段软件代码。 ●例如P℃机的引导加载程序,包括 ●BIOS(其本质就是一段固件程序) ②位于硬盘MBR中的OS Boot Loader ★比如LILO、GRUB等· ●BIOS的主要任务是 ①进行硬件检测和资源分配 O将MBR中的OS Boot Loader读到系统的RAM中 O将控制权交给OS Boot Loader ●Boot Loader的主要运行任务是 ●将内核映象从硬盘上读到RAM中 ⑧跳转到内核的入口点去运行,也即启动操作系统。 4口4四1是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(计界机 长人式操作香统 December 4.2014 6/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 引导加载程序 引导加载程序是系统加电后运行的第一段软件代码。 例如PC 机的引导加载程序,包括 1. BIOS(其本质就是一段固件程序) 2. 位于硬盘 MBR 中的 OS Boot Loader ⋆ 比如LILO、GRUB 等。 BIOS的主要任务是 1. 进行硬件检测和资源分配 2. 将MBR中的OS Boot Loader读到系统的 RAM 中 3. 将控制权交给 OS Boot Loader Boot Loader 的主要运行任务是 1. 将内核映象从硬盘上读到 RAM 中 2. 跳转到内核的入口点去运行,也即启动操作系统。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 6 / 87
引导加载程序 。在嵌入式系统中 ·通常并没有像BIOS那样的固件程序。 ★注:有的嵌入式CPU也会内嵌一段短小的启动程序 ·整个系统的加载启动任务完全由Boot Loader完成· ●如在一个基于ARM7 TDMI core的嵌入式系统中,系统在 上电或复位时通常都从地址0x00000000处开始执行, 而在这个地址处安排的通常就是系统的Boot Loader程序。 1口4四1是42月00 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作系统 December 4.2014 6 /87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 引导加载程序 在嵌入式系统中 ▶ 通常并没有像 BIOS 那样的固件程序。 ⋆ 注:有的嵌入式 CPU 也会内嵌一段短小的启动程序 ▶ 整个系统的加载启动任务完全由 Boot Loader 完成。 如在一个基于 ARM7TDMI core的嵌入式系统中,系统在 上电或复位时通常都从地址 0x00000000 处开始执行, 而在这个地址处安排的通常就是系统的 Boot Loader 程序。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 6 / 87
Outline ①BootLoader简介 ●Boot Loader的概念 o Boot Loader的安装 。Boot Loader的启动过程和操作模式 。Boot Loader的主要任务和典型结构框架 。部分开源的Boot Loader u-boot 。u-bo0t简介 。编译u-boot 。简单分析u-boot源码 RedBoot 。RedBoot荀介 。RedBoot的下载、编译和运行 。RedBoot的简单分析 小结和作业 4口4四1是4P,刀00 陈香兰(xlanchenoustc,ed加,cn)(升异款应 收人式择作系统 December 4.2014 7 /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 7 / 87
Boot Loader的概念 。Boot Loader是在操作系统内核运行之前运行的第一段小程序。 ●初始化硬件设备 ©建立内存空间的映射图 ★将系统的软硬件环境带到一个合适的状态·以便为最终调用 操作系统内核准备好正确的环境· O加载操作系统内核映象到RAM中,并将系统的控制权传递给它 ★例如:Linux 1口t4四1是42刀00 陈香兰(xlanchenoustc,edu,cn)(升界丸应 长人式操作系统 December 4.2014 8 /87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Boot Loader 的概念 Boot Loader 是在操作系统内核运行之前运行的第一段小程序。 1. 初始化硬件设备 2. 建立内存空间的映射图 ⋆ 将系统的软硬件环境带到一个合适的状态,以便为最终调用 操作系统内核准备好正确的环境。 3. 加载操作系统内核映象到RAM中,并将系统的控制权传递给它 ⋆ 例如:Linux 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 8 / 87
通用的Boot Loader ●在嵌入式世界里建立一个通用的Boot Loader几乎是不可能的 ~Boot Loader对硬件的依赖性非常强,特别是在嵌入式系统世界中 ●尽管如此,仍可对Boot Loader归纳出一些通用的概念, 以指导用户特定的Boot Loader设计与实现。 1口+4四1是4P在刀0C 陈香兰(xlanchenoustc,edu,cn)(升界款应 长人式操作香统 December4.20149/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 通用的Boot Loader 在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的 ▶ Boot Loader 对硬件的依赖性非常强,特别是在嵌入式系统世界中 尽管如此,仍可对 Boot Loader 归纳出一些通用的概念, 以指导用户特定的 Boot Loader 设计与实现。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 9 / 87
支持的CPU和嵌入式板 Boot Loader依赖于 OCPU的体系结构 O不同的CPU体系结构都有不同的Boot Loader O有些Boot Loader也支持多种CPU体系结构 ★例如U-Boot同时支持ARM和MIPS体系结构 ©具体的嵌入式板级设备的配置 对于两块不同的嵌入式板,即使它们基于同一种CPU, 要想让运行在一块板子上的Boot Loader也能运行在另 一块板子上,通常也都需要修改Boot Loader源程序 4口4四是4P在刀0C 陈香兰(xlanchenoustc.,ed加,cn)(升界丸应 长人式操作香统 December 4.2014 10/87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 支持的 CPU 和嵌入式板 Boot Loader依赖于 1. CPU 的体系结构 1. 不同的CPU体系结构都有不同的Boot Loader 2. 有些 Boot Loader 也支持多种CPU体系结构 ⋆ 例如U-Boot同时支持ARM和MIPS体系结构 2. 具体的嵌入式板级设备的配置 ▶ 对于两块不同的嵌入式板,即使它们基于同一种 CPU, 要想让运行在一块板子上的 Boot Loader也能运行在另 一块板子上,通常也都需要修改 Boot Loader源程序 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室@计算机学院嵌入式系统实验室 嵌入式操作系统 @苏州研究院中国科学技术大学Fall 2014) December 4, 2014 10 / 87