欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用固件更新應(yīng)用程序更新部件的固件的方法及裝置的制作方法

文檔序號:6596666閱讀:341來源:國知局
專利名稱:使用固件更新應(yīng)用程序更新部件的固件的方法及裝置的制作方法
使用固件更新應(yīng)用程序更新部件的固件的方法及裝置
背景技術(shù)
臺式計(jì)算機(jī)、筆記本和其它計(jì)算裝置中使用的硬件部件一般包括固件,固件是硬件和控制該硬件部件的底層功能的可執(zhí)行指令的結(jié)合。固件使計(jì)算裝置中安裝的硬件部件之間能進(jìn)行交互,因此對計(jì)算裝置的正常工作是十分重要的。作為示例,硬驅(qū)通常包括在通電時配置硬驅(qū)、解釋和執(zhí)行來自處理器的指令以及使硬驅(qū)安全掉電的固件。
與任何程序一祥,實(shí)現(xiàn)硬件部件的固件時使用的指令易受錯誤和其它問題影響,這些錯誤和其它問題經(jīng)常出現(xiàn)在最終用戶購買的部件中。在錯誤會影響性能或者使部件無法使用的情況下,制造商可能發(fā)現(xiàn)其必須發(fā)布固件更新來糾正問題。制造商還可以發(fā)布固件更新來添加附加特征或者提高部件性能。開發(fā)和安裝固件更新經(jīng)常是復(fù)雜的容易出錯的過程。硬件部件的制造商一般必須花很多時間來為固件更新定制開發(fā)安裝器。而且一般的固件更新過程需要用戶的大量交互,因而負(fù)面地影響用戶的體驗(yàn)質(zhì)量并且增加了損壞部件的可能。在不斷競爭的個人計(jì)算機(jī)生意中,對固件更新進(jìn)行開發(fā)、安裝和故障檢修所需的時間和成本可能對制造商的利潤率產(chǎn)生明顯影響并導(dǎo)致客戶滿意度下降。


在附圖中,相同的附圖標(biāo)記表示相同的部件或步驟。下面的具體實(shí)施方式
參考附圖,其中圖I是包括機(jī)器可讀存儲介質(zhì)的計(jì)算裝置的實(shí)施例的框圖,該機(jī)器可讀存儲介質(zhì)被編碼有用于執(zhí)行固件更新應(yīng)用程序的指令;圖2是包括固件更新應(yīng)用程序的計(jì)算裝置的實(shí)施例的框圖,該固件更新應(yīng)用程序用于更新硬件部件的固件;圖3是用于對硬件部件的固件進(jìn)行更新的方法的示例的流程圖;圖4A和圖4B是由操作系統(tǒng)執(zhí)行的用于對硬件部件的固件進(jìn)行更新的方法的示例的流程圖;圖5A和圖5B是在計(jì)算裝置啟動時執(zhí)行的用于對硬件部件的固件進(jìn)行更新的方法的示例的流程圖。
具體實(shí)施例方式如上文描述的,對固件更新進(jìn)行開發(fā)、安裝和故障檢修所需的時間和成本可能給制造商帶來大量開支并導(dǎo)致客戶滿意度下降。因此,如下面描述的,各個實(shí)施例涉及允許高成功率同時從固件更新開發(fā)者和用戶角度看保持簡單的固件更新過程。具體地,在ー些實(shí)施例中,由固件-操作系統(tǒng)(OS)接ロ發(fā)起的固件更新應(yīng)用程序?qū)碳逻^程進(jìn)行管理。固件更新應(yīng)用程序可以發(fā)起可執(zhí)行的固件更新,在一些實(shí)施例中其可以驗(yàn)證更新的可靠性,向OS報告結(jié)果以及如果更新失敗恢復(fù)前面的固件映像。因此,固件更新可能在被管理的環(huán)境下發(fā)生,以保證安全、向用戶提供狀態(tài)更新、允許文件管理以及簡化固件更新過程。當(dāng)本領(lǐng)域的技術(shù)人員閱讀和理解下面的描述時,附加實(shí)施例以及附加實(shí)施例的應(yīng)用將對本領(lǐng)域的技術(shù)人員來說顯而易見。在下面的描述中,提到術(shù)語“機(jī)器可讀存儲介質(zhì)”。本文中使用的術(shù)語“機(jī)器可讀存儲介質(zhì)”指的是任何包含或存儲可執(zhí)行指令或其它數(shù)據(jù)的電子存儲裝置、磁存儲裝置、光存儲裝置或其它物理存儲裝置(例如硬盤驅(qū)動器、閃存等)現(xiàn)在參考附圖,附圖中相同的附圖標(biāo)記指相同的部件或步驟。圖I是包括機(jī)器可讀存儲介質(zhì)140的計(jì)算裝置100的實(shí)施例的框圖,該機(jī)器可讀存儲介質(zhì)140被編碼有用于執(zhí)行硬件更新應(yīng)用程序145的指令。計(jì)算裝置100可以是例如臺式計(jì)算機(jī)、筆記本計(jì)算機(jī)、服務(wù)器、手持計(jì)算裝置等等。在圖I的實(shí)施例中,計(jì)算裝置100包括處理器110、硬件部件120、固件-OS接ロ 130以及機(jī)器可讀存儲介質(zhì)140和150。處理器110可以是中央處理單元(CPU)、基于半導(dǎo)體的微處理器或任何其它適合于檢索和執(zhí)行在機(jī)器可讀存儲介質(zhì)140和150中存儲的指令的硬件設(shè)備。具體地,處理器 110可以取得、解碼和執(zhí)行固件更新應(yīng)用程序145和固件更新155,以執(zhí)行下面描述的功能。硬件部件120可以是任何包括用來實(shí)現(xiàn)計(jì)算裝置100的功能的機(jī)械元件、磁元件、電子元件和/或電氣元件的物理設(shè)備。例如,硬件部件120可以是硬盤驅(qū)動器、固態(tài)驅(qū)動器、光盤驅(qū)動器、視頻卡或網(wǎng)卡、筆記本電池或任何其它的與計(jì)算裝置100連接的內(nèi)部或外部物理設(shè)備。應(yīng)當(dāng)明白,雖然圖中示出計(jì)算裝置100僅包括一個部件120,但是計(jì)算裝置100可以包括多個部件120,每個部件包括其自己的固件125。每個硬件部件120可以包括固件125,固件125可以包括非易失性機(jī)器可讀存儲介質(zhì),該非易失性機(jī)器可讀存儲介質(zhì)被編碼有可由處理器110或者在硬件部件120中包括的控制硬件部件120的功能的處理器(未示出)執(zhí)行的指令。例如,固件125可以提供從硬件部件120讀取或向硬件部件120寫入的功能,管理硬件部件120的供電的功能和執(zhí)行在硬件部件120工作期間使用的其它功能。當(dāng)制造商為硬件部件120的固件125提供更新吋,可以使用下面詳細(xì)描述的固件更新功能施加更新。固件-OS接ロ 130可以包括在機(jī)器可讀存儲介質(zhì)上編碼的可執(zhí)行指令,以提供硬件部件120的固件125和計(jì)算裝置100的操作系統(tǒng)之間的功能鏈接。具體地,當(dāng)計(jì)算裝置100通電時,固件-OS接ロ 130可以執(zhí)行一系列指令來初始化、配置和測試硬件部件120以及加載操作系統(tǒng)。此外,固件-OS接ロ 130可以發(fā)起固件更新應(yīng)用程序145來更新在硬件部件120中包括的固件125。作為示例,固件-OS接ロ 130可以檢測固件更新155是可用的,于是其從預(yù)定位置發(fā)起固件更新應(yīng)用程序145。在一些實(shí)施例中,固件-OS接ロ 130是根據(jù)統(tǒng)ー的可擴(kuò)展固件接ロ(UEFI)標(biāo)準(zhǔn)實(shí)現(xiàn)的接ロ,以提供初始化計(jì)算裝置100的服務(wù)。作為另ー示例,固件-OS接ロ 130可以是結(jié)合基本輸入/輸出系統(tǒng)(BIOS)實(shí)現(xiàn)的UEFI接ロ,使得BIOS執(zhí)行初始配置(例如開機(jī)自檢),而UEFI接ロ執(zhí)行余下配置并與OS通信。固件-OS接ロ 130的其它適合實(shí)現(xiàn)將對本領(lǐng)域的技術(shù)人員來說顯而易見。機(jī)器可讀存儲介質(zhì)140可以被編碼有用于運(yùn)行固件更新應(yīng)用程序145的可執(zhí)行指令。如上文所述,固件更新應(yīng)用程序145可以由固件-OS接ロ 130發(fā)起,以管理固件更新過程。在一些實(shí)施例中,在初始化吋,固件更新應(yīng)用程序145可以定位固件更新155,然后執(zhí)行固件更新155。此外,固件更新應(yīng)用程序145可以例如在執(zhí)行前驗(yàn)證固件更新155、監(jiān)控執(zhí)行、向用戶提供反饋(例如完成的百分比或剰余時間)以及判斷更新是否成功。在一些實(shí)施例中,固件更新應(yīng)用程序145可以由計(jì)算裝置100的制造商提供。例如,固件更新應(yīng)用程序145可以在制造或定制期間包含在硬盤驅(qū)動器或存儲介質(zhì)內(nèi),使得計(jì)算裝置100可以生來就支持本文中描述的固件更新安裝??蛇x地,在計(jì)算裝置100上運(yùn)行的應(yīng)用程序可以自動地或在用戶的指示下將固件更新應(yīng)用程序145下載到存儲介質(zhì)140上。機(jī)器可讀存儲介質(zhì)150可以編碼有用于對硬件部件120的固件125應(yīng)用固件更新155的可執(zhí)行指令。例如,固件更新155可以包括通過使用由硬件部件120的控制器支持的指令訪問和修改包含固件125的存儲介質(zhì)的指令。作為更具體的示例,當(dāng)硬件部件120是硬盤驅(qū)動器吋,固件更新155可以包括由硬盤驅(qū)動器接受的向在硬盤的ROM或類似存儲器上存儲的固件映像的特定部分寫入的指令。以此方式,固件更新155可以處理對固件125的所有訪問,同時固件更新應(yīng)用程序145可以管理更新過程。
在一些實(shí)施例中,固件更新I55可以由硬件部件120的制造商提供,以此方式,硬 件部件120的制造商可以在固件更新155中包括底層指令,這些底層指令在不需要計(jì)算裝置100的制造商知道這些特定指令的情況下訪問和更改固件。相反,由于計(jì)算裝置100的制造商可以提供固件更新應(yīng)用程序145來管理更新過程,所以硬件部件120的制造商可以避免配置固件更新155以實(shí)現(xiàn)圖形用戶接ロ、接收用戶輸入、管理文件以及與固件-OS接ロ130通信的需要。此外,在一些實(shí)施例中,固件更新155可以服從由開發(fā)固件更新應(yīng)用程序145的計(jì)算裝置100的制造商或另ー實(shí)體規(guī)定的協(xié)議,使得固件更新155可以將更新結(jié)果返回至固件更新應(yīng)用程序145。具體地,該協(xié)議可以規(guī)定固件更新155應(yīng)當(dāng)返回什么信息,應(yīng)當(dāng)如何傳遞該信息和對該信息編排格式等等。作為ー個示例,在完成以后,固件更新155可以將表示更新成功還是失敗、任何失敗的原因以及類似信息的多個返回代碼傳遞給固件更新應(yīng)用程序145。此外,在一些實(shí)施例中,硬件部件120的制造商可以在為具體的固件-OS接ロ 130設(shè)計(jì)的軟件開發(fā)工具包(SDK)內(nèi)開發(fā)固件更新155。例如,當(dāng)固件-OS接ロ 130是UEFI接ロ時,該制造商可以使用UEFI SDK來開發(fā)固件更新155。這樣的實(shí)施例是有優(yōu)勢的,因?yàn)樗鼈兺ㄟ^允許使用專門的UEFI應(yīng)用程序接ロ(API)、開發(fā)和調(diào)試工具等,而不再需要固件更新155的定制開發(fā)。應(yīng)當(dāng)注意,雖然存儲介質(zhì)150圖示為位于計(jì)算裝置100外部,但是其也可以位于計(jì)算裝置100內(nèi)部。因此,固件更新155可以存儲在內(nèi)部的硬盤驅(qū)動器、光盤或別的存儲介質(zhì)上。而且,雖然存儲介質(zhì)140和存儲介質(zhì)150圖示為分離的裝置,但是它們可以是位于計(jì)算裝置100內(nèi)部或外部的同一介質(zhì)。作為示例,在一些實(shí)施例中,固件更新應(yīng)用程序145和固件更新155都可以存儲在外部存儲介質(zhì)(例如閃存驅(qū)動器或光盤)上,使得固件更新應(yīng)用程序145和固件更新155可以從外部介質(zhì)上啟動。這樣的實(shí)施例是有優(yōu)勢的,例如,將(例如由網(wǎng)絡(luò)管理員)在多個計(jì)算裝置100上安裝相同的更新的環(huán)境下或者在固件更新應(yīng)用程序145不能從計(jì)算裝置100的內(nèi)部存儲介質(zhì)啟動的情況下。圖2是包括固件更新應(yīng)用程序240的計(jì)算裝置200的實(shí)施例的框圖,該固件更新應(yīng)用程序240用于更新硬件部件260的固件。如圖所示,計(jì)算裝置200可以包括支持應(yīng)用程序210、操作系統(tǒng)220、固件-OS接ロ 230、固件更新應(yīng)用程序240、固件更新250和硬件部件 260。支持應(yīng)用程序210可以包括為獲得固件更新而配置成在OS 220上運(yùn)行的應(yīng)用程序。作為示例,具體的支持應(yīng)用程序210可以使用例如每個硬件部件260的標(biāo)識符周期地輪詢遠(yuǎn)程服務(wù)器,以確定硬件部件260中一個或多個的固件更新的可獲得性。當(dāng)確定可獲得更新時,支持應(yīng)用程序210可以下載該更新到計(jì)算裝置200能訪問的存儲介質(zhì)上。可選地,支持應(yīng)用程序210可以在用戶的指示下下載和存儲固件更新250。作為另ー示例,用戶可以使用互聯(lián)網(wǎng)瀏覽器或使用不同的計(jì)算裝置獲得固件更新。無論用來獲得固件更新250的方法如何,固件更新250都可以存儲在固件更新應(yīng)用程序240能訪問的位置上。作為ー個示例,支持應(yīng)用程序210可以將固件更新存儲在硬驅(qū)或其它機(jī)器可讀存儲介質(zhì)的專用分區(qū)上。在一些實(shí)施例中,該分區(qū)可以對于計(jì)算裝置200的用戶隱藏起來,使得用戶不會通過操作系統(tǒng)220或其它方式訪問固件更新250。以此方式,支持應(yīng)用程序210可以保證在固件更新250被執(zhí)行以前用戶不破壞或以其它方式更改固件更新250。在一些實(shí)施例中,支持應(yīng)用程序210還可以包括將結(jié)果報告給計(jì)算裝置200的制造商、報告給特定硬件部件260的制造商或報告給某一其它實(shí)體的應(yīng)用程序。具體地,當(dāng)操作系統(tǒng)220在固件更新以后重新啟動時,支持應(yīng)用程序210可以通過OS 220訪問這些結(jié)果。然后支持應(yīng)用程序210可以通過網(wǎng)絡(luò)連接(例如通過互聯(lián)網(wǎng))將這些結(jié)果發(fā)送給制造商或其它實(shí)體中的ー個或多個。操作系統(tǒng)220可以充當(dāng)支持應(yīng)用程序210的宿主并且擔(dān)當(dāng)用戶和硬件部件260之間的接ロ。在一些實(shí)施例中,當(dāng)支持應(yīng)用程序210存儲固件更新吋,OS 220可以從支持應(yīng)用程序那里接收這樣存儲的通知。然后OS 220可以設(shè)置在計(jì)算裝置200重新啟動時應(yīng)當(dāng)執(zhí)行更新的指示并且請求重新啟動計(jì)算裝置。指示可以是例如布爾值、字符串、一系列數(shù)字或者任何其它足以表示當(dāng)可獲得固件更新250時的值。OS 220可以將該指示存儲在固件-OS接ロ 230能訪問的任何存儲位置,只要固件-OS接ロ 230在啟動時檢查該位置以獲得該指示。作為ー個示例,OS 220可以使用視窗管理規(guī)范(WMI)將該指示寫到固件-OS接ロ 230能訪問的非易失性存儲介質(zhì)(例如固件-OS接ロ 230的ROM)上。此外,在一些實(shí)施例中,OS 220可以使支持應(yīng)用程序210有權(quán)訪問從固件更新應(yīng)用程序240接收的結(jié)果。例如,OS 220可以從預(yù)設(shè)的位置檢索固件更新結(jié)果,然后將這些結(jié)果提供給支持應(yīng)用程序210。作為ー個示例,OS 220可以使用WMI從固件-OS接ロ 230的ROM檢索這些結(jié)果。作為另ー示例,OS 220可以從在指定位置存儲的文本文件中檢索這
些結(jié)果。如上文所述,固件-OS接ロ 230可以包括在存儲介質(zhì)上編碼的用于提供硬件部件260的固件和OS 220之間的功能鏈接的可執(zhí)行指令。在一些實(shí)施例中,固件-OS接ロ 230可以包括被編碼有檢測指令232和發(fā)起指令234的機(jī)器可讀存儲介質(zhì)。檢測指令232可以在計(jì)算裝置200啟動期間判斷一個或多個硬件部件260的固件是否可獲得固件更新250。作為示例,檢測指令232可以訪問0S220寫入指示的位置,以判 斷是否可獲得固件更新。該位置可以是例如存儲介質(zhì)(例如硬盤)上預(yù)設(shè)的位置或者ROM或其它可用來實(shí)現(xiàn)固件-OS接ロ 230的存儲介質(zhì)中的位置。
當(dāng)檢測指令232確定可獲得固件更新吋,發(fā)起指令234可以開始固件更新應(yīng)用程序240。然后,發(fā)起指令234可以訪問存儲固件更新應(yīng)用程序240的存儲介質(zhì)并發(fā)出指令來開始該固件更新應(yīng)用程序。例如,當(dāng)固件更新應(yīng)用程序240存儲在專用分區(qū)上吋,發(fā)起指令234可以知道該位置,因此從該專用分區(qū)中啟動該固件更新應(yīng)用程序。作為另ー示例,發(fā)起指令234可以確定固件更新應(yīng)用程序240位于外部驅(qū)動器(例如閃存)中,于是其從該外部驅(qū)動器啟動該固件更新應(yīng)用程序。然后固件更新過程的管理可以轉(zhuǎn)交給固件更新應(yīng)用程序240。如上文所述,固件更新應(yīng)用程序240可以包括在存儲介質(zhì)上編碼的用于管理固件更新過程的可執(zhí)行指令。在一些實(shí)施例中,固件更新應(yīng)用程序240可以包括接收指令242、定位指令244、驗(yàn)證指令246、執(zhí)行指令248和備份指令249。接收指令242可以從固件-OS接ロ 230接收更新硬 件部件260的固件的指示。例如,當(dāng)啟動固件更新應(yīng)用程序240時,接收指令242可以接收由固件-OS接ロ 230規(guī)定的應(yīng)用參數(shù)。這樣的參數(shù)可以規(guī)定例如可獲得更新,標(biāo)識硬件部件260以及指示固件更新250的存儲位置。作為可選,接收指令242可以在不使用應(yīng)用參數(shù)的情況下接收應(yīng)當(dāng)執(zhí)行更新的指示。例如,固件-OS接ロ 230啟動固件更新應(yīng)用程序240可以足以傳達(dá)可獲得更新的指示。定位指令244可以響應(yīng)于更新固件的指示來定位固件更新250。作為ー個示例,定位指令244可以根據(jù)固件-OS接ロ 230使用的應(yīng)用參數(shù)確定固件更新250的位置。作為另一示例,當(dāng)固件更新250存儲在預(yù)設(shè)的位置,例如專用分區(qū)上時,定位指令244可以訪問那個位置中的固件更新250。作為又ー示例,定位指令244可以對ー個或多個存儲介質(zhì)執(zhí)行查找來定位固件更新250。驗(yàn)證指令246可以在發(fā)起執(zhí)行固件更新250以前判斷固件更新250是否有效。在一些實(shí)施例中,驗(yàn)證指令246可以使用與固件更新250對應(yīng)的數(shù)字簽名,該數(shù)字簽名可以與固件更新250存儲在相同位置。例如,在發(fā)布固件更新250以前,計(jì)算裝置250或硬件部件260的制造商可以計(jì)算固件更新250的哈希值,然后使用專用密鑰加密該哈希值。在執(zhí)行固件更新250以前,可以有權(quán)訪問相應(yīng)公開密鑰的固件更新應(yīng)用程序240可以執(zhí)行驗(yàn)證指令246來解密被加密的哈希值。然后,驗(yàn)證指令246可以將已解密的哈希值與新計(jì)算的固件更新250的哈希值相比較。當(dāng)這些值匹配時,驗(yàn)證指令246可以確定批準(zhǔn)執(zhí)行固件更新250。如上文所述,固件更新250的哈希值可以由計(jì)算裝置200的制造商通過使用專用密鑰加密。以此方式,計(jì)算裝置200的制造商可以驗(yàn)證固件更新250的正常作用,計(jì)算固件更新250的數(shù)字簽名,然后將固件更新250和該數(shù)字簽名提供給其顧客。這樣的實(shí)施例是有優(yōu)勢的,因?yàn)橹圃焐炭赡苁俏ㄒ恢缹S妹荑€的一方,從而保證固件更新應(yīng)用程序240僅會安裝由制造商批準(zhǔn)的更新。因此這些實(shí)施例可以提高安全性并且防止安裝惡意或錯誤固件更新。執(zhí)行指令248可以開始執(zhí)行固件更新250,以更新特定硬件部件260的固件。具體地,執(zhí)行指令248可以從由定位指令244確定的位置啟動的固件更新250并且管理更新過程。例如,執(zhí)行指令248可以估計(jì)完成百分比并將其顯示給用戶。執(zhí)行指令248還可以接收由固件更新250返回的、表示更新是否成功以及如果沒有成功失敗原因的值。此外,當(dāng)更新完成時,執(zhí)行指令248可以將任何結(jié)果寫到OS 220能訪問的位置(例如固件-OS接ロ230的ROM、預(yù)設(shè)的文本文件等等中的位置)。備份指令249可以實(shí)現(xiàn)備份程序,以保證萬一固件更新失敗計(jì)算裝置200仍繼續(xù)工作。具體地,在執(zhí)行指令248啟動固件更新250以前,備份指令249可以通過例如產(chǎn)生當(dāng)前映像的副本從硬件部件260的固件中取回固件備份??蛇x地,如果例如固件的備份是與固件更新250 —起下載的,那么可以在執(zhí)行固件更新應(yīng)用程序240以前獲得固件的備份。在固件更新250將執(zhí)行返回給固件更新應(yīng)用程序240以后,備份指令249可以判斷更新是否成功,如果未成功,則通過開始可執(zhí)行的固件備份或者通過將固件備份復(fù)制到硬件部件260的固件中,觸發(fā)備份的恢復(fù)。然而,應(yīng)當(dāng)注意,固件更新250可以包括備份指令249。在這樣的實(shí)施例中,固件更新250可以包括在開始更新程序以前產(chǎn)生固件映像的備份的指令。例如,當(dāng)固件更新250初始化時,備份指令可以執(zhí)行復(fù)制固件當(dāng)前內(nèi)容所需的存取。以此方式,硬件部件260的制造商可以在固件更新250中包括適當(dāng)?shù)拇嫒≈噶?,不需要?jì)算裝置100的制造商知道這些 指令。如果需要,固件更新250還可以包括應(yīng)用固件更新以后驗(yàn)證更新的指令以及恢復(fù)備份的指令。同樣如上文詳細(xì)描述的,固件更新250可以由硬件部件260的制造商以可由固件更新應(yīng)用程序240執(zhí)行的文件的形式提供。硬件部件260可以是任何包括用來實(shí)施計(jì)算裝置200的功能的機(jī)械元件、磁元件、電子元件和/或電氣元件的裝置。雖然未以獨(dú)立的框示出,但用于指令執(zhí)行的處理器可以包括在硬件部件260中。圖3是用于對硬件部件的固件進(jìn)行更新的方法300的示例的流程圖。雖然方法300的執(zhí)行在下文中是關(guān)于計(jì)算裝置100的部件描述的,但是其它適合的用于方法300的執(zhí)行的部件將對本領(lǐng)域的技術(shù)人員來說是顯而易見的。方法300可以以在機(jī)器可讀存儲介質(zhì)上存儲的可執(zhí)行指令的形式實(shí)施。方法300可以從框305開始并繼續(xù)進(jìn)行到框310,在這里固件更新155可以存儲在計(jì)算裝置100能訪問的機(jī)器可讀存儲介質(zhì)上。作為ー個示例,處理器110可以執(zhí)行由計(jì)算裝置100的操作系統(tǒng)提供的指令,以將固件更新155存儲在硬盤或其它內(nèi)部或外部存儲裝置上。作為另ー示例,用戶可以手動復(fù)制固件更新155到機(jī)器可讀介質(zhì)上。然后方法可以繼續(xù)到框320,在這里當(dāng)計(jì)算裝置100啟動時,固件-OS接ロ 130可以發(fā)起固件更新應(yīng)用程序145。具體地,固件-OS接ロ 130可以訪問存儲固件更新應(yīng)用程序145的存儲介質(zhì)并由處理器110觸發(fā)固件更新應(yīng)用程序145的執(zhí)行。在發(fā)起固件更新應(yīng)用程序145以后,方法300可以繼續(xù)到框330,在這里固件更新應(yīng)用程序145可以通過開始執(zhí)行固件更新155觸發(fā)硬件部件120的固件125的更新。具體地,處理器110可以執(zhí)行固件更新155來訪問和更改包含固件125的存儲介質(zhì)。在固件更新155完成以后,執(zhí)行然后可以返回到固件更新應(yīng)用程序145。最后,方法300繼續(xù)到框335,在這里方法300結(jié)束。圖4A和圖4B是由操作系統(tǒng)執(zhí)行的用于對硬件部件的固件進(jìn)行更新的方法400的示例的流程圖。雖然方法400的執(zhí)行在下文中是關(guān)于計(jì)算裝置200的部件描述的,但是其它適合的用于方法400的執(zhí)行的部件將對本領(lǐng)域的技術(shù)人員來說是顯而易見的。方法400可以以在機(jī)器可讀存儲介質(zhì)上存儲的可執(zhí)行指令的形式實(shí)施。方法400可以從框405開始并且繼續(xù)進(jìn)行到框410,在這里支持應(yīng)用程序210可以檢查在計(jì)算裝置中包括的一個或多個硬件部件260的固件更新。如上文詳細(xì)介紹的,支持應(yīng)用程序210可以通過例如周期地查詢遠(yuǎn)程服務(wù)器執(zhí)行該檢查。方法400然后可以繼續(xù)到框415,在這里支持應(yīng)用程序210可以判斷是否可獲得固件更新。當(dāng)確定不可獲得計(jì)算裝置200的硬件部件260的更新吋,方法400可以返回框410,在這里支持應(yīng)用程序210可以在經(jīng)過預(yù)定的時間段后檢查固件更新??蛇x地,當(dāng)可獲得更新吋,方法400可以繼續(xù)到框420。在框420中,支持應(yīng)用程序210可以將固件更新250從遠(yuǎn)程服務(wù)器下載到計(jì)算裝置200能訪問的存儲介質(zhì)上。方法400然后可以繼續(xù) 到框425,在這里支持應(yīng)用程序210可以將固件更新250存儲在固件更新應(yīng)用程序240能訪問的位置上。作為ー個示例,支持應(yīng)用程序210可以將固件更新存儲在硬驅(qū)或其它機(jī)器可讀存儲介質(zhì)的預(yù)定的目錄中或?qū)S梅謪^(qū)中。在存儲固件更新250以后,方法400可以繼續(xù)到框430,在這里操作系統(tǒng)220可以設(shè)置應(yīng)執(zhí)行更新的指示。應(yīng)當(dāng)注意,在一些實(shí)施例中,方法400的執(zhí)行可以直接跳至框430。例如,在用戶已經(jīng)手動將固件更新250存儲在固件更新應(yīng)用程序240能訪問的位置中的情況下,可以跳過框410、415、420和425的執(zhí)行。不管怎樣,在框430中,OS 220可以將應(yīng)執(zhí)行更新的指示存儲在固件-OS接ロ 230知道的位置中。然后,方法400可以繼續(xù)到下文對照圖4B詳細(xì)描述的框435?,F(xiàn)在參考圖4B,在框435中,計(jì)算裝置200可以在OS 220的要求下重啟或者由用戶手動重啟。如下文結(jié)合圖5A和圖5B詳細(xì)描述的,然后固件-OS接ロ 230、固件更新應(yīng)用程序240和固件更新250可以嘗試更新硬件部件260的固件。在嘗試更新固件以后,計(jì)算裝置200然后可以在框440中重啟0S220。在OS 220初始化以后,方法400可以繼續(xù)到框445,在這里支持應(yīng)用程序210可以訪問預(yù)定位置來判斷是否可獲得固件結(jié)果。例如,支持應(yīng)用程序210可以通過OS 220訪問提供固件更新結(jié)果的固件-OS接ロ 230的接ロ。作為另ー示例,支持應(yīng)用程序210可以從可在指定位置中訪問的文本文件中讀取更新結(jié)果。當(dāng)在框445中確定不可獲得固件更新結(jié)果時,方法400可以繼續(xù)到框455,在這里方法400結(jié)束。如果例如用戶在啟動期間指示不應(yīng)啟動固件更新應(yīng)用程序240,因而不會提供更新結(jié)果,那么上述場景是可能出現(xiàn)的??蛇x地,當(dāng)在框445中確定可獲得固件更新結(jié)果時,方法400可以繼續(xù)到框450,在這里支持應(yīng)用程序210可以將更新結(jié)果報告給ー個或多個制造商或其它實(shí)體。例如,支持應(yīng)用程序210可以將更新結(jié)果報告給計(jì)算裝置200的制造商和/或硬件部件260的制造商。這些結(jié)果可以包括例如更新是否成功,應(yīng)用更新的時間以及應(yīng)用更新所需時間量。如果更新失敗,那么這些結(jié)果還可以包括失敗詳情(例如,無效簽名、在過程期間的失敗、用戶中止該過程等等)。方法400然后可以繼續(xù)到框455,在這里方法400結(jié)束。圖5A和圖5B是在計(jì)算裝置啟動時執(zhí)行的用于對硬件部件的固件進(jìn)行更新的方法500的示例的流程圖。雖然方法500的執(zhí)行在下文中是關(guān)于計(jì)算裝置200的部件描述的,但是其它適合的用于方法500的執(zhí)行的部件將對本領(lǐng)域的技術(shù)人員來說是顯而易見的。方法500可以以在機(jī)器可讀存儲介質(zhì)上存儲的可執(zhí)行指令的形式實(shí)施。方法500可以從框505開始并且繼續(xù)進(jìn)行到框510,在這里可以啟動計(jì)算裝置200。具體地,可以向計(jì)算裝置200的硬件部件260供電,固件-OS接ロ 230可以執(zhí)行這些部件260的初始化和配置。然后方法500可以繼續(xù)到框515,在這里固件-OS接ロ 230可以判斷是否可獲得用于安裝的固件更新。作為示例,固件-OS接ロ 230可以訪問OS 220將可獲得更新的指示寫入的位置。該位置可以是例如存儲介質(zhì)上預(yù)定的位置或者ROM或其它用來實(shí)施固件-OS接ロ 230的存儲介質(zhì)上的位置。可選地,計(jì)算裝置200的用戶可以通過在計(jì)算裝置200啟動時按壓預(yù)定的鍵手動觸發(fā)固件更新的安裝。當(dāng)在框515中確定不可獲得固件更新吋,方法500可以繼續(xù)到框540,在這里方法540結(jié)束并且固件-OS接ロ 230繼續(xù)其正常工作來加載OS 220??蛇x地,當(dāng)確定可獲得固件更新時,方法500可以繼續(xù)到框520。在框520中,固件-OS接ロ 230可以加載固件更新應(yīng)用程序240來開始固件更新過程。應(yīng)當(dāng)注意,固件-OS接ロ 230可以加載來自任何機(jī)器可讀介質(zhì)(無論是計(jì)算裝置200內(nèi)部的還是外部的)的固件更新應(yīng)用程序240。方法500然、后可以繼續(xù)到框525。在框525中,固件更新應(yīng)用程序240可以定位固件更新250。如上文詳細(xì)介紹的,固件更新應(yīng)用程序240可以根據(jù)由固件-OS接ロ 230使用的應(yīng)用參數(shù)、通過訪問預(yù)定位置或者通過執(zhí)行查找確定固件更新250的位置。其它適合的用于定位固件更新250的方法將對本領(lǐng)域的技術(shù)人員來說是顯而易見的。在定位固件更新250以后,方法500可以繼續(xù)到框530,在這里固件更新應(yīng)用程序240可以嘗試驗(yàn)證與固件更新250有關(guān)的數(shù)字簽名。作為ー個示例,同樣如上文詳細(xì)描述的,固件更新應(yīng)用程序240可以使用公開密鑰來解密用相應(yīng)的專用密鑰加密的哈希值,然后將所解密的哈希值與固件更新250的計(jì)算的哈希值相比較。在該示例中,當(dāng)這些哈希值匹配吋,固件更新應(yīng)用程序240可以確定固件更新250有效。 當(dāng)在框530中確定驗(yàn)證了該數(shù)字簽名以及因此固件更新250有效時,那么方法500可以繼續(xù)到下文結(jié)合圖5B詳細(xì)描述的框545。可選地,方法500可以繼續(xù)到框535,在這里固件更新應(yīng)用程序240可以向OS 220能訪問的位置寫入失敗結(jié)果,表示由于固件更新250的失敗驗(yàn)證的原因,固件更新失敗。然后方法500可以繼續(xù)到框540,在這里方法540結(jié)束,固件-OS接ロ 230繼續(xù)其正常工作來加載OS 220?,F(xiàn)在參考圖5B,在框545中,在執(zhí)行更新250以前,固件更新應(yīng)用程序240可以產(chǎn)生將要更新的硬件部件260的固件的備份。作為示例,固件更新應(yīng)用程序240可以產(chǎn)生當(dāng)前在硬件部件260的固件上存儲的映像的副本。作為另ー示例,可以在執(zhí)行固件更新應(yīng)用程序240以前獲得該備份,使得固件更新應(yīng)用程序240不需要產(chǎn)生備份??蛇x地,可以由固件更新250在開始運(yùn)行以后執(zhí)行硬件部件260的固件的備份。然后方法500可以繼續(xù)到框550,在這里固件更新應(yīng)用程序240可以開始固件更新250的執(zhí)行。固件更新250然后可以按需要更改硬件部件260的固件。以此方式,由于固件更新應(yīng)用程序240啟動固件更新250,所以固件更新應(yīng)用程序240可以管理更新過程。例如,固件更新應(yīng)用程序240可以顯示估計(jì)剩余時間并且從固件更新250那里接收表示更新結(jié)果的反饋。在固件更新250的執(zhí)行已完成以后,方法500可以繼續(xù)到框555,在這里固件更新應(yīng)用程序240可以判斷更新是否成功。作為示例,固件更新應(yīng)用程序240可以從固件更新250那里接收表示更新是否成功以及如果更新未成功那么ー個或多個失敗原因的一個或多個返回代碼。當(dāng)在框555中確定更新未成功時,方法500可以繼續(xù)到框560,在這里固件更新應(yīng)用程序240可以將失敗詳情寫到OS 220能訪問的位置上。然后,方法500可以繼續(xù)到框565,在這里固件更新應(yīng)用程序240可以通過開始可執(zhí)行的固件備份或者通過將備份復(fù)制至硬件部件260的固件,發(fā)起備份的恢復(fù)。然后,方法500可以繼續(xù)到框575??蛇x地,當(dāng)在框555中確定更新已成功,方法500可以繼續(xù)到框570。在框570中,固件更新應(yīng)用程序240可以將成功詳情(例如日期和時間、更新持續(xù)時間、固件版本號等)寫到OS 220能訪問的位置上。然后方法500可以繼續(xù)到框575。在框575中,可以重新啟動計(jì)算裝置200,使得可以應(yīng)用對硬件部件260的固件的更改,如果有的話。然后方法500可以繼續(xù)到框580,在這里方法500結(jié)束。根據(jù)上述內(nèi)容,本發(fā)明公開的示例實(shí)施例提供了由固件-OS接ロ發(fā)起的執(zhí)行固件 更新并管理固件更新過程的固件更新應(yīng)用程序。以此方式,固件更新應(yīng)用程序可以驗(yàn)證固件更新、向用戶提供反饋以及向OS報告結(jié)果。此外,由于固件更新應(yīng)用程序可以在固件-OS接口內(nèi)執(zhí)行,所以固件更新應(yīng)用程序可以有權(quán)訪問硬盤驅(qū)動器以及其它存儲裝置,使得其可以從多個位置運(yùn)行更新以及執(zhí)行文件管理操作。更新的開發(fā)也可以簡化,因?yàn)樵讴`些實(shí)施例中,部件制造商可以提供更改固件所需的可執(zhí)行文件,同時計(jì)算裝置制造商可以提供執(zhí)行更新的環(huán)境。因此,示例實(shí)施例提供提高用戶滿意度的可靠用戶友好的固件更新過程,同時降低由系統(tǒng)和部件制造商帶來的成本。
權(quán)利要求
1.一種對計(jì)算裝置中包括的硬件部件的固件進(jìn)行更新的方法,該方法包括 由所述計(jì)算裝置將用于所述硬件部件的可執(zhí)行的固件更新存儲在機(jī)器可讀存儲介質(zhì)上; 當(dāng)所述計(jì)算裝置啟動時,由固件-操作系統(tǒng)(OS)接口發(fā)起固件更新應(yīng)用程序;以及由所述固件更新應(yīng)用程序通過開始執(zhí)行所述可執(zhí)行的固件更新來觸發(fā)所述硬件部件的所述固件的更新。
2.根據(jù)權(quán)利要求I所述的方法,其中所述固件-OS接口是統(tǒng)一的可擴(kuò)展固件接口(UEFI)0
3.根據(jù)權(quán)利要求I所述的方法,其中 所述存儲是通過在所述計(jì)算裝置的操作系統(tǒng)(OS)中運(yùn)行的應(yīng)用程序執(zhí)行的,以及 所述方法進(jìn)一步包括由所述OS設(shè)置應(yīng)當(dāng)在重啟時執(zhí)行更新的指示。
4.根據(jù)權(quán)利要求3所述的方法,其中發(fā)起固件更新應(yīng)用程序是在由所述計(jì)算裝置的所述固件-OS接口檢測到所述指示時執(zhí)行的。
5.根據(jù)權(quán)利要求I所述的方法,其中 所述固件更新應(yīng)用程序由所述計(jì)算裝置的制造商提供,以及 所述可執(zhí)行的固件更新由所述硬件部件的制造商提供。
6.根據(jù)權(quán)利要求5所述的方法,其中所述可執(zhí)行的固件更新符合由所述計(jì)算裝置的制造商規(guī)定的應(yīng)用協(xié)議,以返回結(jié)果給所述固件應(yīng)用程序。
7.根據(jù)權(quán)利要求5所述的方法,其中所述可執(zhí)行的固件更新由所述硬件部件的制造商通過使用為所述固件-OS接口設(shè)計(jì)的軟件開發(fā)工具包(SDK)開發(fā)。
8.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括 將所述固件的更新的結(jié)果寫到所述計(jì)算裝置的操作系統(tǒng)(OS)能訪問的位置;以及通過在所述OS中運(yùn)行的應(yīng)用程序?qū)⑺鼋Y(jié)果報告給所述計(jì)算裝置的制造商和所述硬件部件的制造商中的至少一個。
9.根據(jù)權(quán)利要求I所述的方法,進(jìn)一步包括 將用于所述硬件部件的固件備份存儲在所述機(jī)器可讀存儲介質(zhì)上;以及 當(dāng)檢測到所述更新的失敗時,使用所述固件備份觸發(fā)所述硬件部件的所述固件的恢復(fù)。
10.一種計(jì)算裝置,包括 處理器;和 機(jī)器可讀存儲介質(zhì),被編碼有可由所述處理器執(zhí)行的指令,所述指令包括 用于在所述計(jì)算裝置啟動期間檢測所述計(jì)算裝置的硬件部件的固件可獲得的可執(zhí)行的固件更新的指令, 用于在檢測到可獲得所述固件更新時由固件-操作系統(tǒng)(OS)接口發(fā)起固件更新應(yīng)用程序的指令,以及 用于通過在所述固件更新應(yīng)用程序中開始所述可執(zhí)行的固件更新來對所述硬件部件的所述固件進(jìn)行更新的指令。
11.根據(jù)權(quán)利要求10所述的計(jì)算裝置,其中所述可執(zhí)行的固件更新位于所述機(jī)器可讀存儲介質(zhì)的對所述計(jì)算裝置的用戶隱藏的分區(qū)中。
12.根據(jù)權(quán)利要求10所述的計(jì)算裝置,其中所述可執(zhí)行的固件更新包括訪問和更改所述硬件部件的所述固件的指令。
13.一種機(jī)器可讀存儲介質(zhì),其被編碼有可由計(jì)算裝置的處理器執(zhí)行以運(yùn)行固件更新應(yīng)用程序的指令,所述指令包括 用于從所述計(jì)算裝置的固件-操作系統(tǒng)(OS)接口接收對所述計(jì)算裝置的硬件部件的固件進(jìn)行更新的指示的指令; 用于響應(yīng)于更新所述固件的指示來定位可執(zhí)行的固件更新的指令;和 用于在所述固件更新應(yīng)用程序中開始執(zhí)行所述可執(zhí)行的固件更新以更新所述硬件部件的所述固件的指令。
14.根據(jù)權(quán)利要求13所述的機(jī)器可讀存儲介質(zhì),進(jìn)一步包括 用于在開始執(zhí)行以前使用在所述機(jī)器可讀存儲介質(zhì)上存儲的數(shù)字簽名驗(yàn)證所述可執(zhí)行的固件更新的指令。
15.根據(jù)權(quán)利要求13所述的機(jī)器可讀存儲介質(zhì),其中所述機(jī)器可讀存儲介質(zhì)是也包括可執(zhí)行的固件更新的外部存儲裝置。
全文摘要
示例實(shí)施例涉及對在計(jì)算裝置中包括的硬件部件的固件進(jìn)行更新的方法。示例方法可以將用于硬件部件的可執(zhí)行的固件更新存儲在機(jī)器可讀存儲介質(zhì)上。然后該方法可以在計(jì)算裝置啟動時由固件-操作系統(tǒng)(OS)接口發(fā)起固件更新應(yīng)用程序。最后,該方法可以通過開始執(zhí)行可執(zhí)行的固件更新來觸發(fā)硬件部件的固件的更新。還公開了相關(guān)計(jì)算裝置和機(jī)器可讀存儲介質(zhì)。
文檔編號G06F9/22GK102667716SQ200980162575
公開日2012年9月12日 申請日期2009年12月18日 優(yōu)先權(quán)日2009年12月18日
發(fā)明者約翰·朗德里 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
江安县| 集安市| 岳普湖县| 康保县| 永春县| 沁源县| 延长县| 舞钢市| 巴彦县| 鄢陵县| 京山县| 铜川市| 中山市| 丹江口市| 天台县| 平潭县| 邢台县| 双峰县| 湟源县| 集安市| 广丰县| 保亭| 昌邑市| 乐山市| 岳池县| 剑河县| 濮阳市| 杭州市| 广汉市| 潢川县| 正蓝旗| 宁城县| 锡林浩特市| 白水县| 台前县| 井冈山市| 安阳县| 巨鹿县| 南华县| 南昌县| 海兴县|