没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式Linux系统的启动过程.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 192 浏览量
2022-06-12
19:17:45
上传
评论
收藏 110KB DOC 举报
温馨提示
试读
64页
嵌入式Linux系统的启动过程
资源推荐
资源详情
资源评论
BootLoad 启动方式
Bootloader 的主要功能是引导操作系统启动,开放源代码的 BootLoader 种
类很多,常用的 BootLoader 的功能说明如表 1 所示。
表 1 常用 BootLoader 的功能说明
Bootloader 名
是否终端监
视
描 述
x86 ARM PowerPC
LILO
否 Linux 磁盘引导程序 是 否 否
GRUB
否 GNU 的 LILO 替代程序 是 否 否
Loadlin
否 从 DOS 引导 Linux 是 否 否
ROLO
否 从 ROM 引导 Linux 而不需要 BIOS 是 否 否
Etherboot
否
通过以太网卡启动 Linux 系统的固
件
是 否 否
LinuxBIOS
否 完全替代 BUIS 的 Linux 引导程序 是 否 否
BLOB
否 LART 等硬件平台的引导程序 否 是 否
U-boot
是 通用引导程序 是 是 是
RedBoot
是 基于 eCos 的引导程序 是 是 是
网络启动方式
这种方式开发板不需要配置较大的存储介质,跟无盘工作站有点类似。但是
使用这种启动方式之前,需要把 Bootloader 安装到板上的 EPROM 或者
Flash 中。Bootloader 通过以太网接口远程下载 Linux 内核映像或者文件系
统。第 4 章介绍的交叉开发环境就是以网络启动方式建立的。这种方式对于
嵌入式系统开发来说非常重要。
使用这种方式也有前提条件,就是目标板有串口、以太网接口或者其他连接
方式。串口一般可以作为控制台,同时可以用来下载内核影像和 RAMDISK
文件系统。串口通信传输速率过低,不适合用来挂接 NFS 文件系统。所以
以太网接口成为通用的互连设备,一般的开发板都可以配置 10M 以太网接
口。
对于 PDA 等手持设备来说,以太网的 RJ-45 接口显得大了些,而 USB 接口,
特别是 USB 的迷你接口,尺寸非常小。对于开发的嵌入式系统,可以把
USB 接口虚拟成以太网接口来通讯。这种方式在开发主机和开发板两端都
需要驱动程序。
另外,还要在服务器上配置启动相关网络服务。Bootloader 下载文件一般都
使用 TFTP 网络协议,还可以通过 DHCP 的方式动态配置 IP 地址。
DHCP/BOOTP 服务为 Bootloader 分配 IP 地址,配置网络参数,然后才能
够支持网络传输功能。如果 Bootloader 可以直接设置网络参数,就可以不
使用 DHCP。
TFTP 服务为 Bootloader 客户端提供文件下载功能,把内核映像和其他文件
放在/tftpboot 目录下。这样 Bootloader 可以通过简单的 TFTP 协议远程下载
内核映像到内存。如图 6.1 所示。
图 6.1 网络启动示意图
大部分引导程序都能够支持网络启动方式。例如:BIOS 的 PXE(Preboot
Execution Environment)功能就是网络启动方式;U-Boot 也支持网络启动
功能。
2.磁盘启动方式
传统的 Linux 系统运行在台式机或者服务器上,这些计算机一般都使用
BIOS 引导,并且使用磁盘作为存储介质。如果进入 BIOS 设置菜单,可以
探测处理器、内存、硬盘等设备,可以设置 BIOS 从软盘、光盘或者某块硬
盘启动。也就是说,BIOS 并不直接引导操作系统。那么在硬盘的主引导区,
还需要一个 Bootloader。这个 Bootloader 可以从磁盘文件系统中把操作系
统引导起来。
Linux 传统上是通过 LILO(LInux LOader)引导的,后来又出现了 GNU 的
软件 GRUB(GRand Unified Bootloader)。这 2 种 Bootloader 广泛应用在
X86 的 Linux 系统上。你的开发主机可能就使用了其中一种,熟悉它们有助
于配置多种系统引导功能。
LILO 软件工程是由 Werner Almesberger 创建,专门为引导 Linux 开发的。
现在 LILO 的维护者是 John Coffman,最新版本下载站点:
http://lilo.go.dyndns.org。LILO 有详细的文档,例如 LILO 套件中附带使用
手册和参考手册。此外,还可以在 LDP 的"LILO mini-HOWTO"中找到 LILO
的使用指南。
GRUB 是 GNU 计划的主要 bootloader。GRUB 最初是由 Erich Boleyn 为
GNU Mach 操作系统撰写的引导程序。后来有 Gordon Matzigkeit 和 Okuji
Yoshinori 接替 Erich 的工作,继续维护和开发 GRUB。GRUB 的网站
http://www.gnu.org/software/grub/上有对套件使用的说明文件,叫作
《GRUB manual》。GRUB 能够使用 TFTP 和 BOOTP 或者 DHCP 通过网
络启动,这种功能对于系统开发过程很有用。
除了传统的 Linux 系统上的引导程序以外,还有其他一些引导程序,也可以
支持磁盘引导启动。例如:LoadLin 可以从 DOS 下启动 Linux;还有
ROLO、LinuxBIOS,U-Boot 也支持这种功能。
3.Flash 启动方式
大多数嵌入式系统上都使用 Flash 存储介质。Flash 有很多类型,包括 NOR
Flash、NAND Flash 和其他半导体盘。其中,NOR Flash(也就是线性
Flash)使用最为普遍。
NOR Flash 可以支持随机访问,所以代码是可以直接在 Flash 上执行的。
Bootloader 一般是存储在 Flash 芯片上的。另外,Linux 内核映像和
RAMDISK 也可以存储在 Flash 上。通常需要把 Flash 分区使用,每个区的
大小应该是 Flash 擦除块大小的整数倍。图 6.2 是 Bootloader 和内核映像以
及文件系统的分区表。
图 6.2 Flash 存储示意图
Bootloader 一般放在 Flash 的底端或者顶端,这要根据处理器的复位向量设
置。要使 Bootloader 的入口位于处理器上电执行第一条指令的位置。
接下来分配参数区,这里可以作为 Bootloader 的参数保存区域。
再下来内核映像区。Bootloader 引导 Linux 内核,就是要从这个地方把内核
映像解压到 RAM 中去,然后跳转到内核映像入口执行。
然后是文件系统区。如果使用 Ramdisk 文件系统,则需要 Bootloader 把它
解压到 RAM 中。如果使用 JFFS2 文件系统,将直接挂接为根文件系统。这
两种文件系统将在第 12 章详细讲解。
最后还可以分出一些数据区,这要根据实际需要和 Flash 大小来考虑了。
这些分区是开发者定义的,Bootloader 一般直接读写对应的偏移地址。到了
Linux 内核空间,可以配置成 MTD 设备来访问 Flash 分区。但是,有的
Bootloader 也支持分区的功能,例如:Redboot 可以创建 Flash 分区表,并
且内核 MTD 驱动可以解析出 redboot 的分区表。
除了 NOR Flash,还有 NAND Flash、Compact Flash、DiskOnChip 等。这
些 Flash 具有芯片价格低,存储容量大的特点。但是这些芯片一般通过专用
控制器的 I/O 方式来访问,不能随机访问,因此引导方式跟 NOR Flash 也不
同。在这些芯片上,需要配置专用的引导程序。通常,这种引导程序起始的
一段代码就把整个引导程序复制到 RAM 中运行,从而实现自举启动,这跟
从磁盘上启动有些相似。
U-Boot 介绍
U-Boot 功能介绍
PC 机引导加载程序由 BIOS 和 OS BootLoader(通常为 GRUB)组成,嵌
入式系统一般没有 BIOS 这样的固件程序,系统的引导加载完全由
BootLoader 完成。不同的系统,boot Loader 是不同的。Boot Loader 有许
多开放源代码,但在标准 Linux 中没有,需要用户从网上下载。
剩余63页未读,继续阅读
资源评论
oligaga
- 粉丝: 52
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功