TWI661357B - 用於啟動多重開機裝置及多重開機微處理器之方法 - Google Patents
用於啟動多重開機裝置及多重開機微處理器之方法 Download PDFInfo
- Publication number
- TWI661357B TWI661357B TW103109765A TW103109765A TWI661357B TW I661357 B TWI661357 B TW I661357B TW 103109765 A TW103109765 A TW 103109765A TW 103109765 A TW103109765 A TW 103109765A TW I661357 B TWI661357 B TW I661357B
- Authority
- TW
- Taiwan
- Prior art keywords
- boot
- image
- boot image
- memory
- microprocessor
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/4408—Boot device selection
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一種能夠自各儲存一開機映像之複數個開機裝置啟動之多重開機裝置。該多重開機裝置基於指定給該等開機裝置之各者之序號判定載入哪個開機裝置。一些實施例將使用僅硬體操作進行此判定。該多重開機裝置比較該等可用開機裝置之該等序號以判定待載入之該開機映像。接著,該選定開機映像之位址映射至該裝置之預設啟動向量。該等其餘映像同樣地映射至一次要啟動記憶體。接著,該裝置自該預設啟動向量啟動。使用者可藉由調整該等啟動序號之一或多者改變待載入之該開機裝置。可在不重設該裝置之情況下藉由切換執行至該次要啟動記憶體中之開機映像及自該次要啟動記憶體中之開機映像切換執行而更新該等開機映像。
Description
本申請案主張2013年3月14日申請之美國臨時申請案第61/784,833號之權益,該案之全部內容併入本文中。
本發明係關於微控制器及微處理器,且特定而言係關於用於多重啟動嵌入式微控制器系統之啟動順序。
在供電或重設之後,一嵌入式微控制器即必須選擇嵌入式系統將自其運行之含有一開機映像之一開機裝置。微控制器可支援一個以上之開機裝置之使用。多重啟動係指在多個可用開機裝置之間選擇之微控制器。為支援多重啟動,需要容許微控制器自可用開機裝置組選擇所要開機裝置之一機構。
系統通常利用一預設啟動向量識別含有待載入開機映像之開機裝置。有時稱作為一重設向量之一預設啟動向量係識別系統目前自其經組態以運行之開機裝置之位置之一指定位址空間。在一重新啟動或重設之後,CPU即存取啟動向量且被引導至含有接著被載入之一開機映像之一開機裝置之位置。各開機映像通常包含用於嵌入式系統之操作之應用程式碼及用於載入應用程式碼之啟動載入程式碼。啟動載入程式碼起始系統且載入用於藉由系統執行之應用程式碼。在一單個開
機系統中,由啟動向量識別唯一開機映像。然而,在一多重開機系統中,出現關於如何調適此啟動向量機構以在多個可用開機裝置之間選擇之問題。
支援多重啟動之一解決方案係改變所利用之啟動向量。此可藉由***結合一重設指令執行之一轉移指令完成。此轉移指令將系統引導至一選定開機裝置之位置。另一可能性係在發出一重設命令之前重新定義啟動向量之位置,使得在重設之後系統即載入由此經重新定義啟動向量指定之開機映像。另一可能性係藉由將開機映像放置在一固定位址處且程式化系統以直接自此位址啟動而規避啟動向量。
此等習知方法需要在每次選擇一不同開機裝置時對系統之軟體進行顯著改變。例如,若啟動向量之位置改變,則必須重新編輯開機映像以便利用新的啟動向量。由於對開機映像進行改變,故使用者必須確保經更新開機映像根據重新映射啟動向量組態。因為對啟動向量之位置之各改變,所以使用者必須將此等改變傳播至所有相關開機映像。若啟動向量被整體規避;則不僅必須重新編輯各開機映像以指向待使用之啟動編碼之位址位置,必須變更裝置邏輯本身以規避預設啟動向量,且(如前文)必須重新編輯各開機映像以便重設至此新的啟動編碼位置。可期望具有每次對選定開機裝置進行一改變時不需要重新編輯開機映像之一可組態多重啟動解決方案。可進一步期望能夠經由一簡單硬體組態進行多重啟動選擇。
習知雙重啟動方法需要實質重新組態以便改變選定開機映像且不提供以一故障自動防護(fail-safe)方式更新開機映像之能力。因此,對容許在硬體中進行啟動判定且提供開機映像之順暢更新之可組態雙重啟動解決方案存在一需要。此項技術中之此等及其他缺點大部分藉由根據本發明之實施例之一系統及方法克服。
根據一實施例,用於啟動具有一第一開機映像及一第二開機映像之一多重開機裝置之一方法,其包括:判定與第一開機映像相關聯之一第一啟動序號;判定與第二開機映像相關聯之一第二啟動序號;藉由比較第一序號與第二啟動序號識別一選定開機映像,其中該比較判定第一開機映像或第二開機映像是否係選定開機映像,其中選定開機映像係藉由裝置硬體操作識別;將選定開機映像之位址映射至由一預設啟動向量指定之一主要啟動記憶體位置;及自預設啟動向量開機裝置。
進一步實施例亦可包含:判定第一啟動序號及判定第二啟動序號,其等分別包括自與第一開機映像相關聯之一預定位置讀取第一啟動序號及自與第二開機映像相關聯之一預定位置讀取第二啟動序號。其他實施例亦可包含確認已啟用裝置之多重啟動。在其他實施例中,未判定為選定開機映像之開機映像係一次要開機映像且亦可包含將次要開機映像之位址映射至一次要啟動記憶體位置,其中可在不影響自主要啟動記憶體位置執行之裝置操作之情況下更新次要啟動記憶體位置之內容。其他實施例亦可包含:處理引導裝置自選定開機映像調換至儲存在次要啟動記憶體位置中之開機映像之一命令;及自選定開機映像至儲存在次要啟動記憶體位置中之開機映像切換裝置之執行,其中切換係在不重設裝置之情況下進行。其他實施例亦可包含:設定指示裝置是否自主要記憶體映像位置或次要啟動記憶體位置執行之一組態參數。在其他實施例中,確認啟用多重啟動包括判定第一開機映像及第二開機映像是否皆係有效開機映像。
100‧‧‧微控制器
101‧‧‧匯流排
102‧‧‧中央處理單元(CPU)核心
104‧‧‧程式記憶體
108‧‧‧資料記憶體
110‧‧‧中斷控制器
111‧‧‧時鐘模組
114‧‧‧周邊組件/周邊設備
115‧‧‧預設啟動向量
116‧‧‧第一開機映像
118‧‧‧第二開機映像
120‧‧‧有限狀態機器
122‧‧‧雙重啟動控制暫存器/雙重啟動暫存器
124‧‧‧啟動調換暫存器
126‧‧‧啟動序號/第二開機映像序號
128‧‧‧啟動序號/第一開機映像序號
130‧‧‧啟動記憶體位置
135‧‧‧次要啟動記憶體位置
150‧‧‧暫存器陣列
154‧‧‧運算邏輯單元
156‧‧‧指令解碼模組
158‧‧‧程式計數器
201‧‧‧步驟
202‧‧‧步驟
205‧‧‧步驟
210‧‧‧選定開機映像
215‧‧‧第一交替開機映像
220‧‧‧步驟
230‧‧‧步驟
235‧‧‧步驟
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
310‧‧‧步驟
312‧‧‧步驟
315‧‧‧步驟
320‧‧‧步驟
325‧‧‧步驟
330‧‧‧步驟
335‧‧‧步驟
402‧‧‧步驟
404‧‧‧步驟
406‧‧‧步驟
408‧‧‧步驟
410‧‧‧步驟
熟習此項技術者藉由參考隨附圖式可更好地理解本發明且明白其許多目的、特徵及優點。不同圖式中使用相同參考符號指示類似或相同項。
圖1係根據實施例之一例示性處理器之一方塊圖。
圖2示意性地圖解說明實施例之操作。
圖3係圖解說明實施例之操作之一流程圖。
圖4係圖解說明實施例之操作之一流程圖。
參考隨附圖式中圖解說明及下文詳細描述之例示性且因此非限制性實施例更完全解釋本發明及其各種特徵及有利細節。可省略已知程式化技術、電腦軟體、硬體、操作平台及協定之描述以免使細節不必要地模糊本發明。然而,應瞭解藉由僅圖解說明且不藉由限制給定同時指示較佳實施例之詳細描述及特定實例。熟習此項技術者自本發明將變得明白基本發明概念之精神及/或範疇中之各種替代、修改、添加及/或重新配置。
如本文中使用,術語「包括」、「包含」、「具有」,或其等任何其他變體意欲涵蓋一非排他性包含。例如,包括一列元件之一程序、產品、物品,或裝置未必限於僅該等元件但可包含未明確列出或此等程序、產品、物品,或裝置固有之其他元件。此外,除非明確說明相反情形,「或」係指一包含或且不係一排他或。例如,一條件A或B係由下列之任一者滿足:A為真(或存在)且B為假(或不存在)、A為假(或不存在)且B為真(或存在),及A及B皆為真(或存在)。
此外,本文中給定之任何實例或圖解說明不應以任何方式被視為任何術語或與其等一起被利用之術語之約束、限制,或表達定義。代替性地,此等實例或圖解說明應被視為關於一特定實施例描述且僅為闡釋性。一般技術者應瞭解任何術語或此等實例或圖解說明與其一起被利用之術語涵蓋其他實施例及可(或可不)隨其一起或在說明書之其他地方給定之其調適及實施方案,且所有此等實施例意欲被包含於該術語或該等術語之範疇中。指定此等非限制性實例及圖解說明之語
言包含(但不限於):「例如」、「在一實施例中」及類似表達。
如上文所述,一嵌入式系統通常自一開機映像運行,其中開機映像在記憶體中之位置係由預設啟動向量識別。每當系統啟動或重設時,預設啟動向量指定待載入之開機映像。此預設啟動向量可位於程式記憶體中之任何預定位置處,前提係此位置作為一重新啟動或一停止之後即待執行之第一啟動指令之位址僅為CPU及開機映像所知。在系統啟動或重設之後,即由預設啟動向量指定之位址識別待載入之開機映像。然而,不同於習知系統,實施例提供經由可在硬體中執行之一簡單組態程序改變待載入開機映像之能力。
如上文所述,改變預設啟動向量之位置係可能的,但需要重新編輯開機映像之各者以指向此新的啟動向量位置。代替性地,實施例提供在不需要重新編輯開機映像或變更選定開機映像藉由其由系統判定之邏輯之情況下改變待使用之開機映像之能力。換言之,實施例利用在系統之任何重新啟動或重設之後即執行之第一指令之一習知預設啟動向量。實施例提供藉由重新排序可用開機裝置切換開機映像之能力。因此,一不同開機裝置可藉由依序重新排序開機映像被指定為選定開機裝置。根據實施例,一開機裝置可係可指定給啟動向量之任何記憶體裝置,諸如內部或外部揮發性記憶體(諸如RAM),或內部或外部非揮發性記憶體(諸如快閃記憶體、EEPROM或一SD卡)。
根據實施例,開機裝置被指定給指定開機裝置之可用組中含有一開機映像之各開機裝置之排名之序號。在一重新啟動或重設之後,系統即可使用在硬體中實施之一狀態機器基於開機裝置之序號判定可用開機裝置之相對順序。一旦選定開機裝置已經識別,則選定開機裝置之位址在不變更開機映像之情況下映射至預設啟動向量。此容許CPU自重新導向至選定開機映像之預設啟動向量習知地啟動。以此方式,可使用可組態序號對任何數目之開機映像進行使用及選擇,其中
選擇所要開機映像之程序可在硬體中實施且因此在CPU不必載入及執行任何軟體之情況下執行。
根據一些實施例,經提供至各開機映像之序號表示開機映像之相對順序。在一實施例中,經指定最小序號之開機映像係選定開機映像,其中具有下一最小序號之開機映像係第一交替選定開機映像。在另一實施例中,經提供最大序號之開機映像係選定開機映像。
在一些實施例中,用於各開機裝置之序號儲存在該開機映像之一預定位置中,使得各開機裝置提供用於識別開機裝置之序號之一標準化機構。以此方式,使用者能夠指定針對各開機裝置之一序號,使得序號儲存為開機映像之部分。接著各可用開機裝置可經查詢以確定其經指定序號。在另一實施例中,開機裝置序號作為存一資料結構儲存在記憶體中。可查詢此資料結構以判定可用開機裝置及各開機裝置之序號。在另一實施例中,序號儲存在開機裝置之外部,使得各序號儲存在與一開機裝置相關聯之一記憶體位置中。
在重設之後,利用序號識別選定開機裝置。在一些實施例中,利用一狀態機器讀取所有可用開機裝置之序號且判定具有最小(或最大)序號之開機裝置。以此方式,狀態機器識別選定開機裝置。
根據實施例,一旦已使用序號之相對順序識別選定開機裝置,則選定開機裝置之位址映射至由預設啟動向量指定之啟動記憶體。因此,選定開機映像將變成在一後續重新啟動或重設之後即載入之預設開機映像且將保留預設開機映像直至可用開機映像之序號經變更以指示一不同開機映像已經選擇。亦根據實施例,具有第二排名序號之開機映像之位址映射至一次要啟動記憶體位置。如下文所述,實施例提供給使用者觸發在啟動記憶體與次要啟動記憶體之間調換執行之能力。此提供給裝置切換執行至次要啟動記憶體同時更新啟動記憶體中之開機映像之機會。此容許故障自動防護更新開機映像且亦容許在不
重設裝置之情況下進行更新。
接著,CPU自選定開機裝置進行執行。根據一些實施例,開機裝置之序號可經由應用程式碼中之軟體指令改變,其中此等改變累加或累減一或多個開機裝置之序號。在裝置之一啟動或重設之後,使用經更新序號判定開機裝置之相對順序。以此方式,使用者可在不必重新編輯任何軟體或變更裝置之啟動邏輯之情況下改變選定開機映像。因此,選定開機映像在硬體中可藉由排序可用開機映像之有效序號而判定。
各啟動記憶體位置係記憶體中含有一開機映像之一區域,其係CPU可自其運行之一組啟動指令及應用程式碼。然而,記憶體中對應於一啟動記憶體位置之一區域亦可係空白的。此容許在記憶體中保存一區域之能力,但具有產生一無效開機映像之效果。接著該裝置可更新這些無效開機映像,同時自一有效開機映像執行。
在下文進一步詳細解釋之另一實施例中,一使用者可在不必重設裝置之情況下自一開機映像「熱調換」至另一開機映像。例如,在執行藉由一第一開機映像載入之應用程式碼時,使用者可觸發至一第二開機映像之執行之一立即調換。此提供調換載入啟動記憶體中之先前選定開機映像與載入次要啟動記憶體中之開機映像之能力,前提係觸發保持有效。在一些實施例中,此暫時性開機映像調換可藉由調整開機映像之啟動序號經調適用於後續重設。在下一重設之後,開機映像將即相應地重新映射。
現轉向圖1,展示根據實施例實施一多重開機系統之一例示性微控制器100之一方塊圖。應注意微控制器之其他組態係可能的。因此,圖1係一例示性實施例。微控制器100包含一匯流排101及耦合至匯流排101之一中央處理單元(CPU)核心102。CPU核心102可包含一或多個暫存器陣列150、一運算邏輯單元154、一指令解碼模組156及一
程式計數器158。在啟動或重設之後,CPU核心102即經組態以自儲存在程式記憶體中之預設啟動向量115讀取其第一指令。
在圖1中圖解說明之實施例中,資料記憶體108經由匯流排101與CPU核心102連通。匯流排101亦將諸如中斷控制器110及時鐘模組111之至微控制器服務之存取提供給CPU核心102。CPU核心102亦可經由匯流排101存取一或多個周邊組件114。此等周邊組件可完全藉由微控制器實施或可在微控制器外部之某些部分中實施。可用於微控制器之周邊設備114可實施(例如)時序支援、I/O(輸入/輸出)介面、PWM(脈衝寬度調變)及USB功能。
CPU核心101亦與程式記憶體104連通。在一些實施例中,一或多個開機映像116、118儲存在程式記憶體104中。其他實施例可容許開機映像儲存在一單獨、專用記憶體中。開機映像係由一第一開機映像116及一或多個第二開機映像118組成。如下文所述,實施例容許微控制器100基於第一開機映像116或第二開機映像118之一者選擇性地啟動。如上文所述,一些實施例可提及啟動記憶體位置、區域,或裝置而非開機映像。因此,在一些實施例中,第一開機映像116及第二開機映像118可表示為記憶體中之區域,該等區域係不保證該區域含有一有效開機映像之啟動記憶體位置。
根據圖1之實施例,一預設啟動向量115位於程式記憶體104中。CPU核心102經組態以自預設啟動向量115讀取其第一指令。一些實施例可容許啟動向量115位於其他非揮發性或揮發性記憶體中。預設啟動向量115可位於程式記憶體中之任何地方,前提係CPU核心102已經組態以在一啟動或重設之後即存取預設啟動向量115。預設啟動向量115指定待載入開機映像在記憶體中之位置,其稱作為啟動記憶體130。因此,在一啟動或重設之後,CPU核心102即存取預設啟動向量115且被導向至啟動記憶體130之位址,該位址已映射至儲存選定開機
映像之選定開機裝置之位址。
裝置亦可經由一次要啟動記憶體135將其他開機映像留存在程式記憶體中。基於開機映像藉由序號之排序,選定開機映像被識別且其位址映射至啟動記憶體130。第二排名之開機映像係第一交替開機映像且其位址映射至次要啟動記憶體135。接著,使用者可如需要觸發啟動記憶體130與次要啟動記憶體135之切換執行以便以一故障自動防護方式更新此等開機映像。
在一些實施例中,開機映像116、118包含用於儲存啟動序號之預定位置。如圖1中圖解說明,第一開機映像係由一啟動序號128組成,啟動序號128用以判定第一開機映像對已被指定一啟動序號之其他可用開機映像之相對順序。以此相同方式,第二開機映像亦係由一啟動序號126組成,該啟動序號126指定可用開機映像組中之第二開機映像之相對順序。
為促進可用開機映像之相對順序之判定,以一標準方式判定各開機映像之啟動序號。在一些實施例中,啟動序號儲存在開機映像中之一預定位置中。例如,各開機映像之啟動序號可位於一記憶體位址處,該記憶位址位於距開機映像之第一指令一固定位移處。在一些實施例中,一開機映像中啟動序號儲存於其處之記憶體位址可用作為開機映像中可在一預定位置處查詢之一變體。在一些實施例中,已經指定之啟動序號儲存在一資料結構中。在此案例中,可藉由查詢此資料結構確定可用開機映像之相對順序以獲得各開機映像之序號。在一些實施例中,啟動序號將儲存在開機映像外部之非揮發性記憶體中。
每一可用開機映像可被指定一啟動序號。然而,實施例可將僅一序號指定給一子組之可用開機映像。在此等案例中,不具有序號之開機映像將排序在具有一經指定序號之所有開機映像之後。在一些實施例中,一些可用開機裝置可係無效的且因此不能以此方式排序。對
於此等無效開機裝置,查詢其等序號傳回一錯誤。此等無效開機映像將不映射至任何啟動記憶體且因此不作為多重開機裝置之啟動選項存在。
圖1亦圖解說明由用以在一些實施例中引導啟動程序之專用組態暫存器組成之一啟動面板。一此暫存器係可用以組態微控制器100是否執行雙重啟動程序之一雙重啟動控制暫存器122。如下文更詳細解釋,若雙重啟動暫存器122之值不啟用雙重啟動,則裝置將微控制器作為一單個開機裝置進行啟動。組態暫存器亦可包括用以識別當前載入之開機映像且命令裝置進行至一指定開機映像(例如,次要啟動記憶體中之開機映像)之一熱調換之一動調換暫存器124。可存在進一步引導啟動順序程序之額外組態暫存器。
圖2示意性地圖解說明用於根據實施例利用啟動序號之一程序。在啟動或重設之後,裝置即讀取兩個可用開機映像116、118之序號。在步驟201處,判定第一開機映像116之啟動序號126。在步驟202處,判定第二開機映像之啟動序號128。在步驟205處,裝置接著比較第一開機映像序號128與第二開機映像序號126。基於此比較,識別選定開機映像210及第一交替開機映像215。在步驟220處,將儲存選定開機映像210之開機裝置之位址映射至啟動記憶體位置130。在步驟230處,將第一交替開機映像215之位址映射至次要啟動記憶體位置135。在一些實施例中,其餘有效開機映像之位址依序映射至次要啟動記憶體。在步驟235處,接著CPU核心藉由存取預設啟動向量習知地啟動且被重新導向至儲存選定開機映像之開機裝置之位址。CPU核心自選定開機映像進行啟動。
根據一些實施例,可利用一有限狀態機器120識別選定開機映像。使用用於識別選定開機映像之一有限機器有利於在硬體中實施可組態雙重啟動之實施例。使用有限狀態機器120進行啟動序號之成對
比較以判定其等相對順序。在圖2中,使用一有限狀態機器120判定一第一開機映像116及一第二開機映像118之啟動序號之相對順序。在步驟201及202處,判定開機映像之各者之啟動序號。如上文所述,根據一些實施例,各開機映像之啟動序號可儲存在開機映像之一預定位址位置處。其他實施例可容許啟動序號儲存在記憶體中之其他固定位置或資料結構中。在步驟205處,接著有限狀態機器比較第一開機映像之啟動序號128與第二開機映像之啟動序號126。
在圖2之實例中,圖解說明僅兩個開機映像之相對順序。然而,應注意可使用有限狀態機器120判定任何數目之開機映像之相對順序。有限狀態機器120同時比較兩個開機映像之啟動序號。然而,根據此項技術中已知之演算法,可進行一系列成對比較以判定任何數目之開機映像之啟動序號之相對順序。
在圖3之實施例中,裝置基於是否已要求雙重啟動或多個開機映像是否可用於啟動而對是否進行雙重啟動進行一初步判定。在步驟302處,裝置經歷一啟動或一重設。在步驟304處,讀取需用以判定是否進行雙重啟動之組態資料。在一實施例中,存取啟動組態板以讀取編碼雙重啟動指令之組態位元。在一些實施例中,此等組態位元可位於雙重啟動暫存器122中。其他實施例可代替地將此等組態位元儲存在程式記憶體中之固定位置中。在一些實施例中,基於是否可識別多個有效開機映像判定雙重啟動。因此,在步驟304處,CPU核心存取每一可用開機映像之啟動序號。
在步驟306處,裝置判定是否已啟用雙重啟動。若使用組態位元,則實施例將判定此等位元是否啟用雙重啟動。若雙重啟動係基於有效啟動序號,則實施例將評估已識別之啟動序號以判定兩個或兩個以上之有效開機映像是否可用。若僅識別一個有效開機映像或組態位元指定雙重啟動未啟用,則在步驟315處,裝置藉由自預設啟動向量
啟動而以一單個啟動組態啟動。若未識別有效開機映像,則CPU核心自藉由預設啟動向量指定之開機映像啟動,該開機映像將係所知最後有效之開機映像。
若步驟306判定雙重啟動啟用,則接著如關於圖2之實施例描述判定選定開機映像。在步驟310處,判定第一開機映像116及第二開機映像118之啟動序號。基於步驟312處進行之啟動序號比較,判定第一開機映像116或第二開機映像118為選定開機映像。若第一開機映像116之啟動序號係最小啟動序號或等於最小序號;則在步驟320處,第一開機映像之位址映射至啟動記憶體,且在步驟325處,第二開機映像之位址映射至次要啟動記憶體。因此,若第二開機映像118之啟動序號係最小啟動序號;則在步驟330處,第二開機映像之位址映射至啟動記憶體,且在步驟335處,第一開機映像之位址映射至次要啟動記憶體。
圖4中展示一開機映像熱調換藉由其進行之程序。在一程序步驟402處,根據一第一開機映像116執行裝置。在此點處,啟動調換暫存器124發出一熱調換當前無效之信號。在步驟410處,使用啟動調換暫存器124判定是否進行一啟動調換。在一些實施例中,啟動調換暫存器124可編碼引導熱調換進行之一值。例如,鍵入啟動調換暫存器之零可指示應維持當前開機映像,且鍵入一可指示應調換當前開機映像。另一可能性係啟動調換暫存器124編碼目前載入之開機裝置之裝置號碼。只要啟動調換暫存器124含有對應於當前正執行開機映像之裝置號碼,則不進行調換。若啟動調換暫存器124經改變以指向一不同裝置號碼,則此發出應進行一啟動調換之信號。又一可能性係在軟體中經由一啟動調換指令指定啟動調換。此實施例係圖4之其餘元件之焦點。若啟動調換暫存器124指示目前不需要啟動調換,則裝置繼續監測啟動調換暫存器直至識別任何此指示。
在程序步驟404處,判定使用者已引導裝置進行開機映像之一熱調換。在圖4之實施例中,使用者將藉由發出一BOOTSWP指令觸發開機映像之一熱調換,該BOOTSWP指令之後接著一GOTO<target>指令,其中該<target>指定待熱調換之開機映像。例如,<target>將指定第二開機映像118作為代替作用中開機映像之待調換之開機映像。在步驟404處,CPU核心102執行BOOTSWP指令且中斷當前作用中第一開機映像116之執行。
在程序步驟406處,CPU核心102執行GOTO指令且直接轉移至<target>開機映像,例如,第二開機映像118。在執行此轉移之後,CPU核心102即開始執行第二開機映像118。此導致在不重設裝置且不改變現存裝置組態之情況下自第一開機映像116至第二開機映像118之一熱調換。在步驟408處,組態資料經更新以表明已熱調換作用中開機映像。例如,啟動調換暫存器124經更新以指示目前不要求熱調換或指定目前正執行之開機映像之位址。
開機映像之一熱調換藉由本身不變更映射至啟動記憶體之開機映像且因此不改變將在裝置之一重設之後即載入之開機映像。因此,即使第二開機映像118可能已經熱調換代替第一開機映像116,若第一開機映像116仍映射至啟動記憶體,則裝置在一後續啟動或重設之後將即載入第一開機映像116。除非對開機映像之啟動序號進行更改,一熱調換將繼續持續至僅裝置重設為止之一暫時性調換。可經由更新啟動序號之先前描述程序使開機映像之一熱調換成為持久調換。例如,若使用者已熱調換至第二開機映像118,則調換可藉由重新指定可用開機映像之啟動序號成為持久性的,使得第二開機映像118具有導致第二開機映像118映射至預設啟動向量115之最小啟動序號。
實施例提供之一優點係用於更新開機映像之故障自動防護機構。若正執行之目前作用中開機映像接收一更新,則實施例提供用於
進行此更新之一故障自動防護方法。例如,經更新開機映像可儲存至次要啟動記憶體。一旦經更新開機映像已經確認,則序號可經更新用於正執行開機映像及經更新開機映像,如上文所述,使得經更新開機映像現具有最小/最大序號使得其在下一啟動或重設之後將即被判定為選定開機映像。若在更新期間之任何時間發生一電源故障使得經更新開機映像損壞,則裝置可自當前正執行開機映像繼續操作。若在確認經更新開機映像之後但序號更新期間發生電源故障;則經更新序號係有效的使得新的開機映像正確地被識別為選定開機映像,或該序號係無效的使得當前正執行啟動編碼基於其仍位於啟動記憶體中且由預設啟動向量識別而被載入。
儘管前述說明書描述特定實施例,然而一般技術者參考此描述將明白且可進行本文中揭示之實施例及額外實施例之許多細節改變。在此內容背景下,說明書及圖式應被視為一闡釋性而非一限制性意義,且所有此等修正意欲被包含於本發明之範疇中。因此,本發明之範疇應由隨附申請專利範圍及其合法等效物判定。
Claims (20)
- 一種用於啟動(booting)具有一第一開機映像(boot image)及一第二開機映像之一多重開機裝置之方法,其中該多重開機裝置係包括一中央處理單元之一微處理器,其中該中央處理單元與儲存該第一開機映像及該第二開機映像之一程式記憶體耦合,該方法包括:判定與該第一開機映像相關聯並儲存於該程式記憶體之一第一啟動序號(boot sequence number);判定與該第二開機映像相關聯並儲存於該程式記憶體之一第二啟動序號;藉由比較該第一啟動序號與該第二啟動序號識別一選定開機映像,其中該比較判定該第一開機映像或該第二開機映像是否係該選定開機映像,其中該選定開機映像係藉由裝置硬體操作識別;將該選定開機映像之位址映射至由一預設啟動向量指定之該程式記憶體中之一主要啟動記憶體;及自該預設啟動向量啟動該裝置;其中未判定為該選定開機映像之該開機映像係一次要(secondary)開機映像,且該方法進一步包括:將該次要開機映像之位址映射至一次要啟動記憶體(boot memory)位置,其中可在不影響自該主要啟動記憶體位置執行之裝置操作之情況下更新該次要啟動記憶體位置之內容;處理引導該裝置自該選定開機映像調換至儲存在該次要啟動記憶體位置中之該次要開機映像之一命令;及其中該命令包括一專用指令,其後跟隨轉移指令(jump instruction)。
- 如請求項1之方法,其中判定該第一啟動序號(boot sequence)及判定該第二啟動序號分別包括:自該第一開機映像中之一預定位置讀取該第一啟動序號及自該第二開機映像中之一預定位置讀取該第二啟動序號。
- 如請求項1之方法,該方法進一步包括:藉由讀取該裝置中之一相關聯特別功能暫存器,確認(verifying)已啟用該裝置之多重啟動。
- 如請求項1之方法,該方法進一步包括:將該裝置之執行自該選定開機映像切換至儲存在該次要啟動記憶體位置中之該次要開機映像,其中該切換係在不重設該裝置之情況下進行。
- 如請求項4之方法,該方法進一步包括:設定該裝置之一特別功能暫存器中之一組態參數,該組態參數指示該微處理器是否自該主要啟動記憶體位置或該次要啟動記憶體位置執行。
- 如請求項3之方法,其中確認啟用多重開機包括:判定該第一開機映像及該第二開機映像皆係有效開機映像。
- 如請求項1之方法,其中該程式記憶體在該微處理器中。
- 如請求項1之方法,其中該程式記憶體部分地在該微處理器之內部及部分地在該微處理器之外部。
- 如請求項1之方法,其中可用開機映像之一子集經指派一啟動序號。
- 一種多重開機微處理器,其包括經組態以執行來自一程式記憶體之指令的一中央處理單元,該程式記憶體儲存一第一開機映像及一第二開機映像,其中該程式記憶體包括用於與該第一開機映像相關聯之一第一啟動序號之記憶體位置;其中該程式記憶體包括用於與該第二開機映像相關聯之一第二啟動序號之記憶體位置;其中該微處理器進一步包括一狀態機器,其可操作以在一重置(reset)後藉由比較該第一啟動序號與該第二啟動序號而識別一選定開機映像,其中該比較判定該第一開機映像或該第二開機映像是否係該選定開機映像;其中該程式記憶體進一步包括在該程式記憶體中之一主要開機映像記憶體位置,其中該選定開機映像之位址映射至該主要開機映像記憶體位置;其中該微處理器包括一預設啟動向量,其中該預設啟動向量係在該微處理器啟動或重設之後即藉由該中央處理單元存取,且其中該預設啟動向量指定該主要開機映像所映射之在該主要開機映像記憶體位置之記憶體中之位置;其中:未判定為該選定開機映像之該開機映像係一次要開機映像,該微處理器進一步包括:一次要啟動記憶體位置,其用於儲存被映射至一次要啟動記憶體位置的該次要開機映像,其中可在不影響自該主要啟動映像記憶體位置執行之裝置操作之情況下更新該次要啟動記憶體位置之內容;該微處理器經組態以處理引導自該選定開機映像至儲存在該次要啟動記憶體中之該開機映像之一調換之一命令;及該命令包括一專用指令,其後跟隨轉移指令。
- 如請求項10之多重開機微處理器,其中該第一啟動序號儲存在該第一開機映像中之一預定位置處,且該第二啟動序號儲存在該第二開機映像中之一預定位置處。
- 如請求項10之多重開機微處理器,其中在不重設該裝置之情況下該裝置之執行自該選定開機映像切換至儲存在該次要啟動記憶體中之開機映像。
- 如請求項12之多重開機微處理器,其進一步包括:用於一組態參數之記憶體位置,其中該組態參數指示該裝置自該主要啟動記憶體或該次要啟動記憶體執行。
- 如請求項10之多重開機微處理器,其中該裝置藉由判定該第一開機映像及該第二開機映像皆係有效開機映像而判定是否啟用多重啟動。
- 如請求項10之多重開機微處理器,其中該程式記憶體在該微處理器中。
- 如請求項10之多重開機微處理器,其中該程式記憶體部分地在該微處理器之內部及部分地在該微處理器之外部。
- 一種多重開機微處理器,其經組態以自複數個開機映像之一者啟動,該微處理器包括:一中央處理單元;程式記憶體,其儲存與一第一開機映像相關聯之一第一啟動序號及與一第二開機映像相關聯之第二啟動序號;一狀態機器,其可操作以藉由比較該第一啟動序號與該第二啟動序號而識別一選定開機映像,其中該比較判定該第一開機映像或該第二開機映像是否係該選定開機映像;在該程式記憶體中之一主要開機映像記憶體位置,其中該選定開機映像之位址映射至該主要開機映像記憶體位置;及用於在該程式記憶體中之一預設啟動向量之記憶體位置,其中該預設啟動向量係在該微處理器啟動或重設之後即藉由該微處理器存取,且其中該預設啟動向量指定該主要開機映像;其中未判定為該選定開機映像之該開機映像係一次要開機映像,該微處理器進一步包括:在該程式記憶體中之一次要啟動記憶體位置,其用於儲存該次要開機映像,其中可在不影響自該主要啟動映像記憶體位置執行之操作之情況下更新該次要啟動記憶體位置之內容;其中該微處理器經組態以處理引導自該選定開機映像至儲存在該次要啟動記憶體中之該開機映像之一調換之一命令;及其中該命令包括一專用指令,其後跟隨轉移指令。
- 如請求項17之多重開機微處理器,其中該第一啟動序號儲存在與該第一開機映像相關聯之一預定位置處,且該第二啟動序號儲存在與該第二開機映像相關聯之一預定位置處。
- 如請求項17之多重開機微處理器,其中在不重設該微處理器之情況下執行自該選定開機映像切換至儲存在該次要啟動記憶體中之開機映像。
- 如請求項19之多重開機微處理器,其進一步包括:用於一組態參數之記憶體位置,其中該組態參數指示自該主要啟動記憶體或該次要啟動記憶體執行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361784833P | 2013-03-14 | 2013-03-14 | |
US61/784,833 | 2013-03-14 | ||
US14/209,068 US9733950B2 (en) | 2013-03-14 | 2014-03-13 | Boot sequencing for multi boot devices |
US14/209,068 | 2014-03-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201447757A TW201447757A (zh) | 2014-12-16 |
TWI661357B true TWI661357B (zh) | 2019-06-01 |
Family
ID=50625128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103109765A TWI661357B (zh) | 2013-03-14 | 2014-03-14 | 用於啟動多重開機裝置及多重開機微處理器之方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9733950B2 (zh) |
EP (1) | EP2972809B1 (zh) |
KR (1) | KR20150129692A (zh) |
CN (1) | CN105027080B (zh) |
TW (1) | TWI661357B (zh) |
WO (1) | WO2014160375A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014160375A1 (en) * | 2013-03-14 | 2014-10-02 | Microchip Technology Incorporated | Boot sequencing for multi boot devices |
JP5875558B2 (ja) * | 2013-08-28 | 2016-03-02 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置 |
US9652252B1 (en) * | 2014-10-29 | 2017-05-16 | Xilinx, Inc. | System and method for power based selection of boot images |
WO2017007795A1 (en) * | 2015-07-07 | 2017-01-12 | Intuitive Surgical Operations, Inc. | Control of multiple devices |
US10191811B2 (en) * | 2015-08-13 | 2019-01-29 | Quanta Computer Inc. | Dual boot computer system |
US10545768B2 (en) * | 2016-10-27 | 2020-01-28 | Ricoh Company, Ltd. | Information processing apparatus, information processing method, and recording medium |
CN106648947B (zh) * | 2016-12-22 | 2019-09-13 | 北海市云盛科技有限公司 | 一种测试多控制器存储设备的方法和装置 |
KR102617354B1 (ko) | 2017-01-05 | 2023-12-26 | 삼성전자주식회사 | 보안 부트 시퀀서 및 보안 부트 장치 |
KR102445674B1 (ko) * | 2017-12-18 | 2022-09-22 | 삼성전자주식회사 | 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법 |
US10990372B2 (en) | 2018-09-20 | 2021-04-27 | Microsoft Technology Licensing, Llc | Updating an edge computing device |
US11456891B2 (en) | 2018-12-20 | 2022-09-27 | Rolls-Royce North American Technologies Inc. | Apparatus and methods for authenticating cyber secure control system configurations using distributed ledgers |
US11113074B2 (en) * | 2019-06-28 | 2021-09-07 | Qualcomm Incorporated | System and method for modem-directed application processor boot flow |
US11048521B2 (en) * | 2019-09-25 | 2021-06-29 | Adva Optical Networking Se | Resilient upgradable boot loader with power reset |
US11221858B1 (en) * | 2020-10-07 | 2022-01-11 | Dell Products L.P. | System control processor (SCP) boot system |
CN112764814B (zh) * | 2021-01-13 | 2023-11-10 | 西藏子墨网络科技有限公司 | 移动终端启动存储器设置方法、装置、终端及介质 |
US11507385B1 (en) | 2021-04-30 | 2022-11-22 | Cortina Access, Inc. | Embedded electronic device, boot method, and embedded electronic device readable recording medium with stored program |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822582A (en) * | 1996-07-19 | 1998-10-13 | Compaq Computer Corporation | Boot drive selection and hibernation file detection |
US20050273588A1 (en) * | 2004-06-08 | 2005-12-08 | Ong Soo K | Bootstrap method and apparatus with plural interchangeable boot code images |
US20080148038A1 (en) * | 2006-12-18 | 2008-06-19 | Atsushi Abe | System and Method for Implementing Boot/Recovery on a Data Processing Sysem |
US20090089570A1 (en) * | 2007-09-27 | 2009-04-02 | Texas Instruments Incorporated | Method, system and apparatus for providing a boot loader of an embedded system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6158002A (en) * | 1998-08-14 | 2000-12-05 | Adaptec, Inc. | Method and apparatus of boot device switching by a floppy disk |
US7761653B2 (en) * | 1999-08-04 | 2010-07-20 | Super Talent Electronics, Inc. | Flash micro-controller with shadow boot-loader SRAM for dual-device booting of micro-controller and host |
US6493822B1 (en) | 1999-09-16 | 2002-12-10 | International Business Machines Corporation | Foreign drive determination and drive letter conflict resolution |
US6754818B1 (en) * | 2000-08-31 | 2004-06-22 | Sun Microsystems, Inc. | Method and system for bootstrapping from a different boot image when computer system is turned on or reset |
US6986033B2 (en) | 2002-09-10 | 2006-01-10 | Veritas Operating Corporation | System for automated boot from disk image |
JP3906825B2 (ja) * | 2003-06-17 | 2007-04-18 | 日本電気株式会社 | 計算機システム、計算機システム起動方法およびプログラム |
US20060085629A1 (en) | 2003-12-24 | 2006-04-20 | Intel Corporation | Mapping a reset vector |
CN1658185A (zh) * | 2004-02-18 | 2005-08-24 | 国际商业机器公司 | 相互独立地共存多个操作***的计算机***与其切换方法 |
US8751783B2 (en) * | 2011-01-20 | 2014-06-10 | Hewlett-Packard Development Company, L.P. | Booting computing devices with EFI aware operating systems |
KR20120092222A (ko) * | 2011-02-11 | 2012-08-21 | 삼성전자주식회사 | 보안 부팅 방법 및 보안 부트 이미지 생성 방법 |
CN102830990A (zh) * | 2012-07-20 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种计算机***启动方法及计算机终端 |
US9558012B2 (en) * | 2013-02-21 | 2017-01-31 | Applied Micro Circuits Corporation | System boot with external media |
US9230112B1 (en) * | 2013-02-23 | 2016-01-05 | Xilinx, Inc. | Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis |
WO2014160375A1 (en) * | 2013-03-14 | 2014-10-02 | Microchip Technology Incorporated | Boot sequencing for multi boot devices |
-
2014
- 2014-03-13 WO PCT/US2014/026424 patent/WO2014160375A1/en active Application Filing
- 2014-03-13 KR KR1020157023560A patent/KR20150129692A/ko not_active Application Discontinuation
- 2014-03-13 EP EP14720356.6A patent/EP2972809B1/en active Active
- 2014-03-13 CN CN201480011451.3A patent/CN105027080B/zh active Active
- 2014-03-13 US US14/209,068 patent/US9733950B2/en active Active
- 2014-03-14 TW TW103109765A patent/TWI661357B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822582A (en) * | 1996-07-19 | 1998-10-13 | Compaq Computer Corporation | Boot drive selection and hibernation file detection |
US20050273588A1 (en) * | 2004-06-08 | 2005-12-08 | Ong Soo K | Bootstrap method and apparatus with plural interchangeable boot code images |
US20080148038A1 (en) * | 2006-12-18 | 2008-06-19 | Atsushi Abe | System and Method for Implementing Boot/Recovery on a Data Processing Sysem |
US20090089570A1 (en) * | 2007-09-27 | 2009-04-02 | Texas Instruments Incorporated | Method, system and apparatus for providing a boot loader of an embedded system |
Also Published As
Publication number | Publication date |
---|---|
CN105027080A (zh) | 2015-11-04 |
EP2972809B1 (en) | 2020-12-30 |
KR20150129692A (ko) | 2015-11-20 |
WO2014160375A1 (en) | 2014-10-02 |
CN105027080B (zh) | 2020-03-13 |
TW201447757A (zh) | 2014-12-16 |
EP2972809A1 (en) | 2016-01-20 |
US9733950B2 (en) | 2017-08-15 |
US20140281466A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI661357B (zh) | 用於啟動多重開機裝置及多重開機微處理器之方法 | |
US7925877B2 (en) | Method, system and apparatus for providing a boot loader of an embedded system | |
US8943302B2 (en) | Method of flashing bios using service processor and computer system using the same | |
JP5220747B2 (ja) | 不揮発性記憶装置および不揮発性記憶システム | |
US20090113196A1 (en) | Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems | |
US7039799B2 (en) | Methods and structure for BIOS reconfiguration | |
US20070101166A1 (en) | Method and apparatus for utilizing a microcontroller to provide an automatic order and timing power and reset sequencer | |
WO2012071852A1 (zh) | 引导程序的升级方法和装置 | |
US10037170B2 (en) | Motherboard and a method for boot-up | |
US10083084B2 (en) | Method of error detecting during a booting process, and a computer system for implementing the same | |
US20140289455A1 (en) | Memory Patching Circuit | |
US9858083B2 (en) | Dual boot panel SWAP mechanism | |
US8452949B1 (en) | Optical boot to eliminate changing BIOS to boot externally attached storage device | |
JP4522799B2 (ja) | 半導体回路装置及び暴走検出方法 | |
EP2846259B1 (en) | Method and apparatus for controlling memory startup | |
TW201335844A (zh) | 控制器、位址選擇器及替換錯誤指令的方法 | |
TWI556171B (zh) | 主機板及開機的方法 | |
TW201337762A (zh) | Bios啟動裝置及主機板 | |
JP6603100B2 (ja) | メモリ制御装置及びメモリ制御方法 | |
KR20150027391A (ko) | Fpga 데이터 구성 시스템 및 그 방법 | |
JP2015090512A (ja) | メモリダンプ機能を有する情報処理装置 | |
JP2020009498A (ja) | メモリ制御装置及びメモリ制御方法 | |
JP2004334593A (ja) | メモリブリッジ装置 | |
KR20090128672A (ko) | 다중 부팅 모드를 지원하는 장치 및 방법 | |
JP2002268891A (ja) | 装置コントローラ |