最小化在可熱插拔程序存儲器中的操作系統(tǒng)內核更新期間的切換時間的制作方法
【技術領域】
[0001]本發(fā)明涉及微控制器及微處理器且特定來說涉及熱可插拔程序代碼。
【背景技術】
[0002]在具有多重啟動存儲器架構的處理器(微處理器及微控制器)中,處理器具有程序存儲器的兩個或兩個以上區(qū)域。這些區(qū)域可表示存儲器的邏輯分割或可表示實際物理分區(qū)。一般來說,由以下事實定義此架構:程序存儲器的一個區(qū)域可在CPU于程序存儲器的另一區(qū)域之外繼續(xù)執(zhí)行時更新。
[0003]針對此的典型使用案例為在應用程序運行時執(zhí)行對單個組應用程序代碼的更新。此“熱”更新對“恒定運行”應用程序為重要的,其中處理器的任何顯著停機時間可能成問題。
[0004]—旦應用程序及/或處理器確定新版本的代碼可用于另一區(qū)域中,其即執(zhí)行“熱插拔”,其中從舊區(qū)域到新區(qū)域進行代碼執(zhí)行的傳送。此通常伴隨有處理器的復位。此復位需要特定時間量。
[0005]更特定來說,典型實施方案為在通過將完整新副本的程序圖像寫入到存儲器B中而更新程序代碼時從存儲器A執(zhí)行。一旦已寫入并驗證新程序圖像,MCU/MPU即切換到存儲器B中的程序執(zhí)行(經(jīng)更新程序代碼)。在不進行系統(tǒng)復位的情況下,此可由于如堆疊、堆、程序計數(shù)器、中斷向量表等資源的電位重新定位而為復雜操作。然而,在于切換之前進行系統(tǒng)復位的情況下,切換時間增加,此可不適合于例如SMPS (切換模式電力供應器)、電動機控制等的恒定運行應用程序。
[0006]總重新啟動時間由數(shù)個順序事件構成,包含啟動振蕩器/帶隙/調節(jié)器等、切換到正確時鐘源、設置堆疊、設置堆、初始化SRAM及初始化所有外圍裝置。
[0007]舉例來說,在圖1中展示圖解說明用于熱插拔所需要的時間的示意圖。展示時間線101。一旦已依第一指令102啟動新代碼,即必須設置堆疊104,必須設置堆106,必須初始化SRAM 108及必須初始化外圍裝置110。僅在那時代碼自身才可開始執(zhí)行112。如可了解,設置堆疊及堆以及初始化SRAM及外圍裝置可為相當耗費時間的。
[0008]因此,存在對熱可插拔存儲器系統(tǒng)中的存儲器分段之間的經(jīng)改進切換的需要。存在減少此類系統(tǒng)中的切換時間的又一需要。
【發(fā)明內容】
[0009]通過根據(jù)本發(fā)明的實施例的系統(tǒng)及方法在很大程度上克服現(xiàn)有技術中的這些及其它缺陷。實施例提供用于通過確定需要復位哪些外圍裝置且僅復位那些外圍裝置而最小化熱插拔中的切換時間的解決方案。一種根據(jù)實施例的用于熱插拔程序代碼的方法包含:定義從其執(zhí)行的新代碼的預定范圍;從所述新代碼識別需要重新初始化或復位的一或多個系統(tǒng)組件;重新初始化或復位所述一或多個系統(tǒng)組件;及執(zhí)行所述新代碼。在一些實施例中,所述識別包含:固件識別定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個配置位。在一些實施例中,通過從舊代碼到所述新代碼的切換來觸發(fā)所述識別。在一些實施例中,通過從所述新代碼的寄存器寫入來觸發(fā)所述識別。在一些實施例中,所述識別包含:所述新代碼中的預定代碼分段讀取定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個軟件配置寄存器。
[0010]一種根據(jù)實施例的處理器經(jīng)配置以通過以下操作實施熱插拔程序代碼:定義從其執(zhí)行的新代碼的預定范圍;從所述新代碼識別需要重新初始化或復位的一或多個系統(tǒng)組件;重新初始化或復位所述一或多個系統(tǒng)組件;及執(zhí)行所述新代碼。在一些實施例中,所述識別包含:固件識別定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個配置位。在一些實施例中,通過從舊代碼到所述新代碼的切換來觸發(fā)所述識別。在一些實施例中,通過從所述新代碼的寄存器寫入來觸發(fā)所述識別。在一些實施例中,所述識別包含:所述新代碼中的預定代碼分段讀取定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個軟件配置寄存器。
[0011]—種根據(jù)實施例的用于熱插拔程序代碼的計算機程序產(chǎn)品包含一或多個有形計算機可讀媒體,所述計算機程序產(chǎn)品經(jīng)配置用于:定義從其執(zhí)行的新代碼的預定范圍;從所述新代碼識別需要重新初始化或復位的一或多個系統(tǒng)組件;重新初始化或復位所述一或多個系統(tǒng)組件;及執(zhí)行所述新代碼。在一些實施例中,所述識別包含:固件識別定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個配置位。在一些實施例中,通過從舊代碼到所述新代碼的切換來觸發(fā)所述識別。在一些實施例中,通過從所述新代碼的寄存器寫入來觸發(fā)所述識別。在一些實施例中,所述識別包含:所述新代碼中的預定代碼分段讀取定義所述一或多個系統(tǒng)組件中哪一系統(tǒng)組件需要重新初始化或復位的一或多個軟件配置寄存器。
【附圖說明】
[0012]所屬領域的技術人員通過參考隨附圖式,可更好地理解本發(fā)明且易知本發(fā)明的眾多目標、特征及優(yōu)點。在不同圖式中,使用相同參考符號來指示相似或同樣的項目。
[0013]圖1是圖解說明示范性熱插拔時間的圖式。
[0014]圖2是示范性處理器的框圖;
[0015]圖3是圖解說明示范性熱插拔時間的圖式。
[0016]圖4A及圖4B示意性地圖解說明實施例的操作。
[0017]圖5是圖解說明實施例的操作的流程圖。
【具體實施方式】
[0018]參考在隨附圖式中圖解說明且在以下說明中詳述的示范性(且因此非限制性)實施例更全面地解釋本發(fā)明及其各種特征及有利細節(jié)??墒÷詫σ阎幊碳夹g、計算機軟件、硬件、操作平臺及協(xié)議的說明以便在細節(jié)上不必要地使本發(fā)明模糊不清。然而,應理解,雖然指示優(yōu)選實施例,但詳細說明及特定實例僅以圖解說明方式而非以限制方式給出。所屬領域的技術人員將從本發(fā)明明了在基礎發(fā)明性概念的精神及/或范圍內的各種替換、修改、添加及/或重新布置。
[0019]如本文中所使用,術語“包括(comprises) ”、“包括(comprising) ”、“包含(includes),,、“包含(including),,、“具有(has) ”、“具有(having) ”或其任何其它變化打算涵蓋非窮盡性包含。舉例來說,包括元件列表的過程、產(chǎn)品、物品或設備未必僅限于那些元件,而是可包含未明確列出或此過程、過程、物品或設備所固有的其它元件。此外,除非明確地陳述相反的情形,否則“或”是指“同或”且不指“異或”。舉例來說,以下各項中的任一者均滿足條件A或B:A為真(或存在)且B為假(或不存在)、A為假(或不存在)且B為真(或存在)以及A及B兩者皆為真(或存在)。
[0020]另外,本文中所給出的任何實例或圖解說明無論如何均不應視為對實例或圖解說明借以被利用的任一術語或任何術語的約束、限制或明確定義。相反,這些實例或圖解說明應被視為關于一個特定實施例進行描述且僅應視為說明性的。所屬領域的技術人員將了解,這些實例或圖解說明借以被利用的任一術語或任何術語囊括其它實施例以及可或不可隨其或在說明書中的其它地方給出的其實施方案及更改,且所有此類實施例打算被包含于所述術語或所述若干術語的范圍內。指定此類非限制性實例及圖解說明的語言包含但不限于:“舉例來說”、“比如”、“例如”、“在一個實施例中”及類似物。
[0021]現(xiàn)在轉向圖2,展示并通常由參考編號200識別可根據(jù)實施例實施多重啟動系統(tǒng)的示范性處理器的框圖。應注意,處理器或微控制器的其它配置為可能的。因此,所述圖僅為示范性的。
[0022]在所圖解說明的實例中,處理器200包含總線201及耦合到總線201的中央處理單元(CPU)核心202。CPU核心202可包含一或多個寄存器陣列250、252、算術邏輯單元254、指令解碼模塊256、程序計數(shù)器258、程序空間可見性(PSV)模塊260及硬件乘法/除法模塊262。
[0023]在所圖解說明的實施例中,數(shù)據(jù)EEPROM 206及數(shù)據(jù)存儲器208也耦合到總線201且與CPU核心202通信。額外裝置,例如一或多個中斷控制器210、一或多個外圍裝置214a、214b及時鐘模塊212。外圍裝置21