(计算机应用技术专业论文)基于嵌入式linux的bootloader的设计与应用.pdf_第1页
(计算机应用技术专业论文)基于嵌入式linux的bootloader的设计与应用.pdf_第2页
(计算机应用技术专业论文)基于嵌入式linux的bootloader的设计与应用.pdf_第3页
(计算机应用技术专业论文)基于嵌入式linux的bootloader的设计与应用.pdf_第4页
(计算机应用技术专业论文)基于嵌入式linux的bootloader的设计与应用.pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 随着信息与通讯产业的发展,嵌入式系统的产品越来越普及,并在日常 生活中扮演着重要的角色。嵌入式l i n u x 是将普通l i n h x 操作系统进行裁剪、 修改,使之能在嵌入式计算机系统上运行的一种操作系统。由于兼有l i n u x 和嵌入式系统的优点,嵌入式l i n u x 系统有着巨大的市场前景和商业机会。 嵌入式系统涉及到种类繁多的嵌入式处理器,所以目前嵌入式l i n u x 的一个 重点就是针对不同嵌入式处理器开发相应的引导装载程序。因此在嵌入式 l i n u x 系统上建立一个通用的引导装载程序( 以下简称b 0 0 t l o a d e r ) 可以为嵌 入式产品开发的前、后期工作提供方便。 本文主要围绕着嵌入式l i n u x 系统中通用b o o t l o a d e r 的建立展开讨论, 详细论述了在嵌入式l i n u x 操作系统开发工作领域里所做的研究和实践。 首先介绍了b o o t l o a d e r 系统的概念,分析了目前嵌入式系统开放源码的 b o o t l o a d e r 及所支持的架构,并对常见的嵌入式c p u 架构各自不同的优缺点 作了比较,选取设计该系统的软硬件环境;接着描述了该b 0 0 t l o a d e r 的模型, 主要由b o o t 、l o a d e r 、u p g r a d e 三大模块组成,并由串口、硬盘、c d r o m 、网 络一u 盘等方案构成。重点分析了基于网络启动的b o 砒l o a d e r ,这是许多带 有网卡设备的嵌入式产品开发中常用的一种b o o t l o a d e r 方案;详细分析了基 于u s b 升级的b o o t l o a d e r ,这种b o o t 【。o a d e r 可以通过目前流行的u s b 接口 快速地升级产品的软件部分,也是嵌入式产品维护中的一种常用方案。 最后,根据分析的结果,针对实际产品,设计出拥有多种启动与升级方 式的b o o t l o a d e r ,并将该b o o t l o a d e r 系统应用于基于卫星的数字视频广播 ( d i g i t a lv i d e ob r o a d c a s tb a s e do ns a t e u i t e :d v l 3 一s ) 的产品开发和设计 中,主要以m i p s 架构为基础,完成该b o o t l o a d e r 系统在常见c p u 上的移植, 为嵌入式产品的开发提供了有效的手段。 关键词:嵌入式,操作系统;l i n u x ;引导,装载,升级; 西南交通大学硕士研究生学位论文第l l 页 a b s t r a c t w i t ht h ed e v e l o d m e n to ft h ei n f o r m a t i o na n dc o 咖u n i c a t i o n i n d u s t r y ,t h ep r o d u c t so ft h ee m b e d d e ds y s t e mb e c o m em o r ea n dm o r e p o p u l a ra n dp l a ya ni m p o r t a n tr 0 1 ei no u rd a i l y1 i f e e m b e d d e dl i n u x i sas y s t e mt h a tc a nb es c a l a b l ea n dm o d i f i e d ,w h i c hc a nw o r ko nt h e e m b e d d e dc o m p u t e rs y s t e m s a st h es y s t e mi sw i t ht h ea d v a n t a g e so f b o t ho r d i n a r yl i n u xs y s t e i i la n de 玎l b e d d e ds y s t e m ,t h ee m b e d d e dl i n u xh a s ag r e a tm a r k e tp r o s p e c t i v ea n db u s i n e s so p p o r t u n i t i e s c u r r e n t l y ,t h e m o s ti i p o r t a n tt a s kf o re m b e d d e ds y s t e mi st op r o v i d ed i f f e r e n t b o o t l 。o a d e r sf o rd i f f e r e n tc p ua r c h i t e c t u r e s b e c a u s ev a r i o u sc p u sa r e i n v o l v e di ne m b e d d e ds y s t e m s s oi ti sm e a n i n g f u lt ob u i l dag e n e r a l b o o t l o a d e ro nt h ee m b e d d e d1 i n u xs y s t e m ,w h i c hc a np r o v i d e c o n v e n i e n c ef o re m b e d d e ds y s t e md e v e l o p m e n t i nb o t hi t sf o r m e rs t a g e a n di t s1 a t e rs t a g e t ob u i l dag e n e r a lb o o t l o a d e ro ne m b e d d e dl i n u xs y s t e mi st h em a i n c o n t e n to ft h et h e s i s ,i nw h i c hd e s i g na n da p p l i c a t i o ni na r e a sb a s e d o nt h ee m b e d d e ds v s t e ma r ed i s s c u s s e d f i r s t l v ,t h et h e s i si n t r o d u c e sc o n c e d t so fb o o t l o a d e r s y s t e m ,a n a l y z e st h ec u r r e n to p e ns o u r c eb o o t l o a d e ri ne m b e d d e ds y s t e m a n dc o m p a r e st h eg e n e r a lc p ua r c h i t e c t u r e si ne m b e d d e ds y s t e m ,s e l e c t s t h es o f t 髓r ea n dh a r d w a r ee n v i r o n m e n t st od e s i g nt h es y s t e m a n dt h e n , t h ei l l o d e lo ft h eb o o t l o a d e risb r o u g h tf o r w a r d ,w h i c hisc o m p o s e do f b o o t ,l o a d e r ,u p g r a d e t h em o d e li n c l u d e st h e s ep r o j e c t s ,s u c ha ss e r i a l p o r t ,h a r dd i s k ,c d r o m ,i n t e r n e t ,u s bd i s k b o o t l o a d e rb a s e do ni n t e r n e t i sa n a l y s e dw i t he m p h a s i s t h eb o o t l o a d e rp r o j e c ti st h em o s tp o p u l a r o n ef o re m b e d d e dp r o d u c t sw i t hn e t w o r ki n t e r f a c ec a r d :a n db o o t l o a d e r w h i c hc a nu p g r a d ef 1 a s hb yu s bd e v i c ei s e x p r e s s e di n d e t a i l t h e b o o t l o a d e rc a nq u i c k l yu p g r a d et h es o f t w a r ep a r to ft h ep r o d u c t s i t i sa l s oap o p u l a rp r o j e c tt om a i n t e n a n c et h ee m b e d d e dp r o d u c t s f i n a l l y ,b a s e do nt h ea n a l y s e dr e s u l t sa n da c c o r d i n gt oap r a t i c a l 西南交通大学硕士研究生学位论文第1 1 1 页 p r o d u c t , b o o t l o a d e rw i t hv a r i o u sm a n n e r sf o rl o a d e ra n du p g r a d ei s d e s i g n e d ,w h i c hisa p p l i e di nt h ed e v e l o p m e n ta n dd e s i g nf o rp r o d u c t o fd i g i t a lv i d e ob r o a d c a s tb a s e do ns a t e l l i t e :d v b s t a k e nm i p s a r c h i t e c t u r ea st h em a i no b j e c t ,t r a n s p l a n t st h eb o o t l o a d e rs v s t e mi n t o c o 砌o nc p ua r ec o m p l e t e d ,w h i c hp r o v i d e sa ne f f e c t i v ew a vf o r d e v e l o p m e n to fe m b e d d e dp r o d u c t s k e yw o r d s :e m b e d d e d ,o p e a r a t i o ns y s t e m ;l i n u x ;b o o t ,l o a d e r ,u p g r a d e 西南交通大学硕士研究生学位论文第1 页 1 1 引言 第1 章绪论 随着后p c 时代的来临,信息家电的兴起,其核心技术嵌入式系统, 得到了广阔的应用空间和发展前景。面对价格比较敏感的信息家电行业,l i n u x 作为一种免费开源的操作系统,拥有大量的技术资源和众多的科研力量,越来 越多地应用于此类嵌入式系统的设计中。 一个典型的嵌入式l i n u x 系统,从软件层次的角度来看,一般由引导装载 系统( 以下简称b o o t l o a d e r ) 、嵌入式l i n u x 操作系统( 对通用的l i n u x 内核进 行了裁减和修改) 、根文件系统以及具体的应用程序几部分组成m 。然而在有 的嵌入式系统中,操作系统和应用程序存放在系统以外的设备中,如网络、硬 盘等,整个系统只有引导装载程序。因此b o o t l o a d e r 是嵌入式系统设计中很 重要的一部分。 b 0 0 t l o a d e r 是与系统高度相关的初始化软件,担负着初始化硬件和引导 操作系统的双重责任。简单地说,b o o t l o a d e r 就是在硬件系统启动后在操作 系统内核运行之前由系统运行的一段程序。通过它可以初始化硬件设备、建立 内存空间的映射图,将系统的软硬件环境设置为一个合适的状态,同时将操作 系统内核本身从r o m ,f l a s h 甚至网络上载入到r a m 中,并启动操作系统内核 及应用程序n ,。 b o o t l o a d e r 的应用很广泛,既可应用于有操作系统的手持终端设备、智 能家电,机顶盒等嵌入式设备中,也可以应用于无操作系统的单片机控制设备 中。由于不同的硬件架构以及基于相同架构的不同电路板之间有很大的差异, 所以b o o t l o a d e r 的选用、设置以及配置跟所用的硬件有很大的关系。目前在 嵌入式系统中,应用比较广泛的b o o t l o a d e r 程序主要有b 1 0 b 、u b o o t 、r e d b o o t 等。 西南交通大学硕士研究生学位论文第2 页 1 2 研究背景及意义 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适于 应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统n ,。 由嵌入式系统的定义可知,嵌入式系统具有系统资源少、专用性强等特点。嵌 入式系统最先从单片机演变而成,但它不同于单片机,其最主要的区别是嵌入 式系统往往具有小型的操作系统。在目前常用的嵌入式操作系统中,通常有 v x w o r k 、虻o s 、p s o s 、w i n c e 、嵌入式l i n u x 等。而嵌入式1 i n u x ( 简称e m b e d d e d l i n u x ) 的源代码因为可以从具有开放源码、可扩展性强与拥有众多技术支持等 优势的l i n u x 搡作系统中获得而被许多开发商广泛采纳。嵌入式l i n u x 是指对 l i n u x 经过小型化裁剪后,能够固化在容量仅有几十万字节的存储器芯片或单 片执中并用于特定嵌入式场合中的专用l i n u x 操作系统“,。 构建一个完整的嵌入式l i n u x 系统一般由以下四个关键步骤组成:决定系 统组件、配置及建立内核、建立根文件系统、设置g i 导软件与配置。在这些步 骤中,系统将组件、引导加载程序、根文件系统、内核等组合起来。因平台的 不同,引导时将用到不同的加载程序。就单一架构而言,不同的引导加载程序 在调试和监控能力上也会有差异。不同的架构之问,系统的包装和引导方法极 相似主要的差别在于引导时使用的永久性存储设备以及引导加载程序“,。 在系统的启动过程里,有三个主要软件组件参与其中:b o o t l o a d e r 、内核、 i n i t 进程。b 0 0 t l o a d e r 是系统启动过程中执行的第一个软件,它与目标板的 硬件有高度的依存关系。l i n u x 有许多b o o t l o a d e r 可用。加载引导程序在完 成底层初始化工作后会跳到内核的启动程序代码执行。 内核一开始的启动程序代码会因架构的不同而有很多的差异,而且在为c 程序代码设置适合的执行环境之前,它会先为自己进行初始化工作。完成以上 工作后,内核会跳到与架构无关的s t a r t - k e r n e l ( ) 函数执行,此函数会初始 化高层内核功能、安装根文件系统,以及启动i n i t 进程。系统启动的其他部 分是由根文件系统上的i n i t 程序在用户空间中处理的。 系统的引导配置与所选用的b o o t l o a d e r 、它的配置以及主机中软硬件的 类型有非常密切的关系。例如,网络弓l 导配置程序需要主机给目标板提供某些 类型的网络服务。设计系统的时候,首先找出可能会在开发期间及最后的产品 中使用的的各种引导配置。然后,必须选出一个或一组b 0 0 t l o a d e r ,以迎合 西南交通大学硕士研究生学位论文第3 页 可能用到的各种引导设置。 任何c p u 都会从制造商预先指定的一个地址获得第一道指令。任何用c p u 构建成的系统都会在该位置上使用某种形式的固态存储装置。此存储装置传统 上会使用屏蔽式r o m ,但现在有越来越多使用f l a s h 芯片的趋势。系统的引导 工作将会交由此存储装置上的软件负责。引导软件的复杂度以及引导之后参与 系统操作的程序与系统的类型有很大的关系。 在大多数工作站和服务器上,引导软件只负责从磁盘加载操作系统,以及 给操作员提供基本的硬件配置。相对而言,在嵌入式系统中,如果应用不同, 则引导软件的用途很少会相同。有时引导软件在系统运行期间都会一直运行。 引导软件还可能是一个简单的监控软件,负责加载其余的系统软件。这类监控 程序可以提供增强的调试和升级能力。引导软件甚至可能会加载额外的 b o o t l o a d e r 。一般而言,在嵌入式l i n u x 系统的引导中,可以有三种设置方式: 固态存储媒体、磁盘以及网络。每种设置都会有自己特有的配置和用法。 固态存储媒体 在这种设置中,固态存储装置用来存放最初的b o o t l o a d e r 、它的配置参 数、内核以及根文件系统。尽管嵌入式1 i n u x 系统在不同的开发阶段可能会使 用其他的引导设置,不过系统完成开发后多半会使用固态存储媒体来存放所有 的系统组件。从图t 卜1 中可以看到固态存储装置对所有系统组件典型的安排方 式。 引导参数 b o o t l o a d e r 内核根文件系统 图l 一1 固态存储设各媒体中系统组件典型的安排方式 尽管图卜1 展示的存储装置被分成四个不同部分,不过它实际上可能没有 包含那么多部分。引导参数可能会位于b o o t l o a d e r 的空间中。内核也可能位 于根文件系统之上,然而,这样则需要b o o t l o a d e r 具备读取根文件系统的能 力。同时,内核和根文件系统也可以被包装成单一映像,使用前只要在r a m 中解开该映像即可。因引导加载程序的能力不同,甚至会有其他可能的配置, 当然每种配置各有其优缺点。通常会使用以下方式对设置进行分类:f l a s h 的 使用、r a m 的使用、更新的容易程度以及引导时闯。 西南交通大学硕士研究生学位论文第4 页 磁盘 这种设置最为熟悉,它广泛应用在工作站及服务器中。此时,内核和根文 件系统位于磁盘装置上。最初的内核加载程序是直接从磁盘获得内核本身。然 后,磁盘上会有一个被用作根文件系统的文件系统。这种方式适用于开发期闻 需要测试大量的内核及根文件系统配置。 网络 在这种设置中,根文件系统或是内核与根文件系统一起通过网络连接加 载。第一种情况是指,内核位于固态存储媒体或磁盘上,通过n f s 安装根文件 系统。第二种情况是指,只有内核加载位于当地的存储媒体上。然后,通过 t f t p 下载内核,利用n f s 安装根文件系统。要自动获得t f t p 服务器的位置, b 0 0 t l o a d e r 可能还得使用b 0 0 t p d h c p 。如果使用了b o o t p d h c p ,目标板就不 必为了要找到t f t p 服务器或n f s 服务器而事先设定i p 地址。这种设置适合在 开发初期,因为它让开发者能够在自己的工作站与目标板之间快速地共享数据 软件,而不必编程目标板。相对而言,系统变成产品之后,很少使用这种设置, 因为它需要有额外的服务器提供此类服务“1 1 。 以上是嵌入式l i n u x 系统引导的设置方式。三种设置方式各有其优缺点, 固态储存媒体方式一般用于系统开发后存放所有韵系统组件,磁盘方式用于开 发期间当需要测试大量的内核及根文件系统配置,而网络方式则适合于开发初 期在主机与目标板问快速地共享数据两不必编程目标板。嵌入式系统的开发是 一个漫长的过程,它必须经历开发初期、开发期间到最后的产品发布阶段,单 一的b o o t l o a d e r 成为了嵌入式系统开发的一个严重限制。因此开发一个具有 以上多种引导设置方式并且能够根据用户需要具体配置的的b o o t l o a d e r 成为 了嵌入式系统开发的一个重要课题,实现一个可配置的b o o t l o a d e r 具有很强 的研究与应用价值。 再者,由于在许多小型的嵌入式系统产品中,并没有硬盘和其它外存储器 存在。系统的主要软件如操作系统和应用程序都被固化在r o m f l a s h 等不挥发 介质。其启动方法是往往先通过j t a g ( j o i n t t e s ta c t i o n g r o u p ) 将嵌入 式操作系统内核写进f 1 a s h 中,再由其自带的引导程序b 0 0 t l o a d e r 完成嵌入 式系统的启动引导工作。这种方法要借助昂贵的j t a g 设备完成操作系统内核 的烧写工作,并且一旦固化完成后就不能方便地更新嵌入式系统中的软件。其 主要缺点可以从以下几个方面考虑:首先,一般的方式是将引导加载程序、 l i n u x 内核、文件系统、用户应用程序这西方面合为一体( 合称为启动映像) 西南交通大学硕士研究生学位论文第5 页 固化于f 1 a s h 中,使得带有外存设备或网络接口的嵌入式系统占用过大的 f l a s h 芯片,而f l a s h 价格较贵,搀会导致整个系统价格居高不下:其次,由 于启动映像固化于f l a s h 中,任何应用程序的改变都需要重新烧录f l a s h ,这 样,系统对后期的升级维护存在很大的不便;再次,因为启动映像较大,烧录 时间将会增长,使得开发调试周期也会相应延长。因此,f l a s h r o m 不挥发介 质中只有b 0 0 t l o a d e r ,而将内核等其余软件部分存于其它存储介质( 如硬盘) 中,这样不但可以缩短开发周期,利于应用程序的升级,而且在经济上也将带 来巨大的效益。 b o o t l o a d e r 作为嵌入式系统的一个软件,它和硬件的联系密不可分并严 重依赖于硬件。但是我们有成千上万的嵌入式电路板,相同的电路板都有多种 可能的引导配置。此外,不同的架构之间b o o t l d a d e r 也有很大的差异。常见 的应用于嵌入式l i n u x 系统的处理器架构有x 8 6 、a r m 、i b 帆o t o r o l ap o w e r p c 、 h i t a c h is u p e r h 、m o t 。r o l a6 8 0 0 0 等”。 x 6 8 由于其复杂度和整体成本的考虑,而令许多开发商舍弃;a r m 架构在 许多应用中非常受欢迎,而且有上百家厂商为它提供产品与服务。然而,由于 u b o o t 的发展,有望成为以a r m 为基础的系统标准b o o t l o a d e r ;而m i p s 架构 在嵌入式l i n u x 系统中发展迅猛,丽且以驵i p s 为基础的嵌入式1 i n u x 系统还 没有标准的b o o t l o a d e r 。所以以m i p s 为架构编写个完整的b o o t l o a d e r ,对 以m i p s 为架构的嵌入式l i n u x 系统的开发将会起到一定的指导作用。 1 。3 本课题研究的内容与且的 近几年来,随着嵌入式方面产品的需求越来越大,成千上万的嵌入式电路 板以及相同的电路板上都有多种可能的引导配置,过去的单一嵌入式系统启动 装载方式在很大程度上限制了嵌入式系统的产品开发方案的选择和产品设计。 因此,本文研究的目的是设计一种通用型的b o o t l o a d e r 方案,同时包含该系 统的升级维护功能,并加以实现,可以应用于嵌入式系统开发中,也可阱应用 于嵌入式产品更新和维护阶段。 论文主要内容有以下几点: l 、介绍嵌入式l i n u x 系统b o o t l o a d e r 的一些基本概念,概要介绍目前 b o o t l o a d e r 的发展状况,分析其存在的问题,引出论文研究内容; 2 、讲述b o o t l o a d e r 系统的工作原理,比较p c 机与嵌入式系统差异,列 西南交通大学硕士研究生学位论文第6 页 举当前常用嵌入式引导装载系统,分析其针对性与不足; 3 、提出一种通用的b 0 0 t l o a d e r 方案系统,进行总体设计,重点论述网络 启动与u s b 升级方案的建立与设计; 4 、将该b o o t l o a d e r 系统应用于d v b s 机顶盒中,并论述该b o 。t l o a d e r 系统的逻辑功能分块、硬件初始化过程、装载与升级程序; 5 、详细说明该b o o t l o a d e r 系统在基于m i p s 架构的c p u 芯片上的移植与 编译,列举移植到其他常见的嵌入式c p u 架构上的区别与应做的工作。 6 、总结并指出当前论文工作的不足及改进方向,为今后的工作提供合理 的建议。 西南交通大学硕士研究生学位论文第7 页 第2 章嵌入式l i n u x 的引导装载系统 2 1 嵌入式l i n u x 系统 嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机 的外部设备中就包含r5 1 0 个嵌入式微处理器,键盘、鼠标、软驱、硬盘、 显示卡、显示器、网卡、m o d e m 、声 、打印机、扫描仪、数字相机、u s b 集 线器等均是由嵌入式处理器控制的。在制造工业、过程控制、通讯、仪器、仪 表、汽车、船舶、航空、航天、军事装各、消费类产品等方面均是嵌入式计算 机的应用领域。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的 具体应用相结合后产物,足一个技术密集、资金密集、高度分散、不断创新的 知识集成系统。 把l i n u x 应用于嵌入式系统,一般都不足原封不动地照搬,而是充分考虑 各种具体嵌入式系统的特点,有针对性地对l i n u ;内核加以裁减、修改和补充 主要包括以f 儿个方面: 将l i n u x 内核移植到些典型的微控制器或s o c 芯片上并加以必要的 补充。 对l i n u x 内核的代码进行裁剪,一来可以减小内核映像的“脚印”,二 来可以加快系统的初始化过程。 嵌入式系统的某些常用外部设备在通用系统中是很少见的。所以嵌入 式系统的内核中常常需要一些特殊的设备驱动程序。 对于有实时性要求的应用则需要视要求的高低,采取不同的对策。如 按优先级调度、提高时钟精度、实现可剥夺调度、解决优先级倒转问题和实现 硬实时调度。 l i n u x 内核的代码是高度模块化的,内核的许多功能和j j 兑分都可以通过条 件编译加以取舍和裁剪,有些成分还可以独立编译成可以动态安装的“可安装 模块”。经修改过和扩充的各种嵌入式l i n u x 保留了这个特点,所以对同一个 修补版,还可以再根据具体的需要裁剪、编译出许多不同的可执行映像。传统 修补版,还可以再根据具体的需要裁剪、编译出许多不同的可执行映像。传统 西南交通大学硕士研究生学位论文第8 页 意义上的操作系统,其内核应具备多个方面的功能或成分,既包含用于管理属 于应用层的“进程”成分,如进程管理,还包括进程间通信、设备驱动和文件 系统等等。嵌入式系统来源于传统操作系统,它也具有普通操作系统的基本功 能或成分。 2 1 2 。b 0 0 t l o a d e r 系统 2 2 1 b o o t l o a d e r 系统的常见概念 归纳起来,和b o o t l o a d e r 系统相关的概念有如下一些: b o o t l o a d e r 所支持的c p u 和嵌入式板:每种不同的c p u 体系结构都有 不同的b 0 0 t l 0 8 d e r 。有些b o o t l o a d e r 也支持多种体系结构的c p u ,比如u b o o t 就同时支持a 跳体系结构和m i p s 体系结构。除了依赖于c p u 的体系结构外, b 0 0 t l o a d e r 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对 于两块不同的嵌入式开发板而言,即使它们是基于同一种c p u 而构建的,要想 让运行在一块板子上的b o o t l o a d e r 程序也能运行在另一块板子上,通常也都 需要修改b o o t l o a d e r 的源程序。 b o o t l o a d e r 的安装介质( i n s t a l l a t i o nm e d i u m ) :系统加电或复位后, 所有的c p u 通常都从某个由c p u 制造商预先安排的地址上取指令。比如,基于 a r m 7 t d m i 核的c p u 在复位时通常都从地址0 x o o 0 0 0 0 0 0 取它的第一条指令;基 于m i p s 核的c p u 在复位时一般从地址0 x 8 8 0 0 0 0 0 0 处提取它的第一条指令。而 基于c p u 构建的嵌入式系统通常都有某种类型的固态存储设备( 比如:r o m , e 2 p r o m 或f l a s h 等) 被映射到这个预先安排的地址上。因此在系统加电后,c p u 将首先执行b 0 0 t l o a d e r 程序。 用来控制b o o tl o a d e r 的设备或机制:主机和目标机之间一般通过串 口建立连接,b o o t l o a d e r 软件在执行时通常会通过串口来进行i 0 ,比如:输 出打印信息到串口,从串口读取用户控制字符等。 b o o t l o a d e r 的启动过程分单阶段( s i n g l es t a g e ) 与多阶段 ( m u l t i s t a g e ) :通常多阶段的b o o t l o a d e r 能提供更为复杂的功能,以及更好 的可移植性。从固态存储设备上启动的b o o tl o a d e r 大多都是分两个阶段的启 动过程。 西南交通大学硕士研究生学位论文第9 页 b o o t l o a d e r 的操作模式( o p e r a ti o nm o d e ) :大多数b o o t l o a d e r 都包 含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员 才有意义。从最终用户的角度看,b o o t l o a d e r 的作用就是用来加载操作系统, 不存在启动加载模式与下载工作模式的区别。启动加载( b o o tl o a d i n g ) 模式: 也称为“自主”( a u t o n o m o u s ) 模式,即b o o t l o a d e r 从目标机上的某个同态存 储设备上将操作系统加载到r a m 中运行,整个过程没有用户的介入。该模式是 b o o t l o a d e r 的正常工作模式,在嵌入式产品发布的时侯,b o o t l o a d e r 必须工 作在这种模式下:下载( d o w n l o a d i n g ) 模式:即目标机上的b o o t l o a d e r 将通过 串口连接或网络连接等通信手段从主机上下载文件( 下载内核映像和根文件系 统映像等) 。从主机下载的文件通常首先被b o o t l o a d e r 保存到目标机的r a m 中,然后再被b o o tl o a d e r 写到目标机上的f l a s h 类固态存储设备中。下载模 式通常在第一次安装内核与根文件系统时使用;此外,以后的系统更新也会使 用该工作模式。工作于下载模式下的b 0 0 t l o a d e r 通常会向它的终端用户提供 个简单的命令行接口。像b 1 0 b 这样功能强大的b o o t l o a d e r 通常同时支持以 上两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,b 1 0 b 在启动时处于正常的启动加载模式,但是它会延时1 0 秒等待终端用户按下任 意键而将b 1 0 b 切换到下载模式。如果在l o 秒内没有用户按键,则b 1 0 b 继续 启动l i n u x 内核。 b o o t l o a d e r 与主机之间进行文件传输使用的通信设备及协议:最常见 的情况就是,目标机上的b 0 0 t l o a d e r 通过串口与主机之间进行文件传输。但 是,串口传输的速度是有限的,因此常通过以太网连接并借助t f t p ( ( t r i v i a l f i l et r a n s f e rp r o t o c o l ,简单文件传输) 协议来下载文件。但此时,主机方 所用的软件则有所考虑。比如,在通过以太网连接和t f t p 协议来下载文件时, 主机方必须有一个软件用来提供t f t p 服务n “。 2 2 2 b o o t l o a d e r 系统的工作原理 2 2 2 1 p c 机引导装载系统的工作原理 计算机在加电时的那一刻,无操作系统在运行,开始启动时,执行在物理 地址0 x f f f f f f f 0 处找到的代码。硬件把这个地址映射到某个只读、持久的存 储芯片中,这就是通常称为r o m ( 只读内存) 的一种内存。r o m 中所存放的程序 西南交通大学硕士研究生学位论文第1 0 页 集传统上称为b i o s ( 基本输入输出系统) ,因为它包括几个中断驱动的低级程 序,一些操作系统可以用这些程序来处理组成计算机的硬件设备。 l i n u x 在启动阶段要集中使用b i o s ,此时l i n u x 必须要从磁盘或者其他外 部设备中获取内核映像。b i o s 启动过程实际上执行以下四个操作: l 、上电自检。对计算机硬件执行一系列的测试,用来检测现在存在的设 备以及这些设备是否正常工作。 2 、初始化硬件设备。 3 、搜索一个操作系统来启动。实际上,根据b i o s 的设置,这个过程可能 要试图访问( 按照用户预定义的次序) 系统中软盘、硬盘和c d r o m 的第一个扇 区( 引导扇区) 。 4 、只要找到一个有效的设备,就把第一个扇区的内容拷贝到r a m 中从物 理地址o x o o 0 0 7 c o o 开始的位置,然后跳转到这个地址处,开始执行月4 才装载 进来的代码。 p c 机的引导装载程序( b o o t l o a d e r ) 是由b 1 0 s 用来把操作系统的内核映像 装载到r a m 中所调用的一个程序:引导装载程序有两种常用内核映像的装入方 式,一种是从软盘上启动,另一种是从硬盘上启动。 1 、从软盘上启动 如果l i n u x 内核是从一张软盘中被装载的,那么引导装入程序就相对简 单。它以汇编语言编写,存放在a r c h i 3 8 6 b o o t b o o t s e c s 汇编语言文件中。 当通过编译内核源码而产生一个新的内核映像时,这个汇编语言文件所产生的 可执行代码存放在这个内核映像文件的开头。因此,生成一张包含l i n u x 内核 的可启动的软盘就很简单。可以把磁盘上从第一个扇区开始的内核映像拷贝到 软盘中来创建可启动软盘。当b i o s 装载软盘的第一个扇区时,实际上就是拷 贝引导装载程序的代码。 2 、从硬盘启动 与从软盘启动不同,硬盘的第一个扇区称为主引导记录( m a s t e rb 0 0 t r e c o r d :船r ) ,该扇区中包括分区表和一个小程序,这个小程序用来装载被启 动的操作系统所在分区的第一个扇区。按照这种方法,只有那些内核映像存放 在活动分区中的操作系统才可以被启动。而l i n u x 的处理方式更加灵活,因为 l i n u x 使用一个巧妙的程序把这个包含在鼢r 中的不完善的程序替换掉,这个 程序称为l i l 0 ( l i n u xl o a d e r ) 或g r u b ( g r a n du n i f i e db o o t l o a d e r ) 它允许用 户来选择要启动的操作系统。 西南交通大学硕士研究生学位论文第11 页 如果导入的是l i l o 内核映像,l i l o 引导装入程序依赖于b i o s 例程,l i l 0 执行的操作本质上等价于在前面关于软盘部分所描述的集成进内核映像中的 引导装载程序。l i l o 引导装入程序被分为两部分,因为不划分的话,它会因 太大而无法装进 【b r 中。m b r 或者分区引导扇区包括一个小的引导装入程序, 由b 1 0 s 把这个小程序装入从地址o x o 0 0 0 7 c 0 0 开始的r a m 中。这个小程序又把 自己移到地址o x 0 0 0 9 a 0 0 0 ,建立实模式栈( 从0 x o 0 0 9 b 0 0 0 到o x 0 0 0 9 a 2 0 0 ,并 把l i l o 的第二部分装入到从地址o x o 0 0 9 b 0 0 0 开始的r a m 中。第二部分又依次 从磁盘读取可用操作系统的映射表,并提供给用户一个提示符,因此用户就可 以从中选择一个操作系统。最后,用户选择了被装入的内核后( 或给一个延迟 时间以使l i l 0 选择一个默认值) ,引导装入程序就可以把相应分区的引导扇区 拷贝到r a m 中并执行它,或直接把内核映像拷贝到r a m 中。随后程序将会调用 d e c o i 口p r e s sk e r n e l ( ) 函数来解压内核映像。首先显示“u n c o m p r e s s i n g l i n u ”信息。完成内核映像的解压之后,显示“o k ,b 0 0 t i n gt h ek e r n e l ” 信息。如果内核映像是低装载的,那么解压后的内核就被放在物理地址 o x 0 0 1 0 0 0 0 0 处。否则,如果内核映像是高装载的,那么解压后的内核就被放 在位于这个压缩映像之后的临时缓冲区中。然后,解压后的映像就被移动到最 终的从物理地址o x 0 0 1 0 0 0 0 0 开始的位置。并跳转到s t a r t e r n e l ( ) 函数完成 l i n u x 内核的初始化工作并启动系统i n i t 进程。至此,整个p c 体系结构中的 系统启动过程完毕n “。 2 2 2 2 嵌入l i n u x 引导装载系统的工作原理 一个嵌入式系统1 i n u x 系统从软件的角度看通常可以分为四个层次:引导 加载程序、l i n u x 内核、文件系统、用户应用程序。引导加载程序是系统加电 后运行的第一段软件代码。从上述p c 体系结构可以知道,p c 机中的引导加载 程序由b 1 0 s 和位于硬盘鹏r 中的b o o t l o a d e r ( 比如,l i l o 和g r u b 等) 一起 组成。在嵌入式系统中,并没有像b i o s 那样的固件程序,因此整个系统的加 载启动任务完全由b o o t l o a d e r 来完成。 嵌入式l i n u x 系统一般采用主机目标机的开发方式,通过串口、网络 进行文件传输( 下面以串口为例) 。由于b o o t l o a d e r 的实现依赖于c p u 的体系 结构,因此大多数b 0 0 t l o a d e r 都分为s t a g e l 和s t a g e 2 两大部分。依赖于 c p u 体系结构的代码通常都放在s t a g e l 中,常用汇编语言实现,s t a g e 2 则通 西南交通大学硕士研究生学位论文第1 2 页 常用c 语言来实现。 b o o t l o a d e r 的s t a g e l 通常包括以下步骤( 以执行的先后顺序) : 1 硬件设备初始化: 目的是为s t a g e 2 的执行以及随后的k e r n e l 的执行准备基本的硬件环境。 通常包括以下步骤:屏蔽所有的中断、设置c p u 的速度和时钟频率、r a m 初 始化、初始化l e d 、关闭c p u 内部的指令数据c a c h e 。 2 为加载b 0 。t l o a d e r 的s t a g e 2 准备r a m 空间: 为了获得更快的执行速度,通常把s t a g e 2 加载到r a m 空间中来执行,因 此必须为加载b o o t l o a d e r 的s t a g e 2 准备好一段可用的r a m 空间范围。由于 s t a g e 2 通常是c 语言执行代码,因此在考虑空间大小时,除了s t a g e 2 可执行 映像的大小外,还必须考虑堆栈空间。 3 拷贝b o o t l o a d e r 的s t a g e 2 到r a m 空间中: 拷贝时要确定两点:( 1 ) s t a g e 2 的可执行映像在固态存储设备中存放的起 始地址和终止地址;( 2 ) r a m 空间的起始地址。 4 设置好堆栈并跳转到s t a g e 2 的c 语言执行代码的入口点。 堆栈指针的设置是为了执行c 语言代码作好准备。通常可以把s p 的值安 排在l m b 的r 埘空间的最顶端( 堆栈向下生长) 。经过上述这些执行步骤后、系 统的物理内存布局应该如图2 1 所示。在上述一切就绪后,可跳转到 b 0 0 t l o a d e r 的s t a g e 2 中执行。 西南交通大学硕士研究生学位论文第1 3 页 s t a g e l 为s t a g e 2 可执行映象准 r a m 地 备的r a m 地址范围,大小:1 m 址空间 ( b l a n k ) r a m d i s k f l a s h 地 内核映象 址空间 ( b l a l l l ( ) b o o t l o a d e r 的s t a g e 2 可执行映象 可能的最大大小:6 3 k b 一 b o o t i o a d e r 的s t a g e l 可执行映象 大小:1 k b 图2 一ls t a g e 2 可执行映像刚被拷贝到r 勰空间时的系统内存布局 b 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论