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