(计算机应用技术专业论文)linux环境下duet平台引导程序设计与实现.pdf_第1页
(计算机应用技术专业论文)linux环境下duet平台引导程序设计与实现.pdf_第2页
(计算机应用技术专业论文)linux环境下duet平台引导程序设计与实现.pdf_第3页
(计算机应用技术专业论文)linux环境下duet平台引导程序设计与实现.pdf_第4页
(计算机应用技术专业论文)linux环境下duet平台引导程序设计与实现.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

j c l a s s i f i e di n d e x : u d c : l i l ll lillu lli i ii i ii i l y 18 0 8 4 9 2 d e s i g na n di m p l e m e n t a t i o no fd u e t t 1t1n l o a d e ru n d e rl l n u xe n v l r o n m e n t c a n d i d a t e : g u i ,k u n s u p e r v i s o r :p r o f g ug u o c h a n g a c a d e m i cd e g r e ea p p l i e df o r :m a s t e ro fe n g i n e e r i n g s p e c i a l i t y :c o m p u t e ra p p l i e dt e c h n o l o g y d a t eo fs u b m i s s i o n :j a n u a r y , 2 010 d a t eo fo r a le x a m i n a t i o n : m a r c h ,2 010 u n i v e r s i t y :h a r b i ne n g i n e e r i n gu n i v e r s i t y 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导下,由 作者本人独立完成的。有关观点、方法、数据和文献的引用已在 文中指出,并与参考文献相对应。除文中己注明引用的内容外, 本论文不包含任何其他个人或集体己经公开发表的作品成果。对 本文的研究做出重要贡献的个人和集体,均已在文中以明确方式 标明。本人完全意识到本声明的法律结果由本人承担。 作者( 签字) :二妒 , 、 日期:功- o 年毒月6 日 哈尔滨工程大学 学位论文授权使用声明 本人完全了解学校保护知识产权的有关规定,即研究生在校攻读 学位期间论文工作的知识产权属于哈尔滨工程大学。哈尔滨工程 大学有权保留并向国家有关部门或机构送交论文的复印件。本人 允许哈尔滨工程大学将论文的部分或全部内容编入有关数据库进 行检索,可采用影印、缩印或扫描等复制手段保存和汇编本学位 论文,可以公布论文的全部内容。同时本人保证毕业后结合学位 论文研究课题再撰写的论文一律注明作者第一署名单位为哈尔滨 工程大学。涉密学位论文待解密后适用本声明。 本论文( 口在授予学位后即可回在授予学位1 2 个月后口解 密后) 由哈尔滨工程大学送交有关部门进行保存、汇编等。 作者( 签字) :多弋导师( 签字) :辛;曰呙 日期:翻。年刍月i b 日2 oio 年3 月i 苫日 哈尔滨t 稃大学硕十学位论文 摘要 u n i f i e de x t e n s i b l ef i r m w a r ei n t e r f a c e ( u e f i ) 是由i n t e l 提出的下一代计 算机固件接口标准。旨在糅合现代软件工程思想以及设计方法,构建出一个 灵活、健壮、易扩展、可重用、方便开发和维护的固件开发框架。i n t e l 在u e f i 框架的基础上,通过开源社区提供了一套u e f i 开发包( e d k , e d k 2 ) 及多 种u e f i 模拟平台的实现样例。d u e t 平台包含在u e f i 开发包中,是一种不 同于其它运行在操作系统层次上模拟平台的u e f i 模拟平台,其明显的特点 是再封装传统b i o s 产生的a c p i 表中的各种函数及系统调用、形成u e f i f r a m e w o r k 所需要的各种系统接口,从而运行在实际硬件平台之上。针对其 特点,该模拟平台的设计和实现充分的重用了e d k 2c o r e 中的l i b r a r y 以及 m o d u l e ,以便在最大程度上简化代码和工作量。 本文主要研究了d u e t 平台引导程序的功能,设计思路及实现方法。讨、 论了d u e t 平台和基于u e f if r a m e w o r k 的平台之间的区别与联系。然后展 开讨论了基于m b r 和g p t 的b o o ts e c t o r 的设计、如何实现相关工具将b o o t s e c t o r 写入到启动介质的相关扇区、同时提出了如何编写s h e l ls c r i p t 及编译 工具编译整个工程。 本文深入描述了从传统b i o s 启动完成之后跳转到d u e t 平台引导程序 执行启动介质的b o o ts e c t o r 、跳转保护模式、解压缩需要执行的d x e 镜像, 并准备d x e 镜像所执行的m e m o r y 、s t a c k 并以h o b 的方式传递给d x e e n t r y p o i n t 。分析了整个d u e t 平台的内存映射、以及d x e l p l 和e f il o a d e r 的实现方式及如何重用传统b i o s 提供的系统调用。 关键词:u e f i ;e d k 2 :d u e t :引导程序;b o o ts e c t o r 一 哈尔滨t 稃大学硕十学位论文 a b s t r a c t u n i f i e de x t e n s i b l ef i r m w a r ei n t e r f a c e ( u e f i ) i st h en e x tg e n e r a t i o ns t a n d a r d o fc o m p u t e rf i r m w a r er a i s e db yi n t e l m i x e dm o d e ms o f t w a r ee n g i n e e r i n gi d e a a n dd e s i g nm e t h o d ,e s t a b l i s ha f l e x i b l e ,r o b u s t ,e a s i l ye x t e n s i b l e ,r e u s a b l e , c o n v e n i e n c ef i r m w a r ed e v e l o p m e n tf r a m e w o r kf o rd e v e l o p m e n t & m a i n t a i n b a s e do nt h eb a s i so fu e f if r a m e w o r k ,i n t e lp r o v i d e sas u i to fu e f ie x t e n s i b l e d e v e l o p m e n tk i t ( e d k ,e d k 2 ) a n dc o u p l e so f u e f ie m u l a t i o np l a t f o r ms a m p l e i m p l e m e n t a t i o na c c o r d i n gt oo p e ns o u r c ef o r u m d u e tp l a t f o r mi n c l u d e db y e d k & e d k 2 ,i sa nu e f ie m u l a t i o np l a t f o r md i f f e r e n tw i t hw h i c hr u n n i n go v e r o p e r a t i o ns y s t e ml e v e lp l a t f o r m s ,o b v i o u sf e a t u r ei sr e e n c a p s u l a t e t h es y s t e m c a l l sa n df u n c t i o n sg e n e r a t e db yl e g a c yb i o s ,t of o r mu e f if r a m e w o r ks y s t e m i n t e r f a c e sf o rs a t i s f yt h er e q u i r e m e n ts oa st or u no nr e a lp l a t f o r m t op o i n t a g a i n s t t h i sf e a t u r e ,d e s i g na n di m p l e m e n t a t i o no ft h ee m u l a t i o np l a t f o r mf u l l r e u s el i b r a r ya n dm o d u l e so fe d k 2c o r et os i m p l i f yt h ec o d ea n dw o r k l o a di n t h ew h o l eh o g t h i st h e s i sm a i n l yf o c u so nr e s e a r c h i n gt h ef u n c t i o n a l i t y 、d e s i g nl a y o u ta n d i m p l e m e n t a t i o nm e t h o d i td i s c u s s e dt h ed i f f e r e n c e sa n dr e l a t i o n s h i po fd u e t p l a t f o r mw i t hu e f if r a m e w o r ka n dt h e nb o o ts e c t o rb a s e do nm b r o rg p t , t h e t o o lf o rw r i t eb o o ts e c t o ri n t os p e c i f ys e c t o ri nt h eb o o tm e d i a , a n ds i m p l yf o r w r i t es h e l ls c r i p ta n db u i l dt o o l st oc o m p i l et h ew h o l ep r o j e c t t h e s i sa l s od e s c r i b e dh o wt oj u m pt od u e tl o a d e ra f t e rl e g a c yb i o s f i n i s h e dt oe x e c u t ec o d ei nb o o ts e c t o r , s w i t c hi n t op r o t e c t e dm o d e ,d e c o m p r e s s d x ei m a g ea n dp r e p a r et h em e m o r y , s t a c kt h e np a s s e dt od x ee n t r y p o i n ta s h o br e q u i r e db yd x ei m a g ef o re x e c u t e a n a l y z e dt h em e m o r yl a y o u to fd u e t p l a t f o r ma n dt h em e t h o do fd x e i p la n de f il o a d e r si m p l e m e n t a t i o n ,h o wt o r e u s et h es y s t e mc a l l so fl e g a c yb i o sa c c o r d i n gt oa c p it a b l e k e yw o r d s :u e f i ;e d k 2 ;d u e t ;l o a d e r ;b o o ts e c t o r 哈尔滨t 稃大学硕七学位论文 目录 第1 章绪论l 1 1 课题研究背景”1 1 2 国内外研究现状”2 1 3 课题主要研究内容2 1 4 论文组织结构”4 第2 章d u e t 平台分析6 2 1u e f if r a m e w o r k ”6 2 2d u e tf r a m e w o r k 7 2 3 启动流程8 2 3 1u e f i 启动流程9 2 3 2d u e t 启动流程“1o 2 4d u e t 与u e f if i r m w a r e 的异同”12 2 5 本章小结1 3 第3 章d u e t 平台引导程序的设计1 5 3 1 磁盘分区表l5 3 1 1m a i nb o o tr e c o r d “1 6 3 1 2g u i d e dp a r t i t i o nt 2 l b l e ”18 3 2l z m a 压缩2 0 3 3g n u g e n b o o t s e c t o r 2 2 3 4b u i l ds h e l ls c r i p t 2 2 3 4 1p o s tb u i l d 2 2 3 4 2c r e a t eb o o td i s k 2 3 3 5a c p i ”2 4 3 6 平台模块划分2 8 3 7 内存映射2 9 3 8 本章小结3 2 一 哈尔滨t 稃大学硕十学位论文 第4 章d u e t 平台引导程序的实现”3 4 4 1b o o ts e c t o r 3 4 4 1 1b i o sp a r a m e t e rb l o c k 的实现3 4 4 1 2 查找e f i l d r 3 5 4 1 3 查找e f i v 打3 6 4 2e f il o a d e r 3 7 4 2 1 跳转保护模式3 7 4 2 2 中断向量表3 9 4 2 3 执行e f il o a d e r 4 0 4 3d x e p l 4 5 4 4 实验结果与分析4 8 4 4 1 实验环境及工具”4 8 4 4 2 过程及结果分析4 8 4 5 本章小结5 0 结论5l 参考文献5 3 攻读硕士学位期间发表的论文和取得的科研成果5 5 致i 射”5 6 哈尔滨t 程大学硕十学位论文 1 1 课题研究背景 第1 章绪论 u n i f i e de x t e n s i b l ef i r m w a r ei n t e r f a c e ( u e f i ) 是下一代计算机固件接口 标准【l 】。u e f i 采用面向对象的方法进行设计,用模块化的方法组织驱动及应 用程序,模块间以标准的协议进行通信。u e f i 旨在替代b i o s ,成为能够利 用高级语言以及现代软件工程方法的下一代固件接口。 d u e t ( d e v e l o p e r su e f ie m u l a t i o n ) 平台的是i n t e l 为了方便u e f i 开发 人员进行u e f i 驱动程序及应用程序开发和调试而开发的一种基于硬件环境 的u e f i 模拟平台。基于u e f i 平台架构的d u e t 平台提供了一种在传统b i o s 环境下可以进行引导、加载的u e f i 环境。其可以在安装有传统b i o s 的基于 i a 3 2 或者认6 4 架构的实际平台上运行,也可以在q e m u 、b o c h s 、v m w a r e 等虚拟机上运行。从而使得基于u e f ib i o s 的驱动和应用程序的开发可以不 必要使用具有调试和烧写接口的主板平台,大大的方便了u e f i 驱动及应用 程序的开发和调试工作。 而引导程序则是d u e t 平台最基本也是架构最重要的部分。负责在传统 b i o s 生命周期结束之时,接管整个系统平台,加载引导介质中位于m b r 上 针对d u e t 平台所需的代码并运行。为u e f i 环境的建立起到一个承上启下 的关键作用。图1 1 为d u e t 平台的一个整体概况。 僦嚣一。垒蟊一 图1 1d u e t 平台整体概况 可以看出,d u e t 平台运行在没有u e f i 环境的硬件平台上,通过启动 哈尔滨t 程大学硕十学佗论文 引导介质( 包括软盘、u 盘、硬盘等) 构建出一个u e f i 的环境、一个可与 用户进行交互的s h e l l ,以及一些脚本和工具。 , 1 2 国内外研究现状 j 目前针对u e f i 框架的模拟平台,直接在硬件平台上运行的只有i n t e l 的 d u e t 平台。i n t e l 公司还存在类似运行于操作系统平台之上的模拟器,主要是 u n i x 环境下的u n i xs i m u l a t o r 和基于m i c m s o t tw i n d o w s 平台的n t 3 2 s i m u l a t o r 。此类模拟器由于运行在操作系统之上,对很多硬件相关的行为只 能是模拟和仿真,比如n t 3 2s i m u l a t o r 中对文件系统的操作在底层实际上是调 用w i n d o w sa p i 完成的。这在很大程度上限制了此类模拟器的功能,对于平 台相关硬件驱动的开发就不可能在此类模拟器上运行。 而d u e t 平台则完全不同,其完全运行在硬件平台上,所有的操作都是 基于u e f i 框架来进行的。开发人员在开发时,在d u e t 上进行调试和测试, 然后就可以直接将最后调试通过的u e f i 驱动或应用程序在实际运行u e f i b i o s 的平台上加载和运行。 1 3 课题主要研究内容 1 b o o ts e c t o r 结构的研究 b o o ts e c t o r 也就是硬盘的第一个扇区,它由m b r( m a s t e rb o o t r e c o r d ) d p t ( d i s kp a r t i t i o nt a b l e ) 和b o o tr e c o r di d 三部分组成。m b r 严 又称主引导记录占用b o o ts e c t o r 的前4 4 6 个字节( 0 - 4 ) x 1 b d ) ,存放系统 主引导程序( 它负责从活动分区中装载并运行系统引导程序) 。d p t 即主 分区表占用“个字节( 0 ,【l b et o0 x l f d ) ,记录了磁盘的基本分区信息。主 分区表分为四个分区项,每项1 6 字节,分别记录了每个主分区的信息( 因 此最多可以有四个主分区) 。b o o tr e c o r di d 即引导区标记占用两个字节 ( 0 x l f ea n d0 x l f f ) ,对于合法引导区,它等于0 x a a 5 5 ,这是判别引导区 是否合法的标志。由于d u e t 平台还需要还支持g p t 格式的磁盘介质( 包括用 于引导和数据存取) ,因此,还需要研究g p t 格式分区时b o o ts e c t o r 的写法。 2 哈尔滨t 挥大学硕十学仲论文 b o o ts e c t o r 结构的研究有助于d u e t 平台引导程序的编写和可引导磁盘 相关工具的开发。b o o ts e c t o r 存放传统b i o s 生命周期结束之后进入d u e t 平 台所需要执行的第一段代码,也是d u e t 平台引导程序的第一段代码。 2 传统b i o s 系统接口及a c p i 表 在d u e t 平台中,为了减少工作量和加快平台的启动、运行速度,大量 使用了如i n t1 0 h 、i n t1 3 h 、i n t1 5 h 等传统b i o s 的中断调用。同时,将传统 b i o s 同o s 的接口- a c p i 表作为d u e t 平台大多数系统信息数据的来源,如启 动设备选择阶段的硬盘可启动存储介质信息。对于引导程序来说,不仅在引 导程序运行时通过b i o s 系统接口调用来完成如读写软盘、显示字符等功能, 还要需要在d u e t 平台运行初期阶段从传统b i o s 中读出a c p i 表并将其转换 成符合u e f i 标准文档规范的格式以便d u e t 平台运行时使用。 3 实模式、保护模式以及b i g 实模式 最早的i n t e l 系列的c p u 只存在一种操作模式,即现在所说的实模式 ( r e a lm o d e ) 。在i n t e l 推出8 0 2 8 6 之后,为了增强c p u 的处理能力,同时也 为了适应当时的软件开发需求,i n t e l 提出了保护模式( p r o t e c t e dm o d e ) 。保 护模式相比实模式有很多优点。包括最大可访问4 g b 内存空间、支持虚拟内 存、支持地址映射、内存保护和分段保护、更灵活的寻址方式以及多任务支 持等。 在d u e t 平台中,相比传统b i o s 的最大不同在于,要尽早跳入保护模式, 从而可以使用保护模式的各种特性。这有利于平台程序开发的灵活性,也使 得程序员可以开发出更复杂,功能更强大的b i o s 应用程序。但在d u e t 平台 中,引导程序最初运行在实模式下通过i n t1 3 h 调用读取需要执行的d u e t 镜 像文件并对其进行解压缩操作。当镜像文件过大时,往往超过实模式下所需 的l m 的地址空间。因此,需要研究b i g 实模式来满足项目需求。 4 d u e t 平台框架 该部分主要研究d u e t 平台的启动流程及内存映射。从而保证引导程序 在引导时将各个模块加载到相应的地址空间。d u e t 平台在代码镜像上主要 3 哈尔滨t 程大学硕十学何论文 f l d 4 部分组成:e f i l o a d e r 、d x e l p l z 、d x e m a i n z 、e f i m a i n z ,z 文件代表使用 l z m a 算法压缩。由于这些镜像文件在e f il o a d e r 中解压缩,虽然此时已经进 入保护模式,可以使用4 g 的地址空间( 针对i a 3 2 ) 。但此时从引导介质上读 取镜像到指定的地址空间,如果镜像文件过大会覆盖掉引导程序所在的代码, 会导致引导失败。因此需要在编译和压缩时都首先考虑代码的大小问题。 5 调试及测试方法的研究 由于d u e t 平台引导程序本身的特殊性,在其启动初期,不可能通过嵌 入g d bs t u b 等方式实现软调试。因此其调试需要在可调试的虚拟机( 如 b o c h s ) 中进行。但d u e t 平台本身运行在实际硬件平台上,在虚拟机中进行 的调试往往会受虚拟机自带的传统b i o s 的影响( 如不符合标准b i o s 文档规 范) 。在这种情况下,需要采用带有硬件调试接口的硬件平台通过i n t e li t p ( 一种基于特殊硬件的调试工具) 进行调试。对调试而言,至少需要掌握在 虚拟机中进行代码调试和使用i t p 进行代码调试两种调试方法。 为了软件的健壮性和规范性。d u e t 平台采用u e f is c t ( 标准测试用例) 进行测试,需要对如何使用u e f is c t 进行一定的研究。 1 4 论文组织结构 本文对l i n u x 环境下d u e t 平台引导程序的设计及实现进行了详细的说 明和描述。讨论了引导程序的研究背景、面临的问题及研究意义,深入分析 d u e t 平台同u e f i 架构的平台的异同,并根据d u e t 平台自身的特点对引 导程序进行了设计及实现,讨论了在设计及实现中遇到的问题及解决方案, 并描述了在开发过程中如何进行调试及测试。全文共分4 个章节进行展开。 第一章为绪论,主要讨论课题的研究背景、研究内容、国内外研究现状。 针对u e f i 模拟器的发展背景,提出了研究d u e t 平台的必要性,明确了引 导程序的地位。 第二章深入分析了d u e t 平台。主要从其f r a m e w o r k 、启动流程、以及 烧写到f l a s h 中的镜像文件所包含模块的异同3 个方面进行展开。在各个小 节中针对d u e t 平台特点,以及其同基于u e f i 的平台的异同点提出了引导 4 程序设计的基本思路。 第三章详细介绍了d u e t 平台引导程序的设计思路。分析了基于d p t 、 g p t 的磁盘分区格式、以及两种磁盘分区格式在b o o ts e c t o r 编写时的不同点 及要求。并从实模式下寻址1 m 地址空间结合传统b i o s 标准文档中i m 以下 地址空间的内存分配分析了d u e t 镜像文件的地址空间。根据地址空间范围 提出了应对镜像文件进行压缩并引出l z m a 压缩的设计思路。本章还针对 l i n u x 环境的特点引出了g n u g e n b o o t s e c t o rq - 具以及应用此工具后镜像文件 编译、生成相关脚本应用程序的设计方法并给出了相关代码。最后结合d u e t 平台自身特点给出了d u e t 平台引导程序在实现过程中应重用传统b i o s 的 a c p i 表。本章还结合d u e t 平台启动流程及镜像文件特点提出了平台模块 划分的思路。 第四章详细描述了d u e t 平台引导程序核心模块的实现。按平台运行时 各模块运行时间顺序进行展开。d u e t 平台引导程序主要由b o o ts e c t o r 、 d x e l p l 、e f il o a d e r 共3 个核心模块组成。分别介绍了各自模块的实现方法, 并给出了相关的实现代码。最后结合各种实验平台对d u e t 平台进行了实验, 并给出了相关的实验结果。 写到f l a s h 中的镜像文件所包含模块的异同3 个方面进行展开。在各个小节 中针对d u e t 平台特点,以及其同基于u e f i 的平台的异同点提出了引导程 序设计的基本思路。 2 1u e f if r a m e w o r k 传统b i o s 的规范自从p c a t 时代起就一成不变,它已经无法很好地适 用于日趋复杂的现代计算机体系,并阻碍了引入新的平台技术。传统b i o s 规范的缺陷包括: 1 ) 仅能使用汇编语言编程,极大地限制了b 1 0 s 程序开发的效率,使得 b i o s 开发成为少数人能够胜任的工作: 2 ) 由各自为政的b i o s 开发商开发,相互之间缺乏兼容性与互操作性; 3 ) 1 6 位实模式的b i o s 程序极大地浪费了i a 3 2 架构所提供的资源,更难 以应用于x “架构。 可扩展固件接口规范( e x t e n s i b l ef i r m w a r ei n t e r f a c es p e c i f i c a t i o n ) 定义 操作系统与系统固件之间的开放接口。这些接口提供了平台相关信息、启动 服务例程以及操作系统运行时服务例程。操作系统装载器与操作系统可通过 接口调用这些服务例程。e f i 规范是一个公开的纯接口定义,它不依赖于某 个特定的b i o s 制造商或某个特定的b i o s 实现。它仅定义了平台固件必须实 现的接口,以及操作系统可能使用的一系列接口与数据结构,其实现的方式 与细节均取决于此规范的实现者。e f i 规范还定义了固件驱动程序模型,使 得所有遵循此模型开发的固件驱动程序能够互相协作【2 】。 u e f if r a m e w o r k 给出了基于可扩展固件接口规范实现平台的层次结构。 其中,整个平台运行于h a r d w a r e 之上,s e c 及p e i 阶段对c p u 以及c h i p s e t 初始化的模块位于整个g r e e nh 的下端,即图2 1 中所示的c p um o d u l e s 以 及c sm o d u l e s 。在g r e e nh 的上半部分,是固件中运行的各个模块的驱动( e f i 6 哈尔滨t 稃大学? 硕十学传论文 d r i v e r ) ,如s c s i 、k e y b o a r d 、u s b 、h a r dd i s k 等。这些驱动模块由d x e 阶 段的核心模块d x ec o r em o d u l e 根据u e f i 标准文档的规定进行加载、运行。 为了兼容传统b i o s ,整个f r a m e w o r k 中设计了一个c s m ( c o m p a t i b i l i t y s u p p o r tm o d u l e ) 提供对基于传统b i o s 的操作系统的支持。g r e e nh 的顶端 是由各个驱动模块按u e f i 标准文档导出的可扩展固件接口。兼容e f i 的操 作系统( 如w i n d o w s7 、f c 7 ) 、p r e e b o o t 环境下的工具如s h e l l 、s m b i o s 查 看器、以及一些外插卡上的o p t i o nr o m 等都运行在基于可扩展固件接口的 基础之上。 芒 圉 匐 - _ 訇 1 譬 暑 一 o 1 胃 图2 1u e f if r a m e w o r k 结构图 2 2d u e tf r a m e w o r k d u e tf r a m e w o r k 从结构上类似u e f if r a m e w o r k ,针对平台特点进行了 部分修改,如图2 2 所示。 哈尔滨t 程大学硕十学何论文 口 f = 圉 一 訇 = _ o o - 万 匿圉圉 图2 2d u e tf r a m e w o r k 结构图 从图2 2 和图2 1 对比可以看出,d u e t 模拟平台和u e f if r a m e w o r k 的 平台的主要区别在于d u e t 平台建立在b i o s 提供的l e g a c yi n t e r f a c e 基础之 上,因此也没有g r e e nh 中的下半部分( c p um o d u l e 和c h i p s e tm o d u l e ) 。 d u e t 模拟平台没有c s m 模块和对传统o s 的支持,因为其本身基于传统 b i o s 之上,不需要c s m 模块去提供对传统b i o s 的兼容。整个框架的其余 部分d u e t 模拟平台和基于u e f if r a m e w o r k 的平台基本相同。 对于d u e t 平台引导引导程序而言,根据此图可以看出引导程序及平台 其它模块应充分重用传统b i o s 接口,从而减少项目开发时间、提高项目开 发质量。 2 3 启动流程 本小节分别介绍u e f if r a m e w o r kb i o s 和d u e tf r a m e w o r kb i o s 的启 8 哈尔滨t 程大学硕十学位论文 动流程,并结合d u e t 平台的特点分析两者的不同之处。 2 3 1u e f i 启动流程 对于一台基于标准u e f if r a m w o r k 的机器来说,其一个生命周期可以分 为s e c t 3 1 、p e i t 3 1 、d x e 4 、b d s 、t s l 、r t 以及a l 阶段【5 1 。如图2 3 所示。 e x o o c d 彳r _ i n t e r f a c e0 s - a b s e n t ,:兀l r ? 1 - 1、 嗣 a p p r ) - l _ l t r a n s i e n t0 s 毒卜 - ;1d 瞻:” i r k = 一 瓮v i c e 1 i l e n v i r o n m e n t _ 1 i - b u s ,o r 明r ) b) a r dys e r v i c e 誊| t r a n s l e n to s n i t i d r i v e rr b o o tl o a d e r f ) ,) i1 ! :二丁j 昂陌- ,m a n a 口针oon_【pllfforrninitialization1-_【osboot】 图2 3u e f if r a m e w o r kb i o s 启动流程图 s e c ( s e c u r i t y ) 阶段主要完成对固件镜像文件的校验,在目前大多数基 于u e f if r a m e w o r k 的平台来说,都没有实现s e c 阶段。一般在可信计算平 台中会考虑实现此阶段。 p e i ( p r ee f ii n i t i a l i z a t i o n ) 阶段用于对平台进行简单的初始化,一般要 求p e i 阶段的运行时间尽可能短。只完成对c p u 的初始化以及南北桥芯片组 的初始化。同时对内存进行简单的初始化,然后跳入d x e 阶段。在p e i 阶段 的初期,由于e d k 2 绝大部分模块基于c 语言编写,运行时需要一定的内存 空间作为堆栈来使用。因此采用c a r 6 ( c a c h ea sr o m ) 技术将c p u 中的 c a c h e 作为内存来使用,当内存完成初始化后,再将应用程序重加载到内存 中运行。p e i 阶段初始化后得到的硬件信息以h o b ( h a n d0 f f b l o c k ) 的形式 传递到下一个阶段d x e 。 d x e ( d r i v e re x e c u t i o ne n v i r o n m e n t ) 阶段是整个基于u e f if r a m e w o r k 9 哈尔滨t 稃大学硕十学位论文 平台中执行时间最长,运行模块最多,也相对最重要的阶段。在此阶段中, d x e 的核心模块d x ed i s p a t c h e r 会根据不断的扫描固件中的各个模块,并为 这些模块加载相应的驱动,类似w i n d o w sd r i v e rm o d e l 。d x ed i s p a t c h e r 是一个相对通用的模块,在n 3 2 、x 6 4 、i p f 不同c p u 架构的硬件平台中, 都可以使用相同的代码而只需要在编译工程文件时更改相应的配置。在d x e 阶段中,硬件平台的绝大部分驱动如设备s c s i 、k e y b o a r d 、u s b 、h a r dd i s k 以及p c i 设备的枚举及加载等都会完成【8 】。并会根据加载的这些驱动得到的 硬件信息生成a c p i 表、s m b i o s 表。 b d s ( b o o td e v i c es e l e c t ) 阶段是一个相对比较简单的阶段。在此阶段 只做启动设备的选择,并根据所选择的启动设备跳转到相关启动设备上的引 导代码进行执行。 由于启动流程之后的阶段如o sb o o t 以及r u nt i m e 相对比较简单而且和 d u e t 平台关系不大,在此不进行介绍。 2 3 2d u e t 启动流程 d u e t 平台的启动流程和基于u e f if r a m e w o r k 的平台启动流程有一定 区别,主要体现在整个启动流程的初始阶段。启动流程如图2 4 所示。 e x p o s e d l :_ := f 1 r、 i n t e r f o c o0 s - a b g e n t i 】- :j - 叠 a p p - r ) t r a n s l e n t0 3 e n v i r o n m e n t r ) r 丌1 r t r a n s l e n to s 。d d e v i c e , d x e l p l b u s o r s d e 晰r v i e c r e 皆 b o o tl o a d e r ) ,j = j j i 。,- 厂b o o t、 - 豳! i 、:一;- _ ,、m a n a c l e r l 订石_ j _ _ - _ 一 ,: 、 1 - j 。l i ;7 1 i :_ l ;i - _ 7 :i r 。i ll = 百jj i 1 j l :e c u r l t y l e g a c y d u e td r l v e rb o o tt r s n s l e n tr u n t i m ea f t e r b i o s l o a d e r e x e c u t i o nd s v s y s t e ml o a di r t i l i f e e n v l r o n m e n ts e l e c t f r s l i( a l ) l d x e l( b d s l l e g a c y b o o t 【d u e t b o o t 1 。【o sb o o t 】 图2 4 d u e t 启动流程图 1 0 哈尔滨t 程大学硕十学佗论文 从以上启动流程可以看出,d u e t 平台经过b o o ts e c t o r 引导后,由d u e t l o a d e r 和d x ei p l 阶段完成d x e 阶段运行所必须的数据准备后,直接跳入 d x e 阶段。而没有一般平台所应经历的s e c 阶段,以及c p u 、c h i p s e t 、以 及b o a r d 的初始化。对于s e c 阶段而言,d u e t 平台本身并不需要。对于p e i 阶段,基于u e f if r a m e w o r k 的平台在完成c p u 、c h i p s e t 以及b o a r d 简单的 初始化对d u e t 平台也不需要,因为传统b i o s 已经完成了相关初始化使得 这些硬件已经直接可用。在初始化过程中所得到的硬件平台信息d u e t 平台 都可以从传统b i o s 的a c p i 表中得到。其余阶段和基于u e f if r a m e w o r k 的 平台一致。对于d u e t 平台的启动流程,根据实际代码的组织情况如图2 5 所示。 。w e r 。司 上 传统b i o s 加电自检( p 0 s t ) 上 l 加载d u e t qi 导程序并执行 l ( o x 0 0 0 0 :7 c 0 0 ) 上 s t a r t 3 2 c o m l ( o x 2 0 0 0 0 。包含e 9 2 0t a b l c 、 t e r n p g d t & i d t ) 上 e f i 3 2 c o m i( 0 x 2 10 0 0 包含t e m p o r a r y i n t e r r u p th a n d l e r ) 上 e f i l o a d c r j d x c l p i j r d x e m a i n ( d x e g o r e ) i c p u d x e 、c p u l o9 2 5 4 、t i m e r 、 p c l s a a c p i 、i d c c o n t r o l l c r 厂r u e f i 、 k , e n v i r o n m e n t j 图2 5d u e t 平台启动流程 1 1 哈尔滨丁稃大学硕十学位论文 以一台安装传统b i o s 的机器为例。系统开机后

温馨提示

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

评论

0/150

提交评论