- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 Bootloader开发基础 5.1.1 Bootloader的启动 Linux系统是通过Bootloader引导启动的,上电后执行Bootloader来初始化系统。 系统加电或复位后,所有CPU都会从某个地址开始执行,这是由处理器设计决定的。比如,X86的复位向量在高地址端,ARM处理器在复位时从地址0取第一条指令。嵌入式系统的开发板都要把板上ROM或Flash映射到这个地址。因此,必须把Bootloader程序存储在相应的Flash位置上,系统加电后,CPU将首先执行它。 主机和目标机之间一般有串口可以连接,Bootloader软件通常会通过串口来输入/输出。例如:输出出错或者执行结果信息到串口终端,从串口终端读取用户控制命令等。 Bootloader的启动过程通常是多阶段的,这样既能提供复杂的功能,又有很好的可移植性。例如:从Flash启动的Bootloader多数是两阶段的启动过程,本章后面U-Boot内容可以详细分析该特性。 大多数Bootloader包含两种不同的操作模式:本地加载模式和远程下载模式。这两种操作模式的区别仅对于开发人员才有意义,也就是不同启动方式的使用。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的本地加载模式与远程下载模式的区别。 因为Bootloader的主要功能是引导操作系统启动,所以详细讨论一下各种启动方式的特点。 1.网络启动方式 这种方式开发板不需要配置较大的存储介质,跟无盘工作站有点类似。但是使用这种启动方式之前,需要把Bootloader安装到板上的EPROM或者Flash中。Bootloader通过以太网接口远程下载Linux内核映像或者文件系统。第3章介绍的交叉开发环境就是以网络启动方式建立的。网络启动方式对于嵌入式系统开发来说非常重要。 使用这种方式也有前提,就是目标板有串口、以太网接口或者其他连接方式。串口一般可以作为控制台,同时可以用来下载内核影像和文件系统。串口通信传输速率过低,不适合用来挂接NFS文件系统。所以以太网接口成为通用的互连设备,一般的开发板都可以配置10?M以太网接口。 对于PDA等手持设备来说,以太网的RJ-45接口结构尺寸大,而USB接口,特别是USB的迷你接口,结构尺寸小。对于开发的嵌入式系统,可以把USB接口虚拟成以太网接口通信。这种方式在开发主机和开发板两端都需要驱动程序。 另外,可在服务器上配置启动相关网络服务。Bootloader下载文件一般都使用TFTP网络协议,还可以通过DHCP的方式动态配置IP地址。 DHCP/BOOTP服务为Bootloader分配IP地址并配置网络参数后,才能够支持网络传输功能。如果Bootloader可以直接设置网络参数,则可不使用DHCP。 TFTP服务为Bootloader客户端提供文件下载功能,把内核映像和其他文件放在/tftpboot目录下。这样Bootloader可以通过简单的TFTP协议远程下载内核映像到内存,如图5-1所示。 图5-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)。这两种Bootloader广泛应用在X86的Linux系统上。 LILO软件工程是由Werner Almesberger创建,专门为引导Linux开发的。现在LILO的维护者是John Coffman,最新版本下载站点:。LILO有详细的文档,例如LILO套件中附带的使用手册和参考手册。此外,还可以在LDP的“LILO mini-HOWTO”中找到LILO的使用指南。 GRUB是GNU计划的主要Bootloader。GRUB最初是由Erich Boleyn为GNU Mach操作系统撰写的引导程序,后来由Gordon Matzigkeit和Okuji Yoshinori接替Erich的工作,继续维
您可能关注的文档
- (ARM Linux嵌入式系统开发基础)第1章嵌入式系统开发基础.ppt
- (ARM Linux嵌入式系统开发基础)第2章嵌入式微处理器及ARM9硬件.ppt
- (ARM Linux嵌入式系统开发基础)第3章LinuxC编译调试基础.ppt
- (ARM Linux嵌入式系统开发基础)第4章LinuxC编程基础.ppt
- (ARM Linux嵌入式系统开发基础)第6章嵌入式Linux内核.ppt
- (ARM Linux嵌入式系统开发基础)第7章嵌入式文件系统.ppt
- (ARM Linux嵌入式系统开发基础)第8章ARM-Linux串行接口通.ppt
- (ARM嵌入式系统基础及应用)第1章嵌入式系统概述.ppt
- (ARM嵌入式系统基础及应用)第2章ARM体系结构.ppt
- (ARM嵌入式系统基础及应用)第3章ARM硬件模块开发.ppt
- (ARM嵌入式系统基础及应用)第4章ARM编程与调试.ppt
- (ARM嵌入式系统基础及应用)第5章中断在嵌入式系统中的应用.ppt
- (ARM嵌入式系统基础及应用)第8章WindowsCE驱动程序开发.ppt
- (ARM嵌入式系统基础及应用)第9章基于NiosII嵌入式SOPC设计.ppt
文档评论(0)