• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > <原创>EFI:TheNext20yearsBIOSarchitecture---Overview

<原创>EFI:TheNext20yearsBIOSarchitecture---Overview

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了thenext,假面骑士thenext,thenext episode,thenext旗舰店,thenext女装等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: < 原创 > EFI : The Next 20 years BIOS architecture --- Overview
描述:

本文主要分为如下几个部分:
1, EFI Overview :主要从整体上去描述一下什么是EFI。以及应用EFI对我们可能带来的好处。
2, Framework : 从原理,架构等几个方面重点介绍了EFI规范的一种标准实现Intel Platform Innovation Framework for EFI(以下简称Framework)。 
3, Development Tools :重点介绍了目前由AMI提供的开发工具Visual eBIOS。并简单探讨了Insyde公司的相关工具。 同时还介绍了American Arium公司提供的硬件仿真器以及调试软件Source Point。
4, EFI Development : Applications & Drivers  :详细探讨了EFI开发的一些细节问题。并分析了一个简单的EFI Applications。同时还探讨了EFI Drivers。
5, EFI Shell :探讨了EFI Shell。
以上是主要的几个讨论方向,具体还会细分,详见正文部分。
1,EFI Overview EFI综述 
1.1  Problems on legacy BIOS  传统BIOS所面临的难题
在仔细的探讨EFI之前,我们先来回顾一下什么是BIOS。BIOS是英文Basic Input/Output System的缩写,意为基本输入输出系统。从IBM于上世纪八十年代初推出了全世界第一台PC机开始,BIOS就成了个人计算机必备的系统软件,用于管理基本的硬件,提供各种中断调用,引导操作系统等等。可以看出,BIOS对于个人计算机来说,是非常重要的系统软件,没有BIOS的计算机是无法运行的。
传统上的BIOS经过了长达20多年的时间,基本上没有大的特别的改进,在操作系统已经完全32位化的今天,BIOS仍然停留在16位实模式时代。我们知道,在这个模式下,IA32架构的CPU只能访问1MB的基本内存,这就大大的限制了程序员的创造性。同时,各种板卡上的BIOS在映射到系统内存中的时候,受到128Kbytes的大小限制。这使得一台计算机不能安装太多的板卡,否则他们的BIOS的容量将很容易突破128Kbytes,但是在一些服务器上,安装很多板卡已经很常见。
同时由于BIOS一般选择采用汇编语言直接开发,使得开发入门难度很大。很多初级工程师甚至无法完成这样的任务。并且各个公司之间的代码不兼容,严重阻碍了其发展。
1.2  Intel’s solutions :EFI  Intel的解决方案:EFI
EFI是Intel为了解决上述的BIOS难题而推出一项新技术,旨在向业界提供一种在未来20年内仍然可以应用的BIOS架构。EFI是Extensible Firmware Interface的缩写。中文意思是可扩展固件接口。由于目前习惯上叫做EFI,本文将继续称其为EFI而不是它的中文译名。
正如它的名字一样,EFI并不是一套软件,而是一整套定义的很好的接口。它是一种规范,Intel目前已经正式发布了EFI Specification Revisions 1.10。任何人都可以按照EFI写出自己的实现来。而Intel也为我们准备好了一个标准的实现:Intel Platform Innovation Framework for EFI(以下简称Framework)。更加值得一提的是,Framework在BSD协议的规范下,已经实现了开放源代码,这为我们今后开发在EFI之上的应用提供了充分的技术保障。
1.3  Benefits of the EFI  EFI的优点
EFI设计的充分原则就是屏蔽掉下层的硬件,事实上通过我们的分析,EFI已经很有操作系统的味道,EFI大概包括如下的几个部分:
1) Pre-EFI基础代码
2) 针对特定芯片的Pre-EFI模块
3) DXE基础代码
4) DXE驱动(Framework)
5) DXE驱动(硬件)
6) 兼容性支持模块CSM(可选,只支持IA32)
EFI通过上述的这些组成部分,提供了以往BIOS可以提供的全部功能,并且做了大量的更新。同时在容量上也做的相当的完美,可以放入4MB的Flash中。而启动速度和唤醒速度也符合HDG标准。
更加重要的是,EFI要求使用C语言作为开发语言,这样一来,使得我们可以更加容易的加入到BIOS的开发中来,同时也容易实现模块化与标准化。完全模块化的一个好处就是那些ODM或者OEM们可以方便添加他们想要的功能到EFI上。对我们而言,好处也是不言自明的,如果我们决定开始基于EFI的项目,那么我们可以在EFI中添加属于我们自己的模块,更加方便我们的用户的定制,甚至为用户提供个性化服务提供了可能。
1.4  Supported OS  操作系统系统支持情况
   目前正式宣布支持EFI的操作系统包括Microsoft Windows Longhorn以及部分Linux。目前Longhorn已经进入了Beta1测试阶段,Intel也在一个DEMO中展示了用EFI来引导Longhorn的实际情况。同时展示的还有如何用EFI去引导RedHat Linux(需要借助一个第三方的开源软件ELILO)。至于其他的操作系统如Windows XP等,则暂时还不能支持EFI,所以只得使用CSM来达到引导目的。
2, Framework 
2.1  Framework Overview  架构综述
   简单的说,Framework就是EFI的一种实现,由Intel完成。完全实现了EFI Specification Revisions 1.10中提及的各项功能。开发者可以基于Framework,开发出各种EFI应用来。同时也可以为Framework新增新的功能。
2.2  Benefits of using the Framework  使用Framework的好处
   最大的好处可以大大减轻我们的劳动量,我们只把注意力集中到最需要注意的地方上去,既然已经有了EFI的实现,并且是开源的实现,那么自然不需要我们再次实现一次。此外,Framework的其他一些好处还包括:
1) 跨平台Cross platform 目前Framework可以支持Intel IA32/64,XScale等硬件平台。同时我们注意到,Framework并不排斥其他平台,他拥有极高的可移植特性。
2) 模块化设计Model Design Framework的所有特性都在驱动程序之中实现。而Framework本身则提供了高效的管理这些驱动程序的方法。比方说,你可以load一个驱动,而不需要重新启动计算机;当你想更新已经load过的驱动,你只需简单将它unload,然后再load新的驱动就可以了。对我们开发者而言,可以通过编写我们自己的驱动,来为Framework提供我们自己需要的功能。
3) 快速的启动时间Fast Startup Time 正如EFI要求的那样,Framework的启动时间非常迅速,在这一点上,它一点也不比那些传统的BIOS落后。
此外,由于Framework是EFI的实现,所有EFI的优点应该说Framework也都具备。
2.3  The life cycle of the Framework  Framework的生命周期
Framework的执行,是按照如下的顺序来的:
1) SEC :Security。这个是系统上电后立即进入的一个阶段,在这一阶段,Intel并没有做太多的说明,相反,他们说这个阶段可以由大家按照自己的需要利用。也就是说,我们可以安排我们自己想要的任何代码在这个阶段,比如一些身份验证之类的,总之,SEC可以说给开发者带来了充分的可定制服务。
2) Pre-EFI :正如它的名字一般,这个是在真正的EFI环境之前进入的一个状态,这个状态相当重要,以至于Intel花了很多时间来向我们阐述。根据目前的信息,这个阶段大概会做很多初始化的工作,会初始化CPU,初始化主板上的一些控制器以及芯片组,更加重要的是,再这个阶段内,会使用一种技巧,来迅速的建立起C 代码的执行环境,也就是说,会建立一个堆栈。这样,以后机器就可以运行那些由C语言编写的软件了。最后PEI内核会按照一种方法来加载所有的PEIM( Pre-EFI Module )。PEIM是一种可以运行在这个阶段的一种模块化的程序,任何人都可以开发自己的PEIM,加载的工作由PEIM Dispatcher完成。全部加载之后,PEI会调用DXE Main并将系统控制权交给下一个阶段DXE。
3) DXE :Driver Execution Environment。这应该说是最激动人心的阶段,在这个阶段,EFI真正的提供了一个类似OS一样的东西。在上一个阶段PEI,系统已经建立了C代码执行的环境,那么从这个阶段开始,所有的东西,都是用高级语言完成了。进入DXE后,会首先调用各种驱动,比如Video Driver,NIC Driver,Soundcards Driver,USB Driver,PCI Controller Driver等等。完成之后,就开始进行BOOT。而这就是下一个阶段了。
4) BDS :Boot Device Select。在这里,应该会有一个选择,是进入OS呢?还是去执行那些EFI Applications ?选择完成之后,就进入下一个阶段了。
5) TSL :Transient System Load。这个阶段会按照在BDS阶段选择的结果来做不同的事情,如果选择了进入OS,那么控制权会被传递给Final OS Loader。而如果是要去运行EFI Applications,那么控制权交给Transient OS Boot Loader,这样就会建立起一个执行环境,之后就可以执行那些EFI Applications了。目前,应该会执行一个叫EFI Shell的程序。而传统的BIOS Setup也被写成一个EFI Applications。
6) RT :Run Time。这个阶段就是OS运行的阶段。
7) AL :After Life。这个是OS运行之后的阶段,比如关机之类的。但OS崩溃之后也属于这个阶段,也就是说,在系统万一崩溃之后,如果使用EFI,

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • <原创>EFI:TheNext20yearsBIOSarchitecture---Overview

相关文章

  • 2017-06-05 枚举音频设备
  • 2017-06-05 NRF24L01的初次使用
  • 2017-06-05 初学驱动程序开发,不知需要哪些基础知识,望老鸟指点
  • 2017-06-05 adv7441a配置yprpb问题
  • 2017-06-05 本人想学嵌入式开发,想请各位推荐几本好书。
  • 2017-06-05 计算机网络的大作业是网卡驱动开发,无从着手,因此来本版求教
  • 2017-06-05 需要一个verilog测量延时电路
  • 2017-06-05 自定义scatter文件,程序进入HardFault_Handler
  • 2017-06-05 LPC1768485通讯问题
  • 2017-06-05 hostapd可否支持多SSID,用来构造多个无线接入点?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请问一下我想让显示器的某个区域改变亮度,对比度等等!
    • UCOSii和Bootloader
    • (高难度问题求解)如何在一个显示器中显示四个桌面呢?
    • 各位大神留下你们的芳香
    • 域名绑定与ip地址访问是不是无本质区别
    • 求助GPS模块电子围栏算法
    • KFile类在中间层驱动中的使用?
    • 请问内核怎样通知应用层
    • Vxwork下USBHost与USBHun数据包错误
    • 求救:关于PCI

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有