使用固件更新应用程序更新部件的固件的方法及装置的制作方法

文档序号:6596666阅读:291来源:国知局
专利名称:使用固件更新应用程序更新部件的固件的方法及装置的制作方法
使用固件更新应用程序更新部件的固件的方法及装置
背景技术
台式计算机、笔记本和其它计算装置中使用的硬件部件一般包括固件,固件是硬件和控制该硬件部件的底层功能的可执行指令的结合。固件使计算装置中安装的硬件部件之间能进行交互,因此对计算装置的正常工作是十分重要的。作为示例,硬驱通常包括在通电时配置硬驱、解释和执行来自处理器的指令以及使硬驱安全掉电的固件。
与任何程序一祥,实现硬件部件的固件时使用的指令易受错误和其它问题影响,这些错误和其它问题经常出现在最終用户购买的部件中。在错误会影响性能或者使部件无法使用的情况下,制造商可能发现其必须发布固件更新来纠正问题。制造商还可以发布固件更新来添加附加特征或者提高部件性能。开发和安装固件更新经常是复杂的容易出错的过程。硬件部件的制造商一般必须花很多时间来为固件更新定制开发安装器。而且一般的固件更新过程需要用户的大量交互,因而负面地影响用户的体验质量并且增加了损坏部件的可能。在不断竞争的个人计算机生意中,对固件更新进行开发、安装和故障检修所需的时间和成本可能对制造商的利润率产生明显影响并导致客户满意度下降。


在附图中,相同的附图标记表示相同的部件或步骤。下面的具体实施方式
參考附图,其中图I是包括机器可读存储介质的计算装置的实施例的框图,该机器可读存储介质被编码有用于执行固件更新应用程序的指令;图2是包括固件更新应用程序的计算装置的实施例的框图,该固件更新应用程序用于更新硬件部件的固件;图3是用于对硬件部件的固件进行更新的方法的示例的流程图;图4A和图4B是由操作系统执行的用于对硬件部件的固件进行更新的方法的示例的流程图;图5A和图5B是在计算装置启动时执行的用于对硬件部件的固件进行更新的方法的示例的流程图。
具体实施例方式如上文描述的,对固件更新进行开发、安装和故障检修所需的时间和成本可能给制造商带来大量开支并导致客户满意度下降。因此,如下面描述的,各个实施例涉及允许高成功率同时从固件更新开发者和用户角度看保持简单的固件更新过程。具体地,在ー些实施例中,由固件-操作系统(OS)接ロ发起的固件更新应用程序对固件更新过程进行管理。固件更新应用程序可以发起可执行的固件更新,在一些实施例中其可以验证更新的可靠性,向OS报告结果以及如果更新失败恢复前面的固件映像。因此,固件更新可能在被管理的环境下发生,以保证安全、向用户提供状态更新、允许文件管理以及简化固件更新过程。当本领域的技术人员阅读和理解下面的描述时,附加实施例以及附加实施例的应用将对本领域的技术人员来说显而易见。在下面的描述中,提到术语“机器可读存储介质”。本文中使用的术语“机器可读存储介质”指的是任何包含或存储可执行指令或其它数据的电子存储装置、磁存储装置、光存储装置或其它物理存储装置(例如硬盘驱动器、闪存等)现在參考附图,附图中相同的附图标记指相同的部件或步骤。图I是包括机器可读存储介质140的计算装置100的实施例的框图,该机器可读存储介质140被编码有用于执行硬件更新应用程序145的指令。计算装置100可以是例如台式计算机、笔记本计算机、服务器、手持计算装置等等。在图I的实施例中,计算装置100包括处理器110、硬件部件120、固件-OS接ロ 130以及机器可读存储介质140和150。处理器110可以是中央处理单元(CPU)、基于半导体的微处理器或任何其它适合于检索和执行在机器可读存储介质140和150中存储的指令的硬件设备。具体地,处理器 110可以取得、解码和执行固件更新应用程序145和固件更新155,以执行下面描述的功能。硬件部件120可以是任何包括用来实现计算装置100的功能的机械元件、磁元件、电子元件和/或电气元件的物理设备。例如,硬件部件120可以是硬盘驱动器、固态驱动器、光盘驱动器、视频卡或网卡、笔记本电池或任何其它的与计算装置100连接的内部或外部物理设备。应当明白,虽然图中示出计算装置100仅包括一个部件120,但是计算装置100可以包括多个部件120,每个部件包括其自己的固件125。每个硬件部件120可以包括固件125,固件125可以包括非易失性机器可读存储介质,该非易失性机器可读存储介质被编码有可由处理器110或者在硬件部件120中包括的控制硬件部件120的功能的处理器(未示出)执行的指令。例如,固件125可以提供从硬件部件120读取或向硬件部件120写入的功能,管理硬件部件120的供电的功能和执行在硬件部件120工作期间使用的其它功能。当制造商为硬件部件120的固件125提供更新吋,可以使用下面详细描述的固件更新功能施加更新。固件-OS接ロ 130可以包括在机器可读存储介质上编码的可执行指令,以提供硬件部件120的固件125和计算装置100的操作系统之间的功能链接。具体地,当计算装置100通电时,固件-OS接ロ 130可以执行一系列指令来初始化、配置和测试硬件部件120以及加载操作系统。此外,固件-OS接ロ 130可以发起固件更新应用程序145来更新在硬件部件120中包括的固件125。作为示例,固件-OS接ロ 130可以检测固件更新155是可用的,于是其从预定位置发起固件更新应用程序145。在一些实施例中,固件-OS接ロ 130是根据统ー的可扩展固件接ロ(UEFI)标准实现的接ロ,以提供初始化计算装置100的服务。作为另ー示例,固件-OS接ロ 130可以是结合基本输入/输出系统(BIOS)实现的UEFI接ロ,使得BIOS执行初始配置(例如开机自检),而UEFI接ロ执行余下配置并与OS通信。固件-OS接ロ 130的其它适合实现将对本领域的技术人员来说显而易见。机器可读存储介质140可以被编码有用于运行固件更新应用程序145的可执行指令。如上文所述,固件更新应用程序145可以由固件-OS接ロ 130发起,以管理固件更新过程。在一些实施例中,在初始化吋,固件更新应用程序145可以定位固件更新155,然后执行固件更新155。此外,固件更新应用程序145可以例如在执行前验证固件更新155、监控执行、向用户提供反馈(例如完成的百分比或剰余时间)以及判断更新是否成功。在一些实施例中,固件更新应用程序145可以由计算装置100的制造商提供。例如,固件更新应用程序145可以在制造或定制期间包含在硬盘驱动器或存储介质内,使得计算装置100可以生来就支持本文中描述的固件更新安装。可选地,在计算装置100上运行的应用程序可以自动地或在用户的指示下将固件更新应用程序145下载到存储介质140上。机器可读存储介质150可以编码有用于对硬件部件120的固件125应用固件更新155的可执行指令。例如,固件更新155可以包括通过使用由硬件部件120的控制器支持的指令访问和修改包含固件125的存储介质的指令。作为更具体的示例,当硬件部件120是硬盘驱动器吋,固件更新155可以包括由硬盘驱动器接受的向在硬盘的ROM或类似存储器上存储的固件映像的特定部分写入的指令。以此方式,固件更新155可以处理对固件125的所有访问,同时固件更新应用程序145可以管理更新过程。
在一些实施例中,固件更新I55可以由硬件部件120的制造商提供,以此方式,硬 件部件120的制造商可以在固件更新155中包括底层指令,这些底层指令在不需要计算装置100的制造商知道这些特定指令的情况下访问和更改固件。相反,由于计算装置100的制造商可以提供固件更新应用程序145来管理更新过程,所以硬件部件120的制造商可以避免配置固件更新155以实现图形用户接ロ、接收用户输入、管理文件以及与固件-OS接ロ130通信的需要。此外,在一些实施例中,固件更新155可以服从由开发固件更新应用程序145的计算装置100的制造商或另ー实体规定的协议,使得固件更新155可以将更新结果返回至固件更新应用程序145。具体地,该协议可以规定固件更新155应当返回什么信息,应当如何传递该信息和对该信息编排格式等等。作为ー个示例,在完成以后,固件更新155可以将表示更新成功还是失败、任何失败的原因以及类似信息的多个返回代码传递给固件更新应用程序145。此外,在一些实施例中,硬件部件120的制造商可以在为具体的固件-OS接ロ 130设计的软件开发工具包(SDK)内开发固件更新155。例如,当固件-OS接ロ 130是UEFI接ロ时,该制造商可以使用UEFI SDK来开发固件更新155。这样的实施例是有优势的,因为它们通过允许使用专门的UEFI应用程序接ロ(API)、开发和调试工具等,而不再需要固件更新155的定制开发。应当注意,虽然存储介质150图示为位于计算装置100外部,但是其也可以位于计算装置100内部。因此,固件更新155可以存储在内部的硬盘驱动器、光盘或别的存储介质上。而且,虽然存储介质140和存储介质150图示为分离的装置,但是它们可以是位于计算装置100内部或外部的同一介质。作为示例,在一些实施例中,固件更新应用程序145和固件更新155都可以存储在外部存储介质(例如闪存驱动器或光盘)上,使得固件更新应用程序145和固件更新155可以从外部介质上启动。这样的实施例是有优势的,例如,将(例如由网络管理员)在多个计算装置100上安装相同的更新的环境下或者在固件更新应用程序145不能从计算装置100的内部存储介质启动的情况下。图2是包括固件更新应用程序240的计算装置200的实施例的框图,该固件更新应用程序240用于更新硬件部件260的固件。如图所示,计算装置200可以包括支持应用程序210、操作系统220、固件-OS接ロ 230、固件更新应用程序240、固件更新250和硬件部件 260。支持应用程序210可以包括为获得固件更新而配置成在OS 220上运行的应用程序。作为示例,具体的支持应用程序210可以使用例如每个硬件部件260的标识符周期地轮询远程服务器,以确定硬件部件260中一个或多个的固件更新的可获得性。当确定可获得更新时,支持应用程序210可以下载该更新到计算装置200能访问的存储介质上。可选地,支持应用程序210可以在用户的指示下下载和存储固件更新250。作为另ー示例,用户可以使用互联网浏览器或使用不同的计算装置获得固件更新。无论用来获得固件更新250的方法如何,固件更新250都可以存储在固件更新应用程序240能访问的位置上。作为ー个示例,支持应用程序210可以将固件更新存储在硬驱或其它机器可读存储介质的专用分区上。在一些实施例中,该分区可以对于计算装置200的用户隐藏起来,使得用户不会通过操作系统220或其它方式访问固件更新250。以此方式,支持应用程序210可以保证在固件更新250被执行以前用户不破坏或以其它方式更改固件更新250。在一些实施例中,支持应用程序210还可以包括将结果报告给计算装置200的制造商、报告给特定硬件部件260的制造商或报告给某一其它实体的应用程序。具体地,当操作系统220在固件更新以后重新启动时,支持应用程序210可以通过OS 220访问这些结果。然后支持应用程序210可以通过网络连接(例如通过互联网)将这些结果发送给制造商或其它实体中的ー个或多个。操作系统220可以充当支持应用程序210的宿主并且担当用户和硬件部件260之间的接ロ。在一些实施例中,当支持应用程序210存储固件更新吋,OS 220可以从支持应用程序那里接收这样存储的通知。然后OS 220可以设置在计算装置200重新启动时应当执行更新的指示并且请求重新启动计算装置。指示可以是例如布尔值、字符串、一系列数字或者任何其它足以表示当可获得固件更新250时的值。OS 220可以将该指示存储在固件-OS接ロ 230能访问的任何存储位置,只要固件-OS接ロ 230在启动时检查该位置以获得该指示。作为ー个示例,OS 220可以使用视窗管理规范(WMI)将该指示写到固件-OS接ロ 230能访问的非易失性存储介质(例如固件-OS接ロ 230的ROM)上。此外,在一些实施例中,OS 220可以使支持应用程序210有权访问从固件更新应用程序240接收的結果。例如,OS 220可以从预设的位置检索固件更新结果,然后将这些结果提供给支持应用程序210。作为ー个示例,OS 220可以使用WMI从固件-OS接ロ 230的ROM检索这些結果。作为另ー示例,OS 220可以从在指定位置存储的文本文件中检索这
些結果。如上文所述,固件-OS接ロ 230可以包括在存储介质上编码的用于提供硬件部件260的固件和OS 220之间的功能链接的可执行指令。在一些实施例中,固件-OS接ロ 230可以包括被编码有检测指令232和发起指令234的机器可读存储介质。检测指令232可以在计算装置200启动期间判断一个或多个硬件部件260的固件是否可获得固件更新250。作为示例,检测指令232可以访问0S220写入指示的位置,以判 断是否可获得固件更新。该位置可以是例如存储介质(例如硬盘)上预设的位置或者ROM或其它可用来实现固件-OS接ロ 230的存储介质中的位置。
当检测指令232确定可获得固件更新吋,发起指令234可以开始固件更新应用程序240。然后,发起指令234可以访问存储固件更新应用程序240的存储介质并发出指令来开始该固件更新应用程序。例如,当固件更新应用程序240存储在专用分区上吋,发起指令234可以知道该位置,因此从该专用分区中启动该固件更新应用程序。作为另ー示例,发起指令234可以确定固件更新应用程序240位于外部驱动器(例如闪存)中,于是其从该外部驱动器启动该固件更新应用程序。然后固件更新过程的管理可以转交给固件更新应用程序240。如上文所述,固件更新应用程序240可以包括在存储介质上编码的用于管理固件更新过程的可执行指令。在一些实施例中,固件更新应用程序240可以包括接收指令242、定位指令244、验证指令246、执行指令248和备份指令249。接收指令242可以从固件-OS接ロ 230接收更新硬 件部件260的固件的指示。例如,当启动固件更新应用程序240时,接收指令242可以接收由固件-OS接ロ 230规定的应用參数。这样的參数可以规定例如可获得更新,标识硬件部件260以及指示固件更新250的存储位置。作为可选,接收指令242可以在不使用应用參数的情况下接收应当执行更新的指示。例如,固件-OS接ロ 230启动固件更新应用程序240可以足以传达可获得更新的指示。定位指令244可以响应于更新固件的指示来定位固件更新250。作为ー个示例,定位指令244可以根据固件-OS接ロ 230使用的应用參数确定固件更新250的位置。作为另一示例,当固件更新250存储在预设的位置,例如专用分区上时,定位指令244可以访问那个位置中的固件更新250。作为又ー示例,定位指令244可以对ー个或多个存储介质执行查找来定位固件更新250。验证指令246可以在发起执行固件更新250以前判断固件更新250是否有效。在一些实施例中,验证指令246可以使用与固件更新250对应的数字签名,该数字签名可以与固件更新250存储在相同位置。例如,在发布固件更新250以前,计算装置250或硬件部件260的制造商可以计算固件更新250的哈希值,然后使用专用密钥加密该哈希值。在执行固件更新250以前,可以有权访问相应公开密钥的固件更新应用程序240可以执行验证指令246来解密被加密的哈希值。然后,验证指令246可以将已解密的哈希值与新计算的固件更新250的哈希值相比较。当这些值匹配时,验证指令246可以确定批准执行固件更新250。如上文所述,固件更新250的哈希值可以由计算装置200的制造商通过使用专用密钥加密。以此方式,计算装置200的制造商可以验证固件更新250的正常作用,计算固件更新250的数字签名,然后将固件更新250和该数字签名提供给其顾客。这样的实施例是有优势的,因为制造商可能是唯一知道专用密钥的一方,从而保证固件更新应用程序240仅会安装由制造商批准的更新。因此这些实施例可以提高安全性并且防止安装恶意或错误固件更新。执行指令248可以开始执行固件更新250,以更新特定硬件部件260的固件。具体地,执行指令248可以从由定位指令244确定的位置启动的固件更新250并且管理更新过程。例如,执行指令248可以估计完成百分比并将其显示给用户。执行指令248还可以接收由固件更新250返回的、表示更新是否成功以及如果没有成功失败原因的值。此外,当更新完成时,执行指令248可以将任何结果写到OS 220能访问的位置(例如固件-OS接ロ230的ROM、预设的文本文件等等中的位置)。备份指令249可以实现备份程序,以保证万一固件更新失败计算装置200仍继续工作。具体地,在执行指令248启动固件更新250以前,备份指令249可以通过例如产生当前映像的副本从硬件部件260的固件中取回固件备份。可选地,如果例如固件的备份是与固件更新250 —起下载的,那么可以在执行固件更新应用程序240以前获得固件的备份。在固件更新250将执行返回给固件更新应用程序240以后,备份指令249可以判断更新是否成功,如果未成功,则通过开始可执行的固件备份或者通过将固件备份复制到硬件部件260的固件中,触发备份的恢复。然而,应当注意,固件更新250可以包括备份指令249。在这样的实施例中,固件更新250可以包括在开始更新程序以前产生固件映像的备份的指令。例如,当固件更新250初始化时,备份指令可以执行复制固件当前内容所需的存取。以此方式,硬件部件260的制造商可以在固件更新250中包括适当的存取指令,不需要计算装置100的制造商知道这些 指令。如果需要,固件更新250还可以包括应用固件更新以后验证更新的指令以及恢复备份的指令。同样如上文详细描述的,固件更新250可以由硬件部件260的制造商以可由固件更新应用程序240执行的文件的形式提供。硬件部件260可以是任何包括用来实施计算装置200的功能的机械元件、磁元件、电子元件和/或电气元件的装置。虽然未以独立的框示出,但用于指令执行的处理器可以包括在硬件部件260中。图3是用于对硬件部件的固件进行更新的方法300的示例的流程图。虽然方法300的执行在下文中是关于计算装置100的部件描述的,但是其它适合的用于方法300的执行的部件将对本领域的技术人员来说是显而易见的。方法300可以以在机器可读存储介质上存储的可执行指令的形式实施。方法300可以从框305开始并继续进行到框310,在这里固件更新155可以存储在计算装置100能访问的机器可读存储介质上。作为ー个示例,处理器110可以执行由计算装置100的操作系统提供的指令,以将固件更新155存储在硬盘或其它内部或外部存储装置上。作为另ー示例,用户可以手动复制固件更新155到机器可读介质上。然后方法可以继续到框320,在这里当计算装置100启动时,固件-OS接ロ 130可以发起固件更新应用程序145。具体地,固件-OS接ロ 130可以访问存储固件更新应用程序145的存储介质并由处理器110触发固件更新应用程序145的执行。在发起固件更新应用程序145以后,方法300可以继续到框330,在这里固件更新应用程序145可以通过开始执行固件更新155触发硬件部件120的固件125的更新。具体地,处理器110可以执行固件更新155来访问和更改包含固件125的存储介质。在固件更新155完成以后,执行然后可以返回到固件更新应用程序145。最后,方法300继续到框335,在这里方法300结束。图4A和图4B是由操作系统执行的用于对硬件部件的固件进行更新的方法400的示例的流程图。虽然方法400的执行在下文中是关于计算装置200的部件描述的,但是其它适合的用于方法400的执行的部件将对本领域的技术人员来说是显而易见的。方法400可以以在机器可读存储介质上存储的可执行指令的形式实施。方法400可以从框405开始并且继续进行到框410,在这里支持应用程序210可以检查在计算装置中包括的一个或多个硬件部件260的固件更新。如上文详细介绍的,支持应用程序210可以通过例如周期地查询远程服务器执行该检查。方法400然后可以继续到框415,在这里支持应用程序210可以判断是否可获得固件更新。当确定不可获得计算装置200的硬件部件260的更新吋,方法400可以返回框410,在这里支持应用程序210可以在经过预定的时间段后检查固件更新。可选地,当可获得更新吋,方法400可以继续到框420。在框420中,支持应用程序210可以将固件更新250从远程服务器下载到计算装置200能访问的存储介质上。方法400然后可以继续 到框425,在这里支持应用程序210可以将固件更新250存储在固件更新应用程序240能访问的位置上。作为ー个示例,支持应用程序210可以将固件更新存储在硬驱或其它机器可读存储介质的预定的目录中或专用分区中。在存储固件更新250以后,方法400可以继续到框430,在这里操作系统220可以设置应执行更新的指示。应当注意,在一些实施例中,方法400的执行可以直接跳至框430。例如,在用户已经手动将固件更新250存储在固件更新应用程序240能访问的位置中的情况下,可以跳过框410、415、420和425的执行。不管怎样,在框430中,OS 220可以将应执行更新的指示存储在固件-OS接ロ 230知道的位置中。然后,方法400可以继续到下文对照图4B详细描述的框435。现在參考图4B,在框435中,计算装置200可以在OS 220的要求下重启或者由用户手动重启。如下文结合图5A和图5B详细描述的,然后固件-OS接ロ 230、固件更新应用程序240和固件更新250可以尝试更新硬件部件260的固件。在尝试更新固件以后,计算装置200然后可以在框440中重启0S220。在OS 220初始化以后,方法400可以继续到框445,在这里支持应用程序210可以访问预定位置来判断是否可获得固件結果。例如,支持应用程序210可以通过OS 220访问提供固件更新结果的固件-OS接ロ 230的接ロ。作为另ー示例,支持应用程序210可以从可在指定位置中访问的文本文件中读取更新結果。当在框445中确定不可获得固件更新结果时,方法400可以继续到框455,在这里方法400结束。如果例如用户在启动期间指示不应启动固件更新应用程序240,因而不会提供更新结果,那么上述场景是可能出现的。可选地,当在框445中确定可获得固件更新结果时,方法400可以继续到框450,在这里支持应用程序210可以将更新结果报告给ー个或多个制造商或其它实体。例如,支持应用程序210可以将更新结果报告给计算装置200的制造商和/或硬件部件260的制造商。这些结果可以包括例如更新是否成功,应用更新的时间以及应用更新所需时间量。如果更新失败,那么这些结果还可以包括失败详情(例如,无效签名、在过程期间的失败、用户中止该过程等等)。方法400然后可以继续到框455,在这里方法400结束。图5A和图5B是在计算装置启动时执行的用于对硬件部件的固件进行更新的方法500的示例的流程图。虽然方法500的执行在下文中是关于计算装置200的部件描述的,但是其它适合的用于方法500的执行的部件将对本领域的技术人员来说是显而易见的。方法500可以以在机器可读存储介质上存储的可执行指令的形式实施。方法500可以从框505开始并且继续进行到框510,在这里可以启动计算装置200。具体地,可以向计算装置200的硬件部件260供电,固件-OS接ロ 230可以执行这些部件260的初始化和配置。然后方法500可以继续到框515,在这里固件-OS接ロ 230可以判断是否可获得用于安装的固件更新。作为示例,固件-OS接ロ 230可以访问OS 220将可获得更新的指示写入的位置。该位置可以是例如存储介质上预定的位置或者ROM或其它用来实施固件-OS接ロ 230的存储介质上的位置。可选地,计算装置200的用户可以通过在计算装置200启动时按压预定的键手动触发固件更新的安装。当在框515中确定不可获得固件更新吋,方法500可以继续到框540,在这里方法540结束并且固件-OS接ロ 230继续其正常工作来加载OS 220。可选地,当确定可获得固件更新时,方法500可以继续到框520。在框520中,固件-OS接ロ 230可以加载固件更新应用程序240来开始固件更新过程。应当注意,固件-OS接ロ 230可以加载来自任何机器可读介质(无论是计算装置200内部的还是外部的)的固件更新应用程序240。方法500然、后可以继续到框525。在框525中,固件更新应用程序240可以定位固件更新250。如上文详细介绍的,固件更新应用程序240可以根据由固件-OS接ロ 230使用的应用參数、通过访问预定位置或者通过执行查找确定固件更新250的位置。其它适合的用于定位固件更新250的方法将对本领域的技术人员来说是显而易见的。在定位固件更新250以后,方法500可以继续到框530,在这里固件更新应用程序240可以尝试验证与固件更新250有关的数字签名。作为ー个示例,同样如上文详细描述的,固件更新应用程序240可以使用公开密钥来解密用相应的专用密钥加密的哈希值,然后将所解密的哈希值与固件更新250的计算的哈希值相比较。在该示例中,当这些哈希值匹配吋,固件更新应用程序240可以确定固件更新250有效。 当在框530中确定验证了该数字签名以及因此固件更新250有效时,那么方法500可以继续到下文结合图5B详细描述的框545。可选地,方法500可以继续到框535,在这里固件更新应用程序240可以向OS 220能访问的位置写入失败结果,表示由于固件更新250的失败验证的原因,固件更新失败。然后方法500可以继续到框540,在这里方法540结束,固件-OS接ロ 230继续其正常工作来加载OS 220。现在參考图5B,在框545中,在执行更新250以前,固件更新应用程序240可以产生将要更新的硬件部件260的固件的备份。作为示例,固件更新应用程序240可以产生当前在硬件部件260的固件上存储的映像的副本。作为另ー示例,可以在执行固件更新应用程序240以前获得该备份,使得固件更新应用程序240不需要产生备份。可选地,可以由固件更新250在开始运行以后执行硬件部件260的固件的备份。然后方法500可以继续到框550,在这里固件更新应用程序240可以开始固件更新250的执行。固件更新250然后可以按需要更改硬件部件260的固件。以此方式,由于固件更新应用程序240启动固件更新250,所以固件更新应用程序240可以管理更新过程。例如,固件更新应用程序240可以显示估计剩余时间并且从固件更新250那里接收表示更新结果的反馈。在固件更新250的执行已完成以后,方法500可以继续到框555,在这里固件更新应用程序240可以判断更新是否成功。作为示例,固件更新应用程序240可以从固件更新250那里接收表示更新是否成功以及如果更新未成功那么ー个或多个失败原因的一个或多个返回代码。当在框555中确定更新未成功时,方法500可以继续到框560,在这里固件更新应用程序240可以将失败详情写到OS 220能访问的位置上。然后,方法500可以继续到框565,在这里固件更新应用程序240可以通过开始可执行的固件备份或者通过将备份复制至硬件部件260的固件,发起备份的恢复。然后,方法500可以继续到框575。可选地,当在框555中确定更新已成功,方法500可以继续到框570。在框570中,固件更新应用程序240可以将成功详情(例如日期和时间、更新持续时间、固件版本号等)写到OS 220能访问的位置上。然后方法500可以继续到框575。在框575中,可以重新启动计算装置200,使得可以应用对硬件部件260的固件的更改,如果有的话。然后方法500可以继续到框580,在这里方法500结束。根据上述内容,本发明公开的示例实施例提供了由固件-OS接ロ发起的执行固件 更新并管理固件更新过程的固件更新应用程序。以此方式,固件更新应用程序可以验证固件更新、向用户提供反馈以及向OS报告結果。此外,由于固件更新应用程序可以在固件-OS接口内执行,所以固件更新应用程序可以有权访问硬盘驱动器以及其它存储装置,使得其可以从多个位置运行更新以及执行文件管理操作。更新的开发也可以简化,因为在ー些实施例中,部件制造商可以提供更改固件所需的可执行文件,同时计算装置制造商可以提供执行更新的环境。因此,示例实施例提供提高用户满意度的可靠用户友好的固件更新过程,同时降低由系统和部件制造商带来的成本。
权利要求
1.一种对计算装置中包括的硬件部件的固件进行更新的方法,该方法包括 由所述计算装置将用于所述硬件部件的可执行的固件更新存储在机器可读存储介质上; 当所述计算装置启动时,由固件-操作系统(OS)接口发起固件更新应用程序;以及由所述固件更新应用程序通过开始执行所述可执行的固件更新来触发所述硬件部件的所述固件的更新。
2.根据权利要求I所述的方法,其中所述固件-OS接口是统一的可扩展固件接口(UEFI)0
3.根据权利要求I所述的方法,其中 所述存储是通过在所述计算装置的操作系统(OS)中运行的应用程序执行的,以及 所述方法进一步包括由所述OS设置应当在重启时执行更新的指示。
4.根据权利要求3所述的方法,其中发起固件更新应用程序是在由所述计算装置的所述固件-OS接口检测到所述指示时执行的。
5.根据权利要求I所述的方法,其中 所述固件更新应用程序由所述计算装置的制造商提供,以及 所述可执行的固件更新由所述硬件部件的制造商提供。
6.根据权利要求5所述的方法,其中所述可执行的固件更新符合由所述计算装置的制造商规定的应用协议,以返回结果给所述固件应用程序。
7.根据权利要求5所述的方法,其中所述可执行的固件更新由所述硬件部件的制造商通过使用为所述固件-OS接口设计的软件开发工具包(SDK)开发。
8.根据权利要求I所述的方法,进一步包括 将所述固件的更新的结果写到所述计算装置的操作系统(OS)能访问的位置;以及通过在所述OS中运行的应用程序将所述结果报告给所述计算装置的制造商和所述硬件部件的制造商中的至少一个。
9.根据权利要求I所述的方法,进一步包括 将用于所述硬件部件的固件备份存储在所述机器可读存储介质上;以及 当检测到所述更新的失败时,使用所述固件备份触发所述硬件部件的所述固件的恢复。
10.一种计算装置,包括 处理器;和 机器可读存储介质,被编码有可由所述处理器执行的指令,所述指令包括 用于在所述计算装置启动期间检测所述计算装置的硬件部件的固件可获得的可执行的固件更新的指令, 用于在检测到可获得所述固件更新时由固件-操作系统(OS)接口发起固件更新应用程序的指令,以及 用于通过在所述固件更新应用程序中开始所述可执行的固件更新来对所述硬件部件的所述固件进行更新的指令。
11.根据权利要求10所述的计算装置,其中所述可执行的固件更新位于所述机器可读存储介质的对所述计算装置的用户隐藏的分区中。
12.根据权利要求10所述的计算装置,其中所述可执行的固件更新包括访问和更改所述硬件部件的所述固件的指令。
13.一种机器可读存储介质,其被编码有可由计算装置的处理器执行以运行固件更新应用程序的指令,所述指令包括 用于从所述计算装置的固件-操作系统(OS)接口接收对所述计算装置的硬件部件的固件进行更新的指示的指令; 用于响应于更新所述固件的指示来定位可执行的固件更新的指令;和 用于在所述固件更新应用程序中开始执行所述可执行的固件更新以更新所述硬件部件的所述固件的指令。
14.根据权利要求13所述的机器可读存储介质,进一步包括 用于在开始执行以前使用在所述机器可读存储介质上存储的数字签名验证所述可执行的固件更新的指令。
15.根据权利要求13所述的机器可读存储介质,其中所述机器可读存储介质是也包括可执行的固件更新的外部存储装置。
全文摘要
示例实施例涉及对在计算装置中包括的硬件部件的固件进行更新的方法。示例方法可以将用于硬件部件的可执行的固件更新存储在机器可读存储介质上。然后该方法可以在计算装置启动时由固件-操作系统(OS)接口发起固件更新应用程序。最后,该方法可以通过开始执行可执行的固件更新来触发硬件部件的固件的更新。还公开了相关计算装置和机器可读存储介质。
文档编号G06F9/22GK102667716SQ200980162575
公开日2012年9月12日 申请日期2009年12月18日 优先权日2009年12月18日
发明者约翰·朗德里 申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1