文档介绍:嵌入式系统实验报告
Linux之BootLoader实验
学院测量与通信工程学院
专业信号与信息处理
学生姓名姜元
学号 1320600050
指导教师董静薇
实验目的
了解BootLoader的基本概念和框架结构
了解BootLoader引导操作系统的过程
掌握bootloader程序的编译方法
掌握BootLoader程序的使用方法
实验内容
熟悉嵌入式linux环境下的开发工具,包括make、gcc、超级终端等
bootLoader程序的编译和下载
内核和文件系统的编译和下载
实验分析bootLoader程序的实现原理和结构
观察程序运行情况
完成实验手册题2和题5
实验原理
BootLoader的功能与结构
嵌入式Linux系统软件结构如图1所示:
图1 嵌入式Linux系统软件结构
什么是BootLoader?
简单地说,BootLoader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
由于硬件结构差别较大,不同的目标板需要不同的BootLoader。
BootLoader 的主要功能
初始化系统在启动阶段必需的硬件设备;
准备后续软件系统(如操作系统)运行所需的软件环境,如复制操作系统内核代码到RAM中等;
向内核传递启动参数;
[可选] 配置系统各种参数;
[可选] 支持各种协议来下载BootLoader、内核、文件系统等;
[可选] 在线烧写系统firmware(固件),如启动参数、BootLoader、内核、文件系统等;
[可选] 支持在线调试;
引导内核启动。
固态存储设备的空间分配
在固态存储设备中的典型空间分配情况如图2所示:
图2 固态存储设备中的典型空间分配情况
典型BootLoader的启动流程
典型的BootLoader启动流程如图3所示
图3 典型的BootLoader启动流程
BootLoader的工作模式
功能完善的BootLoader一般包含2种工作模式:
启动加载模式(loading)
从最终用户的角度看,BootLoader的功能就是加载操作系统。
下载更新模式(downloading)
主要用于嵌入式系统开发人员。
启动加载模式(loading)
这种模式也称为“自主”(Autonomous)模式;
BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入;
BootLoader的正常工作模式,在嵌入式产品发布的时侯,BootLoader 必须工作在该模式下。
下载更新(Downloading)模式
该模式下,目标机上的 BootLoader将通过串口或USB、网络连接等从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。
下载的文件通常被BootLoader保存到目标机的 RAM 中,然后再被写到目标机上的FLASH 类固态存储设备中。
该模式在第一次安装内核与根文件系统时会被使用;系统更新也会用到。
该模式下的 BootLoader通常都会为用户提供一个简单的命令行接口。
此次实验过程中即使用下载模式。
BootLoader的典型结构框架
大多数Bootloader的执行分为两个阶段:
第一阶段/也称FlashLoader
--运行于Flash的一段BootLoader代码
特点:
代码量小,往往不会超过256B;
汇编写成;
运行于Flash;
由于加载BootLoader后,需要运行BootLoader,因此最后往往是一条跳转语句。
主要操作步骤:
硬件设备初始化。
为加载BootLoader准备RAM空间。
拷贝BootLoader到RAM空间中。
设置好堆栈。
跳转到BootLoader的C语言入口点。
第二阶段/也称BootLoader
--运行于RAM中的BootLoader主要代码
特点:
BootLoader是操作系统内核运行前的核心程序,它具有如下特点:
代码量大;
由C语言写成,大多数时候需要嵌入式汇编语言;
运行于SDRAM等随机存储器
由于它是启动内核前运行的最后一个程序,它必须把控制权交给内核,因此它最后是一条跳转到系统内核的语句。
主要操作步骤:
初始化本阶段要使用到的硬件设备。
检测系统内存映射(memory map)。
将kernel映像和根文件系统映像从flash上读到RAM空间中。
为内核设置启动参数。
启动内核。
PXA270开发板Flash和