TWI441081B - 更新韌體方法與開機方法及使用其之電子裝置 - Google Patents

更新韌體方法與開機方法及使用其之電子裝置 Download PDF

Info

Publication number
TWI441081B
TWI441081B TW100140420A TW100140420A TWI441081B TW I441081 B TWI441081 B TW I441081B TW 100140420 A TW100140420 A TW 100140420A TW 100140420 A TW100140420 A TW 100140420A TW I441081 B TWI441081 B TW I441081B
Authority
TW
Taiwan
Prior art keywords
block
boot
code
firmware
main
Prior art date
Application number
TW100140420A
Other languages
English (en)
Other versions
TW201319942A (zh
Inventor
Chong Kim Chan
Yu Guang Chen
Original Assignee
Asrock Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Asrock Inc filed Critical Asrock Inc
Priority to TW100140420A priority Critical patent/TWI441081B/zh
Publication of TW201319942A publication Critical patent/TW201319942A/zh
Application granted granted Critical
Publication of TWI441081B publication Critical patent/TWI441081B/zh

Links

Landscapes

  • Stored Programmes (AREA)

Description

更新韌體方法與開機方法及使用其之電子裝置
本發明是有關於一種韌體使用機制,且特別是有關於一種更新韌體方法與開機方法及使用其之電子裝置。
一般來說,電腦系統在使用者按下電源鍵後必須經過一連串的硬體初始化動作,待檢測無誤後才能正常啟動。具體而言,在開啟電腦系統的電源後,基本輸入輸出系統(Basic Input/Output System,以下簡稱BIOS)將被載入記憶體並開始執行開機自我測試(Power On Self Test,POST)程序,以對電腦系統的硬體元件進行初始化及檢測動作,進而確保這些硬體元件可以正常工作。據此,BIOS在電腦系統中扮演著相當重要的角色。
目前為了避免於BIOS更新時資料損壞而造成無法開機,提出了底下兩種方法。方法一,將BIOS的啟動區塊(boot block)設定為唯讀,以保護啟動區塊中的資料不會被更新或破壞。據此,當BIOS其它部分損壞時,啟動區塊的還原程式碼便能夠將BIOS的其它部分還原。方法二,在儲存BIOS的晶片中額外設置一個區域來備份啟動區塊。也就是說,在BIOS晶片中包括兩份啟動區塊,即原始啟動區塊以及額外啟動區塊。其中,原始啟動區塊無法被更新,而額外啟動區塊則可以進行更新。當BIOS沒有損壞時,使用額外啟動區塊來開機;當BIOS損壞時,原始啟動區塊的還原程式碼便會起動把BIOS的其它部分還原。
然而,倘若使用上述方法一,則啟動區塊無法更新,造成使用上的不便。另外,若使用上述方法二,則兩份啟動區塊佔用了BIOS晶片的儲存空間,造成儲存空間之浪費,且原始啟動區塊仍無法被更新。
本發明提供一種更新韌體的方法,在更新韌體的過程中遇到斷電或當機時,電子裝置能夠透過暫存於主要區塊中的啟動程式碼來啟動。
本發明提供一種開機方法,在開機時判斷主要區塊中是否存在啟動程式碼,以決定是否要將韌體晶片還原。
本發明提供一種電子裝置,在韌體晶片的起始位址寫入一載入器,在開機時藉由載入器來判斷讀取主要區塊或啟動區塊中的啟動程式碼,可避免無法開機的情況。
具體而言,本發明提出一種開機方法,適於一電子裝置。在本方法中,電子裝置包括一韌體晶片,韌體晶片包括前置區塊、啟動區塊以及主要區塊,啟動區塊儲存韌體的啟動程式碼,主要區塊儲存韌體的主要程式碼,而前置區塊設置於韌體晶片的起始位址,並且前置區塊中儲存一載入器。在開機後,執行前置區塊中的載入器,以透過載入器來判斷主要區塊中的指定區塊是否存在啟動程式碼,進而決定讀取指定區塊中的啟動程式碼或啟動區塊中的啟動程式碼。接著,執行啟動程式碼來檢查主要區塊是否損壞。倘若主要區塊已損壞,執行韌體還原程序,以還原韌體晶片;反之,倘若主要區塊未損壞,執行主要程式碼。
在本發明之一實施例中,上述透過載入器來判斷主要區塊中的指定區塊是否存在啟動程式碼的步驟之後,倘若主要區塊中的指定區塊存在啟動程式碼,讀取指定區塊中的啟動程式碼。相反地,倘若主要區塊中的指定區塊不存在啟動程式碼,讀取啟動區塊中的啟動程式碼。
在本發明之一實施例中,上述檢查主要區塊是否損壞的步驟中,可先判斷目前所執行的啟動程式碼位於啟動區塊或指定區塊。當目前所執行的啟動程式碼位於指定區塊時,判定主要區塊已損壞。另外,當目前所執行的啟動程式碼位於啟動區塊時,進一步檢查主要區塊的核對和(checksum)是否正確。倘若核對和正確,判定主要區塊未損壞。倘若核對和不正確,判定主要區塊已損壞。
在本發明之一實施例中,上述在判斷目前所執行的啟動程式碼位於啟動區塊或指定區塊的步驟之後,更可將判定結果記錄至暫存器。另外,上述執行韌體還原程序的步驟中,先將啟動程式碼載入至記憶體來執行。此時,可依據上述暫存器中的判定結果,判斷記憶體中的啟動程式碼是由指定區塊或啟動區塊所載入。倘若記憶體中的啟動程式碼是由啟動區塊所載入,將啟動區塊的啟動程式碼複製到主要區塊中的指定區塊。接著,還原啟動區塊,並且還原主要區塊。另一方面,倘若記憶體中的啟動程式碼是由指定區塊所載入,則直接還原啟動區塊,並且還原主要區塊。
在本發明之一實施例中,上述執行開機程序的步驟中,在將啟動區塊的啟動程式碼以及主要區塊的主要程式碼載入至記憶體之後,當接收到韌體更新指令時,將啟動區塊的啟動程式碼複製到指定區塊。接著,更新啟動區塊,並且更新主要區塊。
另外,本發明還提出一種更新韌體的方法,適於一電子裝置。在此,電子裝置包括一韌體晶片,而此韌體晶片包括前置區塊、啟動區塊以及主要區塊。啟動區塊儲存韌體的啟動程式碼,主要區塊儲存韌體的主要程式碼,而前置區塊設置於韌體晶片的起始位址,並且前置區塊中儲存一載入器。在本方法中,將啟動程式碼與主要程式碼載入至記憶體;當接收到韌體更新指令時,將啟動區塊的啟動程式碼複製到指定區塊;更新啟動區塊,之後更新該主要區塊並覆蓋該指定區塊。其中,當更新韌體失敗時,在重新開機之後,當載入器判斷該主要區塊中的指定區塊是否存在該啟動程式碼,以決定指定區塊存在啟動程式碼時,讀取指定區塊中的啟動程式碼,以還原韌體晶片。
在本發明之一實施例中,當在複製啟動區塊的啟動程式碼至主要區塊中的指定區塊的過程中,更新韌體失敗時,在重新開機之後,透過載入器判定指定區塊不存在啟動程式碼,則讀取啟動區塊的啟動程式碼,以還原韌體晶片。
在本發明之一實施例中,當在更新啟動區塊的過程中,更新韌體失敗時,在重新開機之後,透過載入器判定指定區塊存在啟動程式碼,則讀取指定區塊中的啟動程式碼,以還原韌體晶片。
在本發明之一實施例中,當在更新主要區塊的過程中,更新韌體失敗時,在重新開機之後,透過載入器判定指定區塊不存在啟動程式碼,則讀取啟動區塊的啟動程式碼,以還原韌體晶片。
在本發明之一實施例中,上述在重新開機之後,執行前置區塊中的載入器,以透過載入器來判斷主要區塊中的指定區塊是否存在啟動程式碼,以決定讀取指定區塊中的啟動程式碼或啟動區塊中的啟動程式碼。接著,執行啟動程式碼來檢查主要區塊是否損壞。倘若主要區塊已損壞,執行韌體還原程序,以還原韌體晶片;反之,倘若主要區塊未損壞,執行開機程序。
此外,本發明更提出一種電子裝置,包括中央處理單元、記憶體以及韌體晶片。其中,中央處理單元耦接至該記憶體與韌體晶片。在此,韌體晶片包括啟動區塊、主要區塊以及前置區塊。啟動區塊用以儲存韌體的啟動程式碼。主要區塊用以儲存韌體的主要程式碼,並且主要區塊中包括一指定區塊,以暫存啟動程式碼。前置區塊設置於韌體晶片的起始位址,並且前置區塊儲存一載入器,利用載入器判斷主要區塊中的指定區塊是否存在啟動程式碼,以決定執行指定區塊或啟動區塊中的啟動程式碼。而在開機時,中央處理單元會去執行前置區塊中的載入器,透過載入器決定讀取指定區塊或啟動區塊中的啟動程式碼,以在判定讀取指定區塊的啟動程式碼時,執行韌體還原程序來還原韌體晶片;而在判定讀取啟動區塊中的啟動程式碼時,執行開機程序。
在本發明之一實施例中,上述電子裝置更包括控制晶片,其耦接至中央處理單元。中央處理單元透過控制晶片與韌體晶片以及記憶體耦接。
在本發明之一實施例中,上述中央處理單元在執行該開機程序中,在將啟動程式碼與主要程式碼載入至記憶體之後,當接收到韌體更新指令時,將啟動區塊的該啟動程式碼複製到該指定區塊;之後,更新啟動區塊,並且更新主要區塊。其中,在重新開機之後,當載入器判定指定區塊存在啟動程式碼,讀取指定區塊中的啟動程式碼,以還原韌體晶片。
在本發明之一實施例中,上述中央處理單元在決定讀取指定區塊中或啟動區塊中的啟動程式碼之後,還可執行啟動程式碼來檢查主要區塊是否損壞。倘若主要區塊已損壞,執行韌體還原程序,以還原韌體晶片;反之,倘若主要區塊未損壞,執行開機程序。
在本發明之一實施例中,上述中央處理單元在決定讀取指定區塊中或啟動區塊中的啟動程式碼之後,更可判斷目前所執行的啟動程式碼位於啟動區塊或指定區塊。當目前所執行的啟動程式碼位於指定區塊時,判定主要區塊已損壞。當目前所執行的啟動程式碼位於啟動區塊時,檢查主要區塊的核對和是否正確。倘若核對和正確,判定主要區塊未損壞;倘若核對和不正確,判定主要區塊已損壞。
基於上述,在更新韌體的過程中,將啟動區塊的啟動程式碼暫存於主要區塊中,並且,在韌體晶片的起始位址寫入一載入器,在開機時藉由載入器來判斷讀取主要區塊或啟動區塊中的啟動程式碼。據此,當遇到斷電或當機而重新開機時,電子裝置便能夠透過暫存於主要區塊中的啟動程式碼來重新啟動,以還原韌體晶片,據以可避免無法開機的情況。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖1是依照本發明一實施例的電子裝置的方塊圖。請參照圖1,電子裝置100包括中央處理單元110、控制晶片120、韌體晶片130以及記憶體140。其中,控制晶片120耦接至中央處理單元110,而中央處理單元110透過控制晶片120與韌體晶片130以及記憶體140耦接。
中央處理單元110用以執行電子裝置100中的硬體、韌體以及處理軟體中的資料。控制晶片120則為中央處理單元110對外訊息交換的橋樑。在本實施例中,控制晶片120包括北橋晶片與南橋晶片。而在其他實施例中,控制晶片120例如為南橋晶片,而北橋晶片則與中央處理單元110互相整合。
記憶體140例如為隨機存取記憶體(Random Access Memory,RAM)。在此,電子裝置100中所有構件的驅動程式以及作業系統等等,都會先載入(load)到記憶體140上面,以供中央處理單元110讀取。例如,透過記憶體映射(Shadow RAM)的方式將韌體晶片130中的程式碼載入至記憶體140中,以供中央處理單元110來存取。
韌體晶片130用以燒錄韌體。在此,韌體晶片130例如為唯讀記憶體(Read Only Memory,ROM)或快閃記憶體(flash memory),而韌體例如為基本輸入輸出系統(Basic Input or Output System,BIOS)、可延伸韌體介面(Extensible Firmware Interface,EFI)BIOS或聯合可延伸韌體介面(Unified Extensible Firmware Interface,UEFI)BIOS等。
在本實施例中,韌體晶片130包括前置區塊131、啟動區塊(boot block)132以及主要區塊133。啟動區塊132儲存韌體的啟動程式碼,主要區塊133儲存韌體的主要程式碼(例如,主要BIOS程式碼)。而前置區塊131設置於韌體晶片130的起始位址,用以儲存一載入器(loader)。
而上述啟動程式碼主要工作包括:啟動處理器(Bootstrap Processor,BSP)初始化、記憶體測試(memory test)、將啟動區塊132的啟動程式碼複製到記憶體140以及將主要區塊133的主要程式碼複製到記憶體140。將韌體載入至記憶體140之後,中央處理單元110便能夠去執行記憶體140中的主要程式碼來執行開機自我檢測(Power-On Self Test,POST)程序。
在此,為了避免在更新韌體時資料損壞而使得電子裝置100無法開機,因此,在接收到韌體更新指令時,中央處理單元110會將啟動區塊132的啟動程式碼複製到主要區塊133中的一個指定區塊。之後,中央處理單元110再去執行韌體更新程式,以更新啟動區塊132,以及更新主要區塊133。
舉例來說,圖2是依照本發明一實施例的韌體晶片的示意圖。請參照圖2,事先設定好指定區塊134在主要區塊133中的位址,當接收到韌體更新指令時,便將啟動區塊132的啟動程式碼複製,並修改相對應的位址,然後將啟動程式碼燒錄至指定區塊134中。據此,將會覆蓋掉部分的主要程式碼,也就是說原本存在指定區塊134中的主要程式碼將會被啟動程式碼所覆蓋。須注意的是,指定區塊134的位址可指定在主要區塊133中的任意位址。
底下即列舉一實施例來說明更新韌體的各步驟。圖3是依照本發明一實施例的更新韌體的方法流程圖。請同時參照圖1~圖3,在步驟S305中,接收韌體更新指令。舉例來說,當使用者欲更新韌體時,在中央處理單元110將啟動程式碼與主要程式碼載入至記憶體140之後,使用者可透過一介面來輸入指令“flash.exe BIOSfile”以呼叫更新套件(flash utility),也就是執行韌體更新程式來執行韌體更新的動作。其中,更新套件可以與欲進行更新的韌體儲存在同一個儲存設備(硬碟、光碟或隨身碟等等)中,在啟動韌體還原程式碼之後,會去初始化硬碟、光碟機或隨身碟等週邊設備,待找到欲更新的韌體之後,便將欲更新的韌體以及更新套件載入到記憶體140裡面。據此,當接收到韌體更新指令時,便能夠執行更新套件。
當接收到韌體更新指令時,執行步驟S310,將啟動區塊132的啟動程式碼複製到主要區塊133中的指定區塊134(如圖2所示)。此時,中央處理單元110是執行記憶體140中的程式碼。
之後,執行步驟S315,更新啟動區塊132。然後,執行步驟S320,更新主要區塊133。也就是說,先燒錄啟動區塊132,再燒錄主要區塊133。這是因為,啟動區塊132的啟動程式碼暫時儲存在主要區塊133的指定區塊134,因此,先更新啟動區塊132,以避免在更新啟動區塊132的過程中發生斷電或當機。
值得一提的是,前置區塊131中的載入器便是用來在開機時,判斷主要區塊133中的指定區塊134是否存在啟動程式碼,以決定執行指定區塊134中的啟動程式碼或啟動區塊132中的啟動程式碼。由於前置區塊131並沒有涉及到中央處理單元110或記憶體140等周邊裝置的初始化程序,因此在更新韌體時並不用更新前置區塊131。
據此,倘若更新韌體失敗,例如,在更新時發生斷電或當機時,在重新開機之後,便可透過載入器來判斷指定區塊134是否存在啟動程式碼,以決定由指定區塊134的啟動程式碼來還原韌體晶片130,或是由啟動區塊134的啟動程式碼來還原韌體晶片130。
進一步地說,啟動程式碼中包括韌體還原(recovery)程式碼,以透過韌體還原程式碼來還原韌體晶片130。當在將啟動區塊132的啟動程式碼複製到主要區塊133中的指定區塊134的過程中(步驟S310),更新韌體失敗,此時雖然主要區塊133已被破壞,然,啟動區塊132仍是完好的。據此,在重新開機之後,透過載入器判定指定區塊134不存在啟動程式碼,則讀取啟動區塊132的啟動程式碼來還原韌體晶片130。
另外,當在更新啟動區塊132的過程中(步驟S315),更新韌體失敗時,雖然啟動區塊132已被破壞,但是在更新啟動區塊132之前已經先執行了步驟S310,因此,指定區塊134中已暫存了啟動程式碼。而在重新開機之後,透過載入器得知指定區塊134存在有啟動程式碼,便讀取指定區塊134中的啟動程式碼來還原韌體晶片130。
此外,當在更新主要區塊133的過程中(步驟S320),更新韌體失敗時,由於此時主要區塊133已經被破壞,因此,在重新開機之後,透過載入器判定指定區塊134不存在啟動程式碼,讀取更新後的啟動區塊132的啟動程式碼來還原韌體晶片130。
底下再舉一實施例來詳細說明開機之後的各步驟。圖4是依照本發明一實施例的開機方法的流程圖。請同時參照圖1、圖2及圖4,在開機時(例如,由使用者按壓下電子裝置100的開機鈕,或者電子裝置100在斷電後復電而自動重新開機),中央處理單元110會讀取韌體晶片130的起始位址,如步驟S405所示,執行前置區塊131中的載入器。
接著,在步驟S410中,透過載入器來判斷主要區塊133中的指定區塊134是否存在啟動程式碼。舉例來說,可在啟動程式碼中定義一指定簽章(signature),並且事先在載入器中記錄指定區塊134位於主要區塊133的指定位址。據此,在開機後執行載入器時,便可透過載入器去讀取指定位址中是否存在上述定義的指定簽章。若指定位址不存在指定簽章,表示啟動區塊132的啟動程式碼並未複製到主要區塊133,因此指定區塊134中並不存在啟動程式碼。
另一方面,若指定位址存在指定簽章,代表啟動區塊132的啟動程式碼已經複製到指定區塊134。另外,還可以進一步透過檢查指定區塊134的核對和(checksum)來判斷指定區塊134中的啟動程式碼的完整性。倘若指定區塊134的啟動程式碼並不完整,表示在將啟動區塊132的啟動程式碼複製到指定區塊134時可能發生斷電或當機的情形,此時,亦判定指定區塊133中不存在啟動程式碼。而在指定位址存在指定簽章,且指定區塊134的啟動程式碼的核對和正確時,判定指定區塊133中存在啟動程式碼。
倘若指定區塊134中存在啟動程式碼,如步驟S420所示,執行指定區塊134中的啟動程式碼。倘若指定區塊134中不存在啟動程式碼,如步驟S415所示,執行啟動區塊132的啟動程式碼。例如,電子裝置100在未接收到韌體更新指令時,不會將啟動區塊132的啟動程式碼複製到主要區塊133中。而在接收到韌體更新指令之後,才會將啟動區塊132的啟動程式碼複製到主要區塊133中。因此,在尚未完成韌體更新而重新開機之後,指定區塊134中便會存在啟動程式碼。
之後,在步驟S425中,執行啟動程式碼來檢查主要區塊133是否損壞。倘若主要區塊133已損壞,如步驟S425所示,執行韌體還原程序。而在韌體還原程序完成之後,會再重新開機,而重複執行步驟S405~S445。倘若主要區塊133未損壞,如步驟S440所示,執行開機程序。例如,在沒有執行韌體更新程序或任何還原動作的正常開機狀況下,在開機之後會執行步驟S405、步驟S410、步驟S415、步驟S425以及步驟S440。
另外,步驟S425中更包括了步驟S430及步驟S435。在步驟S430中,判斷目前所執行的啟動程式碼位於啟動區塊132或指定區塊134。當目前所執行的啟動程式碼位於指定區塊134時,判定主要區塊133已損壞,因而執行步驟S445。這是因為指定區塊134中原本的主要程式碼已被啟動程式碼所覆蓋。
返回步驟S430,當目前所執行的啟動程式碼位於啟動區塊132時,執行步驟S435,檢查主要區塊133的核對和是否正確。倘若核對和不正確,判定主要區塊133已損壞,執行步驟S445。反之,倘若核對和正確,判定主要區塊133未損壞,執行步驟S440。
據此,電子裝置100一旦開機,便會執行步驟S405~步驟S425,以決定執行步驟S440來正常開機以載入作業系統,或是執行步驟S445來還原韌體晶片130。
在判定主要區塊133未損壞時,如步驟S440所示,執行開機程序。開機程序包括BSP初始化、記憶體測試、將韌體晶片130中的韌體複製到記憶體140、開機自我測試(Power-On Self Test,POST)程序等等。值得注意的是,在開機程序的過程中,可在將韌體晶片130中的韌體複製到記憶體140之後,執行韌體更新程序,即,步驟S305~步驟S320。
而在判定主要區塊133已損壞時,如步驟S445所示,執行韌體還原程序,以還原韌體晶片130。底下再舉一例來說明步驟S445的詳細流程。
圖5是依照本發明一實施例的執行韌體還原程序的流程圖。在步驟S505中,將啟動程式碼載入至記憶體140來執行。在此,啟動程式碼中包括韌體還原程式碼。
接著,在步驟S510中,判斷記憶體140中的啟動程式碼是由指定區塊134或啟動區塊132所載入。舉例來說,在步驟S430之後,可將判定結果記錄至一暫存器(例如為旗標暫存器)。例如,判定目前所執行的啟動程式碼位於啟動區塊132時,於暫存器中寫入第一旗標值;而在判定目前所執行的啟動程式碼位於指定區塊134時,於暫存器中寫入第二旗標值。或者,亦可在步驟S410之後,倘若指定區塊134存在啟動程式碼,便於暫存器中寫入第二旗標值;倘若指定區塊134不存在啟動程式碼,便於暫存器中寫入第一旗標值。據此,便能夠根據暫存器中的值來判斷記憶體140中的啟動程式碼是由指定區塊134或啟動區塊132所載入。
倘若記憶體140中的啟動程式碼是由是由啟動區塊132所載入,執行步驟S515,複製啟動區塊132的啟動程式碼至主要區塊133中的指定區塊133。接著,在步驟S520中,還原啟動區塊132。之後,在步驟S525中,還原主要區塊133。
倘若記憶體140中的啟動程式碼是由指定區塊134所載入,表示啟動區塊132可能已經損壞,因此直接執行步驟S520以及步驟S525來還原整個韌體晶片130。
在此,韌體還原程式碼是載入至記憶體140中來執行。在啟動韌體還原程式碼之後,會去初始化硬碟、光碟機或隨身碟等週邊設備以尋找原始韌體,待找到原始韌體之後,便將原始韌體載入到記憶體140裡面,再將原始韌體燒錄至韌體晶片130。
另外,倘若在韌體還原程序中發生斷電或當機,在重開機之後,會返回執行步驟S405~S445來判斷要執行開機程序或是執行韌體還原程序。據此,便能夠避免在更新或還原韌體的過程中發生斷電或當機而造成無法開機的狀態。
綜上所述,在更新韌體的過程中,將啟動區塊的啟動程式碼暫存於主要區塊中,並且,在韌體晶片的起始位址寫入一載入器,在開機時藉由載入器來判斷讀取主要區塊或啟動區塊中的啟動程式碼。據此,當遇到斷電或當機而重新開機時,電子裝置便能夠透過暫存於主要區塊中的啟動程式碼來重新啟動,以還原韌體晶片,據以可避免無法開機的情況。藉由上述方法,不僅可更新啟動區塊,並且亦不會佔用韌體晶片太多儲存空間,此外,在燒錄韌體晶片發生斷電或當機時,透過上述方法仍可將韌體晶片還原。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...電子裝置
110...中央處理單元
120...控制晶片
130...韌體晶片
131...前置區塊
132...啟動區塊
133...主要區塊
134...指定區塊
140...記憶體
S305~S320...更新韌體的方法各步驟
S405~S445...開機方法的各步驟
S505~S525...執行韌體還原程序的各步驟
圖1是依照本發明一實施例的電子裝置的方塊圖。
圖2是依照本發明一實施例的韌體晶片的示意圖。
圖3是依照本發明一實施例的更新韌體的方法流程圖。
圖4是依照本發明一實施例的開機方法的流程圖。
圖5是依照本發明一實施例的執行韌體還原程序的流程圖。
130...韌體晶片
131...前置區塊
132...啟動區塊
133...主要區塊
134...指定區塊

Claims (15)

  1. 一種開機方法,適於具有一韌體晶片的一電子裝置,該韌體晶片包括一前置區塊、一啟動區塊以及一主要區塊,該啟動區塊儲存一韌體的一啟動程式碼,該主要區塊儲存該韌體的一主要程式碼,而該前置區塊設置於該韌體晶片的起始位址,並且該前置區塊儲存一載入器,該方法的步驟包括:執行該前置區塊中的該載入器;透過該載入器來判斷該主要區塊中的一指定區塊是否存在該啟動程式碼,以決定讀取該指定區塊中的該啟動程式碼或該啟動區塊中的該啟動程式碼;執行該啟動程式碼來檢查該主要區塊是否損壞;倘若該主要區塊已損壞,執行一韌體還原程序,以還原該韌體晶片;以及倘若該主要區塊未損壞,執行該主要程式碼。
  2. 如申請專利範圍第1項所述之開機方法,其中透過該載入器來判斷該主要區塊中的該指定區塊是否存在該啟動程式碼的步驟之後,更包括:倘若該主要區塊中的該指定區塊存在該啟動程式碼,讀取該指定區塊中的該啟動程式碼;以及倘若該主要區塊中的該指定區塊不存在該啟動程式碼,讀取該啟動區塊中的該啟動程式碼。
  3. 如申請專利範圍第1項所述之開機方法,其中檢查該主要區塊是否損壞的步驟包括:判斷目前所執行的該啟動程式碼位於該啟動區塊或該指定區塊;當目前所執行的該啟動程式碼位於該指定區塊時,判定該主要區塊已損壞;當目前所執行的該啟動程式碼位於該啟動區塊時,檢查該主要區塊的一核對和是否正確;倘若該核對和正確,判定該主要區塊未損壞;以及倘若該核對和不正確,判定該主要區塊已損壞。
  4. 如申請專利範圍第3項所述之開機方法,其中在判斷目前所執行的該啟動程式碼位於該啟動區塊或該指定區塊的步驟之後,將判定結果記錄至一暫存器;其中,執行該韌體還原程序的步驟包括:將該啟動程式碼載入至一記憶體來執行;依據該暫存器中的判定結果,判斷該記憶體中的該啟動程式碼是由該指定區塊或該啟動區塊所載入;倘若該記憶體中的該啟動程式碼是由該啟動區塊所載入,複製該啟動區塊的該啟動程式碼至該主要區塊中的該指定區塊;還原該啟動區塊;以及還原該主要區塊。
  5. 如申請專利範圍第4項所述之開機方法,其中在依據該暫存器中的判定結果,判斷該記憶體中的該啟動程式碼是由該指定區塊或該啟動區塊所載入的步驟之後,更包括:倘若該記憶體中的該啟動程式碼是由該指定區塊所載入,還原該啟動區塊;以及還原該主要區塊。
  6. 如申請專利範圍第1項所述之開機方法,其中執行該開機程序的步驟包括:將該啟動區塊的該啟動程式碼以及該主要區塊的該主要程式碼載入至一記憶體;當接收到一韌體更新指令時,將該啟動區塊的該啟動程式碼複製到該指定區塊;更新該啟動區塊;以及更新該主要區塊。
  7. 一種更新韌體的方法,適於具有一韌體晶片的一電子裝置,該韌體晶片包括一前置區塊、一啟動區塊以及一主要區塊,該啟動區塊儲存一韌體的一啟動程式碼,該主要區塊儲存該韌體的一主要程式碼,而該前置區塊設置於該韌體晶片的起始位址,並且該前置區塊儲存一載入器,該方法的步驟包括:將該啟動程式碼與該主要程式碼載入至一記憶體;接收到一韌體更新指令,將該啟動區塊的該啟動程式碼複製到該主要區塊的一指定區塊;更新該啟動區塊;以及更新該主要區塊並覆蓋該指定區塊;其中,當更新韌體失敗時,在重新開機之後,透過該載入器來判斷該主要區塊中的該指定區塊是否存在該啟動程式碼,以決定讀取該指定區塊中或該啟動區塊中的該啟動程式碼,以還原該韌體晶片。
  8. 如申請專利範圍第7項所述之更新韌體的方法,更包括:當在複製該啟動區塊的該啟動程式碼至該主要區塊中的該指定區塊的過程中,更新韌體失敗時,在重新開機之後,透過該載入器判定該指定區塊不存在該啟動程式碼,讀取該啟動區塊的該啟動程式碼,以還原該韌體晶片。
  9. 如申請專利範圍第7項所述之更新韌體的方法,更包括:當在更新該啟動區塊的過程中,更新韌體失敗時,在重新開機之後,透過該載入器判定該指定區塊存在該啟動程式碼,讀取該指定區塊中的該啟動程式碼,以還原該韌體晶片。
  10. 如申請專利範圍第7項所述之更新韌體的方法,更包括:當在更新該主要區塊的過程中,更新韌體失敗時,在重新開機之後,透過該載入器判定該指定區塊不存在該啟動程式碼,讀取該啟動區塊的該啟動程式碼,以還原該韌體晶片。
  11. 如申請專利範圍第7項所述之更新韌體的方法,其中在重新開機之後,更包括:執行該前置區塊中的該載入器;透過該載入器來判斷該主要區塊中的該指定區塊是否存在該啟動程式碼,以決定讀取該指定區塊中的該啟動程式碼或該啟動區塊中的該啟動程式碼;執行該啟動程式碼來檢查該主要區塊是否損壞;倘若該主要區塊已損壞,執行該韌體還原程序,以還原該韌體晶片;以及倘若該主要區塊未損壞,執行一開機程序。
  12. 一種電子裝置,包括一記憶體;一韌體晶片,包括:一啟動區塊,儲存一韌體的一啟動程式碼;一主要區塊,儲存該韌體的一主要程式碼,並且該主要區塊包括一指定區塊,以暫存該啟動程式碼;以及一前置區塊,設置於該韌體晶片的起始位址,並且該前置區塊儲存一載入器,利用該載入器判斷該主要區塊中的該指定區塊是否存在該啟動程式碼,以決定執行該指定區塊或該啟動區塊中的該啟動程式碼;以及一中央處理單元,耦接至該記憶體與該韌體晶片,在開機時,該中央處理單元執行該前置區塊中的該載入器,透過該載入器決定讀取該指定區塊或該啟動區塊中的該啟動程式碼,以在判定讀取該指定區塊的該啟動程式碼時,執行一韌體還原程序來還原該韌體晶片;而在判定讀取該啟動區塊中的該啟動程式碼時,執行一開機程序。
  13. 如申請專利範圍第12項所述之電子裝置,其中該中央處理單元在執行該開機程序中,在將該啟動程式碼與該主要程式碼載入至該記憶體之後,當接收到一韌體更新指令時,將該啟動區塊的該啟動程式碼複製到該指定區塊;之後,更新該啟動區塊,並且更新該主要區塊;其中,在重新開機之後,當該載入器判定該指定區塊存在該啟動程式碼,讀取該指定區塊中的該啟動程式碼,以還原該韌體晶片。
  14. 如申請專利範圍第12項所述之電子裝置,其中該中央處理單元在決定讀取該指定區塊中或該啟動區塊中的該啟動程式碼之後,執行該啟動程式碼來檢查該主要區塊是否損壞;倘若該主要區塊已損壞,執行該韌體還原程序,以還原該韌體晶片;倘若該主要區塊未損壞,執行該開機程序。
  15. 如申請專利範圍第14項所述之電子裝置,其中該中央處理單元在決定讀取該指定區塊中或該啟動區塊中的該啟動程式碼之後,判斷目前所執行的該啟動程式碼位於該啟動區塊或該指定區塊;當目前所執行的該啟動程式碼位於該指定區塊時,判定該主要區塊已損壞;當目前所執行的該啟動程式碼位於該啟動區塊時,檢查該主要區塊的一核對和是否正確;倘若該核對和正確,判定該主要區塊未損壞;以及倘若該核對和不正確,判定該主要區塊已損壞。
TW100140420A 2011-11-04 2011-11-04 更新韌體方法與開機方法及使用其之電子裝置 TWI441081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW100140420A TWI441081B (zh) 2011-11-04 2011-11-04 更新韌體方法與開機方法及使用其之電子裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW100140420A TWI441081B (zh) 2011-11-04 2011-11-04 更新韌體方法與開機方法及使用其之電子裝置

Publications (2)

Publication Number Publication Date
TW201319942A TW201319942A (zh) 2013-05-16
TWI441081B true TWI441081B (zh) 2014-06-11

Family

ID=48872542

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100140420A TWI441081B (zh) 2011-11-04 2011-11-04 更新韌體方法與開機方法及使用其之電子裝置

Country Status (1)

Country Link
TW (1) TWI441081B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI499978B (zh) * 2013-10-24 2015-09-11 Insyde Software Corp A method of transferring data between a working system and a basic input / output system, a recording medium, and a computer program product
TWI515557B (zh) * 2014-02-26 2016-01-01 緯創資通股份有限公司 電腦系統與控制方法
TWI556172B (zh) * 2015-09-04 2016-11-01 神雲科技股份有限公司 電腦裝置及其開機方法
US10620879B2 (en) 2017-05-17 2020-04-14 Macronix International Co., Ltd. Write-while-read access method for a memory device
US10445088B2 (en) * 2018-01-11 2019-10-15 Macronix International Co., Ltd. System boot code clone
TWI655537B (zh) * 2018-03-12 2019-04-01 點序科技股份有限公司 系統碼的管理裝置及其管理方法
TWI679529B (zh) * 2018-10-08 2019-12-11 新唐科技股份有限公司 自我檢測系統及其方法
US11126518B1 (en) * 2020-03-16 2021-09-21 Quanta Computer Inc. Method and system for optimal boot path for a network device

Also Published As

Publication number Publication date
TW201319942A (zh) 2013-05-16

Similar Documents

Publication Publication Date Title
TWI441081B (zh) 更新韌體方法與開機方法及使用其之電子裝置
JP6124994B2 (ja) レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム
US10139876B2 (en) Efficient reboot of an operating system executed in a virtual machine
TWI501253B (zh) 於裝置開機期間處置來自非揮發性記憶體之錯誤
US6317845B1 (en) System for computer recovery using removable high capacity media
TW200847021A (en) Automatic backup, restore and update BIOS computer system
TWI382346B (zh) 保護雙基本輸出入系統程式之電腦系統及其控制方法
US20040158702A1 (en) Redundancy architecture of computer system using a plurality of BIOS programs
TW201239759A (en) BIOS update method and computer system for using the same
US20060150037A1 (en) Methods and systems for operating system recovery
US20090271660A1 (en) Motherboard, a method for recovering the bios thereof and a method for booting a computer
JPH03278126A (ja) 計算機システム立上げ方式
US11704198B2 (en) Method and apparatus for providing recovery from a computing device boot up error
US10586048B2 (en) Efficient reboot of an operating system
WO2019242272A1 (zh) 一种bios启动操作***的方法、装置、设备及介质
CN110874237A (zh) 软件升级方法、装置、终端以及可读存储介质
US20050033954A1 (en) Computer system having BIOS with multiple memory block
US9348603B2 (en) Electronic apparatus and booting method
TW200809489A (en) BIOS damage detection and repair method and the motherboard
KR101393034B1 (ko) 시스템 복원 장치 및 방법
JP4155052B2 (ja) エミュレータ、エミュレーション方法およびプログラム
JP4735765B2 (ja) Linuxプログラム起動システム
WO2015043010A1 (zh) 数据处理方法、装置及电子设备
JP7074291B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2009075992A (ja) 情報処理装置のメモリダンプ採取方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees