专利名称:系统固件的可管理扩展机制的制作方法
技术领域:
至少一个实施例涉及计算机系统,尤其涉及计算机系统的固件管理。
背景技术:
计算机系统通过在启动期间装入并执行系统固件来自我检测并初始化。该固件通常称为基本输入/输出系统(BIOS)。通常,BIOS提供计算机系统的操作系统和外部硬件之间的接口。在计算机系统开始启动时,除处理器和固件之外的系统很少被实际初始化。固件中的代码将系统初始化到可由操作系统来控制该系统的程度。
在现代计算机系统中,非易失性存储设备(如闪存设备等)存储BIOS。计算机系统和硬件外设通常将原始固件映像存入它们各自的非易失性存储设备中。为更新该固件,必须重写所有存入非易失性存储设备中的数据。
BIOS通常被更新以适合新的外设技术。然而,如果计算机系统中的固件更新没有适当地完成,那么可能导致非预期的结果。例如,如果在更新固件之后,启动模块与硬件配置不匹配,那么计算机系统可能不再运行。由于在更新固件时可能发生的潜在问题,独立BIOS商(IBV)和固件制造商通常不允许诸如独立软件商(ISV)等的第三方自由访问他们的BIOS来将额外的性能加到BIOS中。
图1是说明根据本发明一实施例的计算机系统的示意图。
图2是固件存储装置的一实施例的示意图。
图3是固件应用安装工具包的一实施例的示意图。
图4是固件生态系统的一实施例的示意图。
图5是说明由本发明的一实施例执行的逻辑和操作的流程图。
图6是说明用于实现本发明实施例的计算机系统的一实施例的示意图。
具体实施例方式
下面对用于计算机系统固件的可管理扩展机制的方法和系统进行描述。在下面描述中,为提供对本发明的完全理解,阐明了大量特定细节,例如关于可扩展固件接口(EFI)框架规范的实施例。本发明可在没有这些特定细节的条件下实施,这对本领域技术人员来说是显而易见的。在其它实施例中,为便于描述,对公知的设计和实现不进行详细描述。
为了让诸如独立软件商(ISV)等的第三方将额外的功能或应用结合到计算机系统或设备的固件中,通常要重写整个固件。运行在固件环境下的应用称为固件应用。固件应用是提供保证计算机系统的可用性、安全性和完整性的可管理解决方案的一种方式,上述固件应用包括供给、防盗、反病毒、硬件/软件资源管理以及盘映像管理。为满足安全性和稳定性的要求,可管理解决方案需要在操作系统中不可见并且在操作系统外部执行。
图1描述了根据本发明一实施例的计算机系统100。计算机系统100包括与总线108耦合的处理器102、存储器104和固件存储装置110。示范性计算机系统100可包括(但不限于)个人计算机、网络工作站、便携式计算机、手持式或掌上型计算机、个人数字助理(PDA)、无线通信设备、视频游戏系统以及数字照相机。
固件存储装置110是非易失性存储设备,非易失性存储设备包括(但不限于)闪存设备、可擦除可编程只读存储器(EPROM)以及电可擦除可编程只读存储器(EEPROM)。固件存储装置110至少存储包括可由计算机系统100执行的指令和/或数据的固件映像。在一实施例中,固件映像包括个人计算机的BIOS固件。在另一实施例中,固件映像包括存储在安装于个人计算机上的扩充板的固件存储设备中的固件。在再一个实施例中,固件图像是存储在无线电话、PDA或数字照相机的固件存储设备中的固件。
在一实施例中,固件存储装置110包括符合EFI框架规范的指令和/或数据。当前的固件体系结构包括将BIOS功能性扩展而超出存储于平台的BIOS设备(例如闪存)中的BIOS代码所提供的功能性的规定。更具体地说,可扩展固件接口使以固件模块和驱动程序形式的固件能够从多种不同的资源甚至通过计算机网络来装入,这些资源包括基本和辅助闪存设备、选择ROM(只读存储器)、各种永久存储设备(例如硬盘、CD ROM(只读光盘存储器)等)。在EFI框架的一实现中,初始化过程包括存储在计算机系统100上的固件的各执行阶段。这些执行阶段包括预EFI初始化(PEI)阶段、驱动程序执行环境(DXE)阶段和EFI1.0执行阶段。这些阶段使各平台设备和服务得以初始化并建立,且使操作系统能够按照遵循EFI1.0执行阶段的OS启动阶段来启动。
在一实施例中,固件存储装置110是闪存设备。要理解,可使用其他类型的用于保存固件代码和/或数据的永久存储设备,而本文中所讨论的使用闪存设备的本发明的实施例仅仅是实施本发明的示范性方案。
闪存是非易失性存储技术,该技术允许制造商和(具有合适的硬件/软件的)终端用户电擦除并(重新)编程信息。闪存通常在称为“块”的存储单元中擦除,而不是在位级擦除,其中当块被擦除时,给定块中的所有位被转换成预定极性(即逻辑电平)。在一实施例中,块的大小是64k。在另一实施例中,块的大小是32k。在一普通类型的闪存(如由Intel公司生产的闪存设备)中,通过将块中的所有位设置成1来电擦除存储块。然后通过将个别位翻转成0以形成对应于数据的合适的位模式,从而将数据写到块中。在其他类型的闪存设备中,擦除的逻辑状态是全0,而将数据写到这些设备中包括将个别位变成1。要注意在传统闪存设备中,个别位不能从改变的(即设置的)逻辑电平翻转回被擦除的逻辑电平;为了更新块中的数据,所有位不得不首先被擦除,然后重写。
根据一实施例,存储设备106也耦合到总线108。这种存储设备包括(但不限于)磁驱、光驱、存储器等。基于驱动器的存储设备106使用介质来存储数据。例如,光驱(如DVD-ROM)从DVD盘读出数据。在备选实施例中,存储装置106不是计算机系统100的一部分,但可被计算机系统100访问。
图2描述了根据本发明一实施例的固件存储装置200的一实施例。固件存储装置200包括主区202和扩展区204。主区202可用于存储诸如BIOS等的基本固件二进制。这些基本固件二进制通常由IBV或硬件制造商来提供。在一实施例中,计算机系统在出厂时具有存储在主区202中的基本固件二进制。在另一实施例中,主区202在出厂时未被固件二进制占用,但随后将由用户来更新。通常,主区202是可更新的,以便能将新的性能加到基本固件二进制或能克服基本固件二进制的不足。例如,当在基本固件二进制产生时不可用的新的硬件设备成为可用时,该基本固件二进制是可更新的,以便计算机系统在更新基本固件二进制之后能使用该设备。
固件应用可存入固件存储装置200的扩展区204中。将固件应用存入扩展区204不影响存储在主区202中的内容。示范性固件应用包括(但不限于)供给、防盗、反病毒、硬件/软件资源管理以及盘映像管理。
在一实施例中,固件存储装置200还包括共享区206。共享区206可作为可由主区和扩展区访问的数据或其他信息的公共存储位置来使用。共享区206便于IBV和ISV的二进制之间的通信和共享资源。在一实施例中,该存储区可在逻辑上成为其他区之一的一部分。例如,若主区中的存储空间已满,则共享区206可被划分成使共享区206的至少一部分被视为主区的逻辑扩展,从而只可由主区访问。
在固件存储装置200的一实施例中,固件存储区在同一物理非易失性存储设备上。存储区的边界由各存储区的位置地址来确定。例如,扩展区和/或共享区可能是不被基本固件二进制使用的空间。在该实施例中,在更新基本固件二进制之前,应检查扩展和/或共享区以确保预期数据没有被重写。在另一实施例中,为至少一个存储区提供了单独的非易失性存储设备。
图3描述了根据本发明一实施例的固件应用安装工具包300的实施例。该工具包300与固件存储装置的扩展区结合使用。在一实施例中,工具包300是固件应用二进制。在另一实施例中,工具包300是OS应用二进制。
在一实施例中,安装工具包300以可执行程序的形式存在。在典型的可执行程序中,有两种类型的数据1)作为可执行计算机指令的二进制,其通常被视为代码段,以及2)包含供代码段访问和处理的常数值的二进制,其通常被视为数据段。在另一实施例中,工具包300不是可执行程序。
图3中的工具包300包括代码段和数据段。代码段包括诸如闪存更新二进制302等的可执行机器指令。该二进制302的使用将在下文中详细描述。另外,代码段可具有诸如机器指令等的其他二进制数据304来检查工具包300的数字签名和数据段中新数据的完整性。
数据段包含至少一个固件应用二进制306。数据段的固件应用二进制306包括供代码段访问和处理的值。在另一实施例中,固件应用二进制由OS应用二进制代替。数据段还可包含其他数据308,其他数据包括(但不限于)数字签名、源信息、OS应用二进制或固件应用二进制。
在一实施例中,工具包300作为单个文件来传送。例如,代码段和数据段一起被传送。在另一实施例中,工具包300包括两个分开的文件。例如,代码段和数据段是分开的文件。在该实施例中,这些文件分开传送。
能以多种方式调用安装工具包300。在一实施例中,工具包300作为启动选项被调用。作为启动选项调用意味着因为计算机系统正在启动,所以在OS装入之前调用工具包300。该启动选项允许用户访问固件命令行来调用工具包300。
在另一实施例中,工具包300作为外部命令根据固件命令行被调用。一示范性命令行是EFI shell。
在一实施例中,工具包从远程服务器下载并作为PXE(预启动执行环境)占位程序应用被调用。在典型的PXE过程中,客户机从特定服务器下载可执行二进制,该服务器在客户机和PXE服务器之间的先前交互期间被确定。在将上述二进制成功下载后,客户机执行它。通常,PXE占位程序用于安装操作系统(OS)。但是,在该实施例中,PXE过程用于烧制二进制(如BIOS),而不是安装0S。在安装后,固件应用通常由用户通过固件用户接口中的菜单项来调用。
当安装工具包300被初始化时,代码段中的计算机指令(例如,闪存更新二进制302)将访问存储于数据段中的数据(例如,固件应用二进制306)并将上述数据烧制到非易失性存储器(如闪存)中。闪存更新指令不会将它们自己烧制到闪存中。在执行之后,只有数据段中的数据被存入闪存芯片中。工具包300中的其它数据将在系统复位后消失。
图4描述了固件生态系统的一解释性实施例。固件生态系统400具有三个级硬件级402、固件级404和超越固件级406。这些级一起工作来实现固件应用安装。硬件级402包括诸如处理器、存储器、USB设备等的计算机硬件408。硬件级402的非易失性存储设备410(例如闪存设备)用作计算机系统的固件存储装置。在一实施例中,固件存储装置的扩展区可存储固件应用二进制。永久存储固件应用二进制,直到它从该系统中移除为止。硬件级402与固件级404接口。一般地,接口用于描述相关对象能提供的服务或性能。
固件级404包括固件414。此外,固件级404可包括固件应用412。示范性固件应用412包括(但不限于)可管理解决方案和安装工具包。在一实施例中,安装工具包包括固件应用。安装工具包使用由所述固件414提供的接口来将固件应用数据和代码写入非易失性存储设备。在一实施例中,数据被连续传送到非易失性存储设备。更具体地说,数据被传送到扩展区。固件414还提供使扩展区中的数据对上述系统可见的接口。
生态系统的最后级406包括计算机系统的操作系统(OS)416。示范性操作系统包括微软视窗、Linux、OS/2、Unix、Apple OS以及这些操作系统包含的变形例。在成功启动并运行固件后,控制转移到OS 416。
参照图5所示的流程图,本发明的一实施例以如下方式运行来更新存储于计算机系统的固件存储设备中的固件。在一实施例中,在将数据从安装工具包500写入非易失性存储器的扩展区之前,要执行一些准备工作506。在EFI框架系统中,准备工作506包括检查安装工具包的500的数字签名以确保工具包500来自可信源,并检查工具包500的数据完整性以确保数据未被修改、破坏或损坏。在另一实施例中,不执行准备工作,假定工具包500有效。
使用固件接口,安装工具包500将更新存储于非易失性存储器508中的固件502。在一实施例中,只有新数据被加到固件中。在另一实施例中,固件中的所有数据用新数据进行重写。固件接口是由固件提供来完成闪存更新任务的函数调用。固件502然后调用硬件接口来将数据写到非易失性存储器中510。在硬件更新了非易失性存储器504之后,系统的控制返回给固件512。一旦固件502再次拥有控制,控制就可被传回安装工具包514。
在另一实施例中,硬件接口被直接调用以在不使用固件接口的情况下更新闪存。在硬件已更新非易失性存储器504之后,系统的控制可返回给安装工具包514。
现在存入扩展区的固件数据可能仍然对BIOS或终端用户不可见或不可访问。主区可能不得不更新,使得存储于扩展区中的新数据可见。在一实施例中,在EFI框架系统中,人接口基本结构(HumanInterface Infrastructure)(HII)用于动态BIOS菜单插入,这使新的闪存数据对终端用户可见516。
在一实施例中,驱动程序被用于启动选项修改,这使新数据对主区可见516。然而,BIOS本身未被更新。在一实施例中,驱动程序是DXE驱动程序。在该实施例中,对BIOS菜单和启动选项的修改发生在DXE调度阶段(支持DXE调度程序),DXE调度阶段发生在每次系统启动期间。DXE调度程序在每次系统启动时触发对BIOS和启动选项的修改。
在另一实施例中,BIOS被永久更新而不需要在每次系统启动时被修改。在固件接口已被更新后,将控制返回给安装工具包518。
图6说明了用于实施本文描述的本发明实施例的示范性计算机系统600的一实施例。计算机系统600一般性地说明了各种计算机设备,包括个人计算机、膝上型电脑、工作站、服务器等;为简化说明,本文只讨论计算机系统的基本部件。计算机系统600包括处理器机架602,其中可容纳各种硬件部件,包括软盘驱动器604、硬盘606、电源(图中未显示)以及用适合集成电路组装的母板,集成电路包括与一个或多个处理器612耦合的系统存储器610。存储器610可包括(但不限于)动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、内存总线动态随机存取存储器(RDRAM)等。处理器612可为传统微处理器,包括(但不限于)Intel公司x86、Pentium、Xscale或Itanium系列微处理器、Motorola系列微处理器、IBM PowerPC微处理器等。硬盘606可包括单个单元或多个单元,并且作为可选的方案可位于计算机系统600外部。系统还包括固件存储于其上的启动固件设备,该设备通常可包括诸如ROM设备620或闪存622等的非易失性存储器。母板还可包括其他固件设备(图中未显示)。通常,系统的处理器包括32位或64位体系结构,而系统存储器包括适合处理器的物理寻址方案,并可通过处理器和存储器连接的对应地址总线和数据总线来访问。
系统可包括用来显示由计算机系统600运行的固件、软件程序和程序模块所产生的图形和文本(例如在系统启动期间产生的系统信息)的监视器614。鼠标616(或其他定位设备)可连接到串行端口、USB端口或在通信上耦合到CPU 612的其他类似的总线端口。供用户输入文本和命令的键盘618以类似于鼠标616的方式在通信上耦合到母板608。在一实施例中,计算机系统600还包括用于将计算机系统600连接到计算机网络630(如局域网(LAN)、广域网(WAN)或互连网等)的网络接口卡NIC或内建NIC接口(图中未显示)。
所说明的实施例还包括耦合到母板608的扩展槽的附加卡624。在一实施例中,附加卡624包括固件存储于其上的可选ROM626。作为可选的方案,计算机系统600还可包括只读光盘存储器(“CD-ROM”)驱动器628,CD-ROM盘可插入驱动器中,使得盘上的可执行文件(如操作系统)和数据能被读出或传送到系统RAM 610和/或硬盘606中。计算机系统600中可包括其他海量存储设备。
在另一实施例中,计算机系统600是可与本发明结合使用的手持式或掌上型计算机,有时称为个人数字助理(PDA)。手持式计算机可能不包含硬盘或其他海量存储器,供处理器612执行的可执行程序从有线或无线网络连接载入存储器610中。典型的计算机系统600通常至少包括处理器612、存储器610和将存储器610耦合到处理器612的总线(图中未显示)。
要理解到,在一实施例中,计算机系统600由操作系统软件来控制,操作系统软件包括作为其一部分的文件管理系统(如盘操作系统)。例如,本发明的一实施例利用微软视窗作为计算机系统600的操作系统。在另一实施例中,还可根据本发明的教导使用其他操作系统,操作系统的例子有(但不限于)Apple Macintosh操作系统、Linux操作系统、微软视窗CE操作系统、Unix操作系统、3Com Palm操作系统等。
因此,本发明的实施例可被用作固件和软件代码或支持固件和软件代码,代码在某种形式的处理核心(如处理器612)上执行,或以其他方式在机器可读介质上或机器可读介质内实现。机器可读介质包括任何用于存储或传输以机器(例如计算机)可读取形式的信息的机构。例如,机器可读介质可包括(但不限于)只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等。此外,机器可读介质可包括传播信号,如电信号、光信号、声信号或其他形式的传播信号(例如载波、红外线信号、数字信号等)。
本发明的解释性实施例的上面描述(包括摘要中的描述)不是要穷举所有的情况或将本发明限制为所公开的精确形式。本领域技术人员会认识到,本发明的特定实施例和例子在本文中只是为解释性目的来描述,在本发明的范围内,可进行各种等同的更改。
可根据上面详细的描述对本发明进行这些更改。下面权利要求中所用的词不应被解释成将本发明限制为在说明书和权利要求书中所公开的特定实施例。更确切地说,本发明的范围由下面的权利要求来整体确定,范围要根据所建立的权利要求解释原则来进行解释。
权利要求
1.一种方法,包括将固件二进制文件存储在计算机系统的非易失性存储设备的扩展区中;以及启用所述计算机系统的基本输入/输出系统(BIOS)来访问所存储的固件二进制文件。
2.如权利要求1所述的方法,其特征在于,存储所述固件二进制文件包括通过安装工具包来调用固件接口。
3.如权利要求2所述的方法,其特征在于,存储所述固件二进制文件还包括所述固件接口调用硬件接口以将所述固件二进制文件写到所述扩展区中。
4.如权利要求1所述的方法,其特征在于,存储所述固件二进制文件包括通过安装工具包来调用硬件接口。
5.如权利要求1所述的方法,其特征在于,所述固件二进制文件是固件应用二进制。
6.如权利要求1所述的方法,其特征在于,所述固件二进制文件是操作系统应用二进制。
7.如权利要求1所述的方法,其特征在于,所述计算机系统根据可扩展固件接口(EFI)框架规范来运行。
8.如权利要求7所述的方法,其特征在于,启用所述计算机系统的BIOS包括使用驱动程序执行环境(DXE)调度程序触发所述BIOS来访问所存储的固件二进制文件。
9.如权利要求6所述的方法,其特征在于,所述BIOS被存储在所述非易失性存储设备的主区中。
10.如权利要求6所述的方法,还包括执行准备工作。
11.如权利要求10所述的方法,其特征在于,执行准备工作包括检查所述固件二进制文件的数字签名。
12.如权利要求10所述的方法,其特征在于,执行准备工作包括检查所述固件二进制文件的数据完整性。
13.一种计算机系统,包括处理器;以及在操作上耦合到所述处理器的第一存储设备,基本输入/输出系统(BIOS)存储在所述第一存储设备上;在操作上耦合到所述处理器的第二存储设备,指令存储在所述第二存储设备上,所述指令在被所述处理器执行时进行如下操作将固件应用安装工具包的固件应用二进制文件存储在所述第一存储设备的扩展区中;以及启用所述计算机系统的基本输入/输出系统(BIOS)来访问所存储的固件应用二进制文件。
14.如权利要求13所述的计算机系统,其特征在于,所述第一存储设备包括用于根据可扩展固件接口(EIF)框架规范来操作所述计算机系统的指令。
15.如权利要求13所述的计算机系统,其特征在于,所述第一存储设备还包括存储所述BIOS的主区;以及存储所述固件应用二进制文件的扩展区。
16.如权利要求15所述的计算机系统,其特征在于,第一闪存设备还包括提供所述主区和扩展区之间通信的共享区。
17.如权利要求15所述的计算机系统,其特征在于,所述第一存储设备和第二存储设备是相同的设备。
18.一种制品,包括其上存储多个指令的机器可读介质,当所述指令执行时进行如下操作将固件二进制文件存储在计算机系统的非易失性存储设备的扩展区中;以及启用所述计算机系统的基本输入/输出系统(BIOS)来访问所存储的固件二进制文件。
19.如权利要求18所述的制品,其特征在于,存储所述固件二进制包括调用固件接口。
20.如权利要求19所述的制品,其特征在于,存储所述固件二进制还包括所述固件接口调用硬件接口以将二进制文件写到所述扩展区中。
21.如权利要求18所述的制品,其特征在于,所述固件二进制文件是固件应用二进制。
22.如权利要求18所述的制品,其特征在于,所述固件二进制文件是操作系统应用二进制。
23.如权利要求18所述的制品,其特征在于,所述计算机系统根据可扩展固件接口(EFI)框架规范来运行。
24.一种固件存储装置,包括存储基本输入/输出系统(BIOS)程序代码的主区;以及存储互补BIOS程序代码的扩展区。
25.如权利要求24所述的固件存储装置,还包括存储可由所述主区和所述扩展区访问的数据的共享区。
26.如权利要求24所述的固件存储装置,其特征在于,所述扩展区的互补BIOS程序代码包括数据供给代码。
27.如权利要求24所述的固件存储装置,其特征在于,所述扩展区的互补BIOS程序代码包括防盗代码。
28.如权利要求24所述的固件存储装置,其特征在于,所述扩展区的互补BIOS程序代码包括反病毒代码。
29.如权利要求24所述的固件存储装置,其特征在于,所述扩展区的互补BIOS程序代码包括资源管理代码。
全文摘要
本发明描述了管理固件扩展机制的方法和系统。固件二进制文件被存储在计算机系统的存储设备的扩展区中。所述计算机系统的基本输入/输出系统(BIOS)被修改以访问存于所述扩展区中的所存储的固件二进制文件。在一实施例中,所述计算机系统适应可扩展固件接口(EFI)。
文档编号G06F9/46GK101091163SQ200480044725
公开日2007年12月19日 申请日期2004年12月31日 优先权日2004年12月31日
发明者T·张, J·梅, L·陈 申请人:英特尔公司