没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式系统Boot Loader技术内幕
需积分: 10 121 下载量 4 浏览量
2008-08-22
13:16:10
上传
评论
收藏 268KB PDF 举报
温馨提示
试读
16页
本文详细地介绍了基于嵌入式系统中的OS 启动加载程序―― Boot Loader的概念、软件设计的主要任务以及结构框架等内容。
资源推荐
资源详情
资源评论
嵌入式系统 Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
技术内幕
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的
概念、软件设计的主要任务以及结构框架等内容。
1.
1.
1.
1.
引言
在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统
从软件的角度看通常可以分为四个层次:
1.1
1.1
1.1
1.1
引导加载程序。
引导加载程序。
引导加载程序。
引导加载程序。
包括固化在固件 (firmware) 中的 boot 代码 ( 可选 ) ,和 Boot Loader 两大部分。
1.2
1.2
1.2
1.2
Linux
Linux
Linux
Linux
内核。
内核。
内核。
内核。
特定于嵌入式板子的定制内核以及内核的启动参数。
1.
1.
1.
1.
3
3
3
3
文件系统。
文件系统。
文件系统。
文件系统。
包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs
。
1.4
1.4
1.4
1.4
用户应用程序。
用户应用程序。
用户应用程序。
用户应用程序。
特定于用户的应用程序。 有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形 用
户界面。常用的嵌入式 GUI 有: MicroWindows 和 MiniGUI 懂。
引导加载程序是系统加电后运行的第一段软件代码。回忆一下 PC 的体系结构我们可以知
道, PC 机中的引导加载程序由 BIOS( 其本质就是一段固件程序 ) 和位于硬盘 MBR 中的
OS Boot Loader (比如, LILO 和 GRUB 等)一起组成。 BIOS 在完成硬件检测和资源分 配
后,将硬盘 MBR 中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给 OS Boot
Loader 。 Boot Loader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转 到
内核的入口点去运行 ,也即开始启动操作系统。
而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序(注,有的嵌入式 CPU 也会内
嵌一段短小的启动程序) ,因此整个系统的加载启动任务就完全由 Boot Loader 来完成。比
如在一个基于 ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址
0x00000000 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序。
本文将从 Boot Loader
的概念、
Boot Loader
的主要任务、
Boot Loader 的框架结构以及 B oot
Loader 的安装等四个方面来讨论嵌入式系统的 Boot Loader 。
2.
2.
2.
2.
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的概念
简单地说, Boot Loader 就是在操作系统内核运行之前运行的一段小程序。 通过这段小程序
,
我们可以初始化硬件设备、 建立内存空间的映射图, 从而将系统的软硬件环境带到一个合 适
的状态,以便为最终调用操作系统内核准备好正确的环境。
通常, Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式
世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot
Loader 归纳出一些通用的概念来,以指导用户特定的 Boot Loader 设计与实现。
2.
2.
2.
2.
1
1
1
1
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
所支持的
所支持的
所支持的
所支持的
CPU
CPU
CPU
CPU
和嵌入式板
和嵌入式板
和嵌入式板
和嵌入式板
每种不同的 CPU 体系结构都有不同的 Boot Loader 。有些 Boot Loader 也支持多种体系结
构的 CPU
, 比如
U-Boot 就同时支持 ARM 体系结构和 MIPS 体系结构。 除了依赖于 CP U
的体系结构外, Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,
对于两块不同的嵌入式板而言, 即使它们是基于同一种 CPU 而构建的, 要想让运行在一 块
板子上的 Boot Loader 程序也能运行在另一块板子上, 通常也都需要修改 Boot Loader 的 源
程序。
2.2
2.2
2.2
2.2
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的安装媒介(
的安装媒介(
的安装媒介(
的安装媒介(
Installation
Installation
Installation
Installation
Medium
Medium
Medium
Medium
)
)
)
)
系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。
比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0x00000000 取它的第一条
指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备 ( 比如: ROM 、
EEPROM 或 FLASH 等 ) 被映射到这个预先安排的地址上。因此在系统加电后, CPU 将首
先执行 Boot Loader 程序。
下图 1 就是一个同时装有 Boot Loader 、内核的启动参数、内核映像和根文件系统映像的固
态存储设备的典型空间分配结构图。
图 1 固态存储设备的典型空间分配结构
2.
2.
2.
2.
3
3
3
3
用来控制
用来控制
用来控制
用来控制
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的设备或机制
的设备或机制
的设备或机制
的设备或机制
主机和目标机之间一般通过串口建立连接, Boot Loader 软件在执行时通常会通过串口来进
行 I/O ,比如:输出打印信息到串口,从串口读取用户控制字符等。
2.
2.
2.
2.
4
4
4
4
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的启动过程是单阶段 (
的启动过程是单阶段 (
的启动过程是单阶段 (
的启动过程是单阶段 (
Single
Single
Single
Single
Stage
Stage
Stage
Stage
) 还是
) 还是
) 还是
) 还是
多
多
多
多
阶段(
阶段(
阶段(
阶段(
Multi-Stage
Multi-Stage
Multi-Stage
Multi-Stage
)
)
)
)
通常多阶段的 Boot Loader 能提供更为复杂的功能, 以及更好的可移植性。 从固态存储设 备
上启动的 Boot Loader 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1 和
stage 2 两部分。而至于在 stage 1 和 stage 2 具体完成哪些任务将在下面讨论。
2.
2.
2.
2.
5
5
5
5
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的操作模式
的操作模式
的操作模式
的操作模式
(Operation
(Operation
(Operation
(Operation
Mode)
Mode)
Mode)
Mode)
大多数 Boot Loader 都包含两种不同的操作模式: " 启动加载 " 模式和 " 下载 " 模式,这种区 别
仅对于开发人员才有意义。但从最终用户的角度看, Boot Loader 的作用就是用来加载操作
系统,而并不存在所谓的启动加载模式与下载工作模式的区别。
启动加载 (
Boot loading
) 模式: 这种模式也称为
" 自主
"
( Autonomous
) 模式。 也即
Boot L oader
从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户
的介入。这种模式是 Boot Loader 的正常工作模式,因此在嵌入式产品发布的时侯, Boot
Loader 显然必须工作在这种模式下。
下载( Downloading )模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网
络连接等通信手段从主机( Host )下载文件,比如:下载内核映像和根文件系统映像等。 从
主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中, 然后再被 Boot Loade
r
写到目标机上的 FLASH 类固态存储设备中。 Boot Loader 的这种模式通常在第一次安装内
核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader
的这种工作模式。
工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。
像 Blob 或 U-Boot 等这样功能强大的 Boot Loader 通常同时支持这两种工作模式, 而且 允
许用户在这两种工作模式之间进行切换。比如, Blob 在启动时处于正常的启动加载模式,
但是它会延时 10 秒等待终端用户按下任意键而将 blob 切换到下载模式。 如果在 10 秒 内
没有用户按键,则 blob 继续启动 Linux 内核。
2.
2.
2.
2.
6BootLoader
6BootLoader
6BootLoader
6BootLoader
与主机之间进行文件传输所用的通信设备及协
与主机之间进行文件传输所用的通信设备及协
与主机之间进行文件传输所用的通信设备及协
与主机之间进行文件传输所用的通信设备及协
议
议
议
议
最常见的情况就是, 目标机上的 Boot Loader 通过串口与主机之间进行文件传输, 传输协 议
通常是 xmodem / ymodem / zmodem 协议中的一种。但是,串口传输的速度是有限的,因
此通过以太网连接并借助 TFTP 协议来下载文件是个更好的选择。
此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和 TFT P
协议来下载文件时,主机方必须有一个软件用来的提供 TFTP 服务。
在讨论了 BootLoader 的上述概念后,下面我们来具体看看 BootLoader 的应该完成哪些任
务。
3.
3.
3.
3.
Boot
Boot
Boot
Boot
Loader
Loader
Loader
Loader
的主要任务与典型结构框架
在继续本节的讨论之前, 首先我们做一个假定, 那就是: 假定内核映像与根文件系统映像 都
剩余15页未读,继续阅读
资源评论
delta0001
- 粉丝: 6
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- windows下NTFS文件系统读取.zip
- windows程序设计课程 相关代码.zip
- Windows via C++图书代码,升级Windows SDK 到10.zip
- matlab基于扩张卡尔曼滤波的磷酸铁锂蓄电池SOC检测,给出了电池模型和算法实现过程.zip
- matlab基于卡尔曼滤波的磷酸铁锂蓄电池SOC检测
- STM8S003F3P6最小系统AD版(包含原理图、PCB源文件)
- smg.uvproj
- nextjs turbo build
- mysql-connector-j-8.0.31.jar
- MATLAB Appdesigner 设计天气预报小程序:全国各城市天气查询系统Weather-capturer-v3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功