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

用于修補(bǔ)在存儲器上駐留的代碼和數(shù)據(jù)的方法和設(shè)備的制作方法

文檔序號:6376176閱讀:123來源:國知局
專利名稱:用于修補(bǔ)在存儲器上駐留的代碼和數(shù)據(jù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本公開涉及存儲器裝置,并且特別涉及管理在只讀存儲器(ROM)裝置上駐留的軟件。
背景技術(shù)
存儲器裝置通常用于計算機(jī)及其它電子設(shè)備,諸如電話、個人數(shù)據(jù)助理等,以便存儲包括數(shù)據(jù)和軟件程序的各種信息。一般地,常常把需要長時間存儲的數(shù)據(jù)和軟件存儲在諸如只讀存儲器(ROM)、可擦除可編程ROM(EPROM)等之類的非易失性存儲器裝置上。特別地是,很可能把由系統(tǒng)制造商設(shè)計的軟件程序存儲在這種非易失性存儲器上,所述軟件程序諸如計算機(jī)的操作系統(tǒng),無線裝置的操作碼等。以永久基礎(chǔ)來存儲在非易失性存儲器裝置中的任何信息,以致即使當(dāng)沒有激活所述裝置或者長時間沒有供電所述裝置時,仍然保存這種信息。另一方面,通??赡芤髮S迷O(shè)備來改變非易失性存儲器裝置的內(nèi)容。
通常,存儲在非易失性存儲器上的軟件程序或數(shù)據(jù)可能具有永久特性;而實際上,常常十分有必要改變這種軟件程序或數(shù)據(jù)。例如,可以在非易失性存儲器裝置上存儲的軟件程序中發(fā)現(xiàn)軟件錯誤或病毒。在這種情況下,這種非易失性裝置的用戶通常將必須在所述非易失性存儲器上重新寫入整個程序。當(dāng)已經(jīng)把這種裝置安裝在大量的用戶設(shè)備上時,對存儲在非易失性存儲器裝置上的信息進(jìn)行這種改變是尤為困難的。例如,如果已經(jīng)由許多用戶使用許多無線電話,其中在這種無線電話的ROM上具有操作碼,并且如果出現(xiàn)需要改變部分這種操作碼的情況時,那么對于這種無線電話的制造商來說將有必要收回所述電話并且改變它們的操作碼,或者它們將必須發(fā)行新的無線電話以便所有用戶都有正確的代碼。


在附圖中以舉例形式而不是限制形式舉例說明本專利,其中相同的參考標(biāo)記表明相似的元素,并且其中圖1是可以使用非易失性存儲器的示例性計算機(jī)的框圖;圖2是用于修補(bǔ)非易失性存儲器一部分的示例性設(shè)備的框圖;圖3是示例性的存儲器扇區(qū),其包含在用于修補(bǔ)非易失性存儲器的一部分的方法中使用的向量表;圖4是舉例說明用于修補(bǔ)非易失性存儲器的一部分的示例性方法的流程圖;圖5是舉例說明用于修補(bǔ)非易失性存儲器的一部分的有關(guān)操作碼修補(bǔ)方法的流程圖;和圖6是由有關(guān)操作碼修補(bǔ)方法使用的示例性向量表,所述修補(bǔ)方法用于修補(bǔ)非易失性存儲器的一部分。
具體實施例方式
盡管下文闡述了本專利的大量不同實施例的詳細(xì)說明,然而應(yīng)當(dāng)理解的是,由在本專利末尾所闡述的權(quán)利要求來定義本專利的法律范圍。只應(yīng)把詳細(xì)說明理解為示例性的,并且不描述本專利的每個可能的實施例,這是因為描述每個可能的實施例往往是不切實際的,甚至是不可能的??梢允褂矛F(xiàn)代技術(shù)或者在本專利的申請日之后開發(fā)出的技術(shù)來實施大量替代的實施例,但這仍屬于定義本專利的權(quán)利要求書的范圍。
還應(yīng)當(dāng)理解的是,在本專利中除非使用句子“如這里所用,據(jù)此定義術(shù)語‘__’來意指”或類似的句子來清楚地定義術(shù)語,否則除其簡單或普通的意思之外,并不意味著明顯地或隱含地限制該術(shù)語的意思,并且不應(yīng)該根據(jù)在本專利任何部分的任何聲明(除權(quán)利要求的語言之外)而把這種術(shù)語解釋為對范圍的限制。在這個意義上,在本專利所附權(quán)利要求中列舉的任何術(shù)語指的是在本專利中依照與單個意思一致的方式,其只是為了使其更清楚而不混亂閱讀,并且并不意在隱含地或以別的方式來把這種聲稱的術(shù)語限制為單個意思。最終,除非權(quán)利要求元素是通過描述措詞“裝置”以及功能而沒有描述任何結(jié)構(gòu)來定義的,否則并不是意圖基于35 U.S.C.§112,第六款的運(yùn)用來解釋任一權(quán)利要求元素的范圍。
使用非易失性存儲器來存儲代碼或數(shù)據(jù)的計算機(jī)或裝置有時可能需要改變這種代碼或數(shù)據(jù)。因為在不使用專用裝置的情況下很難改變在非易失性存儲器中的代碼,所以提供了修補(bǔ)裝置,其允許在實時操作期間非易失性存儲器的一部分由易失或非易失性存儲器的另一部分來替代。把在需要替代的易失性存儲器上的代碼或數(shù)據(jù)的地址存儲在修補(bǔ)裝置的寄存器上。由這里描述的例子舉例說明的修補(bǔ)裝置預(yù)先取出指令以便看看所述指令是否訪問在可能需要替代的易失性存儲器上的數(shù)據(jù)或代碼。如果所述修補(bǔ)裝置確定這種替代是必要的,那么它發(fā)布預(yù)先取出的異常中斷指令并且把用于訪問來自不同位置的數(shù)據(jù)或代碼的指令加載到數(shù)據(jù)總線。
圖1舉例說明了示例性計算機(jī)10的框圖。如這里所用,術(shù)語“計算機(jī)”指的是使用任何類型非易失性存儲器的任何裝置(例如便攜式計算機(jī)、膝上型計算機(jī)、個人數(shù)據(jù)助理(PDA)、臺式計算機(jī)、無線電話、服務(wù)器等)。本例子的計算機(jī)10包含通常用于計算機(jī)的許多常規(guī)的硬件組件。例如如圖1所示,計算機(jī)10包括中央處理器(CPU)12、采用只讀存儲器(ROM)14形式的非易失性存儲器、隨機(jī)存取存儲器(RAM)16、通信總線20、存儲裝置22、電源24和輸入/輸出(I/O)控制器26。盡管計算機(jī)10的本例子示出了這些組件在所述計算機(jī)內(nèi),但是本領(lǐng)域內(nèi)普通技術(shù)人員將理解這些組件的一部分可以在計算機(jī)10外,或者這些組件的一部分可以根本不由計算機(jī)使用。例如,在無線電話裝置上使用的計算機(jī)10的可替換例子可以不包含任何存儲裝置22。
示例性計算機(jī)10的非易失性存儲器14可以具有任何替換形式,諸如閃速存儲器、EPROM存儲器等。如圖1所示,ROM 14可以包含部分或所有代碼28,諸如用于計算機(jī)10的操作系統(tǒng)代碼等。作為選擇,所述非易失性存儲器14還可以包含由計算機(jī)10使用的數(shù)據(jù)30。可以由計算機(jī)10的制造商在計算機(jī)10上提供代碼28,或者也可以由不同于所述計算機(jī)10制造商的出售商來提供該代碼。一般地,代碼28其中不包含任何軟件錯誤或病毒,然而,在計算機(jī)10的特定實施方式中,所述代碼28可能包含需要修改的一個或多個軟件錯誤或病毒。作為選擇,還可能因為許多原因而需要更新包含在非易失性存儲器上的數(shù)據(jù)30,所述原因包括為了有效利用所述計算機(jī)10。
圖2是用于修補(bǔ)包含在非易失性存儲器14上代碼28的一部分、或修補(bǔ)包含在非易失性存儲器14上的數(shù)據(jù)30的一部分的示例性修補(bǔ)裝置40的框圖??梢园惭b所述修補(bǔ)裝置40以致其在計算機(jī)10內(nèi)或在計算機(jī)10外。修補(bǔ)裝置40還可以利用計算機(jī)10的一個或多個組件,諸如RAM 16、通信總線20等。
使用示例性的修補(bǔ)裝置40,用在修補(bǔ)存儲器50中第二地址48處包含的第二代碼46來修補(bǔ)在ROM 14中第一地址44處包含的第一代碼42。修補(bǔ)存儲器50可以位于修補(bǔ)裝置40,或者作為選擇,所述修補(bǔ)存儲器50可以包含在計算機(jī)10的RAM 16中。示例性的修補(bǔ)裝置40包括處理器60、第一寄存器62、第二寄存器64、第三寄存器66和比較器68。所述處理器60包括第一邏輯電路70、第二邏輯電路72和程序計數(shù)器74。所述修補(bǔ)裝置40還包括第三邏輯電路76和第四邏輯電路78。
圖3舉例說明了包含向量表82的存儲器扇區(qū)80,其中使用所述向量表82來包含包括第一向量84的多個向量。第一向量84包含駐留在修補(bǔ)存儲器46上的第二代碼的第二地址48。向量表82可以位于ROM 14、RAM 16或在計算機(jī)10上使用的任何其它存儲器裝置上。使用向量表偏移量86和向量索引90來定義第一向量84的地址,所述向量表偏移量86表明向量表82到存儲器扇區(qū)80基礎(chǔ)88的偏移量,所述向量索引90指定所述第一向量84在向量表82內(nèi)的偏移量。
返回參照圖2,用于修補(bǔ)裝置40的處理器60可以是任何普及的處理器,包括復(fù)雜指令集代碼(CISC)類型處理器,精簡指令集代碼(RISC)類型處理器等。所舉例說明的修補(bǔ)裝置40使用ARM7TDMI-S處理器,其是低功率32位RISC處理器,如處理器60。ARM7TDMI-S處理器是改進(jìn)RISC機(jī)器(ARM)類型處理器,其一般用于傳呼機(jī)、無線手機(jī)、個人數(shù)據(jù)助理(PDA)、數(shù)字照相機(jī)等。ARM7TDMI-S處理器包括具有用于處理RISC指令的三級流水線的整數(shù)核心。ARM7TDMI-S處理器還允許使用ARM指令集以及拇指(thumb)指令集,以及ARM指令集和拇指指令集的組合。在下面的圖5中還描述了在修補(bǔ)裝置40中使用的ARM7TDMI-S處理器的操作的例子。
使用第一寄存器62來存儲第一代碼42的第一地址44。作為選擇,如果使用修補(bǔ)裝置40來修補(bǔ)數(shù)據(jù)30的一部分,那么可以使用第一寄存器62來存儲所述數(shù)據(jù)30的一部分的第一地址。例如,當(dāng)用戶確定駐留在ROM 14上的第一代碼42包含軟件錯誤或病毒并且需要由第二代碼46來代替時,或者由于任何其它原因需要由第二代碼46來代替所述第一代碼42,所述用戶把所述第一地址44的位置存儲在第一寄存器62中??梢允褂萌魏螛?biāo)準(zhǔn)的寄存器設(shè)計技術(shù)來設(shè)計所述第一寄存器62,其為本領(lǐng)域內(nèi)普通技術(shù)人員所公知。依據(jù)在修補(bǔ)裝置40中使用的處理器60的類型,第一寄存器62可以存儲32位地址、64位地址等。在所舉例說明的修補(bǔ)裝置40中,因為把32位ARM7TDMI-S處理器用作為處理器60,所以第一寄存器62能夠保存32位地址。
使用第二寄存器64來存儲向量表偏移量86,并且使用第三寄存器66來存儲向量索引90。使用比較器68來把由CPU 12執(zhí)行的代碼的地址與第一寄存器62的內(nèi)容相比較,所述代碼諸如第一代碼42。下面在圖4中進(jìn)一步描述了比較器68的操作。
使用第一邏輯電路72來把第一向量84加載到程序計數(shù)器中。第二邏輯電路72讀取第二代碼46的第二地址48,其存儲在第一向量84中。如下面圖4中所描述,第三邏輯電路76使用向量表偏移量86、基礎(chǔ)88和向量索引90的值來計算所述第一向量84。當(dāng)比較器68確定從數(shù)據(jù)總線20取出的指令的地址與第一地址44匹配時,第四邏輯78用把第一向量84的值加載到程序計數(shù)器74的命令來重寫數(shù)據(jù)總線20。在下面的圖4中進(jìn)一步描述了在所述修補(bǔ)裝置40內(nèi)各種邏輯電路的操作。
圖4是舉例說明用于修補(bǔ)諸如ROM 14之類的非易失性存儲器一部分的示例性修補(bǔ)方法100的流程圖。所述修補(bǔ)方法100允許用戶使用修補(bǔ)裝置來修補(bǔ)非易失性存儲器的一部分,所述修補(bǔ)裝置使用預(yù)先取出周期來從連接到計算機(jī)CPU的數(shù)據(jù)總線上獲取操作碼或數(shù)據(jù)。使用預(yù)先取出周期使所述修補(bǔ)方法100能在幾個周期之前認(rèn)出將要由CPU執(zhí)行的操作碼的地址,并且如果所述操作碼的地址指向壞的代碼的地址或者壞的數(shù)據(jù)的地址,那么把預(yù)先取出的異常中止指令插入到數(shù)據(jù)總線上。
在塊102,修補(bǔ)裝置40的用戶把壞的代碼的地址存儲到第一寄存器62上,所述壞的代碼需要被另一代碼替換。例如,可以把第一代碼42的第一地址44存儲在第一寄存器62中。在此修補(bǔ)裝置連續(xù)地監(jiān)視數(shù)據(jù)總線20。
所述數(shù)據(jù)總線20攜帶來自在計算機(jī)10內(nèi)各個組件的以及來自附于計算機(jī)10的外圍設(shè)備的指令和數(shù)據(jù)。例如,來自I/O控制器26的指令可被發(fā)送到請求數(shù)據(jù)的CPU 12。類似地,數(shù)據(jù)總線20還攜帶從CPU 12到其它組件的指令。這種指令的例子可以是用于從ROM 14在這種指令識別的給定地址上取出確定內(nèi)容的請求。
往返于CPU 12的指令可以采用通常由計算機(jī)使用的各種格式。例如,從CPU 12到ROM 14的指令可以包含操作碼和操作數(shù),其中操作碼表示實際指令,而操作數(shù)包含任何相關(guān)聯(lián)的數(shù)據(jù),諸如參考指針或離散值。例如,來自CPU 12用于從ROM 14讀取內(nèi)容的指令中,這種指令的操作碼可以包含用于讀取ROM 14內(nèi)容的實際指令,而操作數(shù)可以是在ROM 14中位置的地址。
計算機(jī)還可以使用預(yù)先取出隊列來管理指令。例如,所述CPU 12可以在執(zhí)行許多指令之前讀取該指令。計算機(jī)可以使用這種預(yù)先取出算法來通過使一系列下一指令內(nèi)部可用來改進(jìn)性能。
在預(yù)先取出算法的一個特定變化中,CPU可以只預(yù)先取出計算指令的操作碼部分,而不取出操作數(shù)部分。修補(bǔ)裝置40的示例性實施方式使用類似的預(yù)先取出算法來監(jiān)視數(shù)據(jù)總線20。
參照圖4,在塊104,修補(bǔ)裝置40預(yù)先取出指令的操作碼來確定這種指令是否意在從ROM 14中讀取數(shù)據(jù)。如果發(fā)現(xiàn)所述指令用于從ROM 14讀取內(nèi)容,那么在塊106,修補(bǔ)裝置40使用比較器68來把包含在這種指令中的地址與第一寄存器62的內(nèi)容相比較。
如果比較器68發(fā)現(xiàn)從數(shù)據(jù)總線20取出的指令的地址等于第一寄存器62的內(nèi)容,那么在塊108修補(bǔ)裝置40把預(yù)先取出的異常中止指令插入到數(shù)據(jù)總線20上。因為修補(bǔ)裝置40使用預(yù)先取出來讀取指令,所以其識別在從ROM 14讀取數(shù)據(jù)的實際操作之前幾個周期,將執(zhí)行這種操作。由修補(bǔ)裝置40所發(fā)布的預(yù)先取出異常中止指令防止由CPU12讀取ROM 14的內(nèi)容。從而例如,如果把第一地址44存儲在第一寄存器62中,那么每當(dāng)修補(bǔ)裝置發(fā)現(xiàn)用于讀取第一地址44的內(nèi)容的指令時,其將發(fā)布預(yù)先取出異常中止以便防止這樣讀取第一地址44的內(nèi)容。
預(yù)先取出異常中止指令使修補(bǔ)裝置40的處理器60產(chǎn)生異常。依據(jù)預(yù)先取出異常中止指令的類型,在塊110,所述修補(bǔ)裝置40確定什么指令寫入數(shù)據(jù)總線20。例如,在特定的實施方式中,在塊112,修補(bǔ)裝置可以把用于從在ROM 14或RAM 16內(nèi)修改位置讀取數(shù)據(jù)的指令來加載到數(shù)據(jù)總線20。該修補(bǔ)方法被稱為硬件加速修補(bǔ)。
在可替換實施方式中,在塊114,所述修補(bǔ)裝置40可以用第二指令加載數(shù)據(jù)總線20,所述第二指令20用于使用有關(guān)操作碼修補(bǔ)方法來從第二地址48取出數(shù)據(jù)。在圖5中進(jìn)一步描述了有關(guān)操作碼修補(bǔ)方法114的運(yùn)行。在塊116,終止預(yù)先取出異常中止并且數(shù)據(jù)總線從由硬件加速修補(bǔ)或由有關(guān)操作碼修補(bǔ)方法指定的地址取出所述內(nèi)容。
無論修補(bǔ)裝置40使用有關(guān)操作碼修補(bǔ)方法還是硬件加速修補(bǔ),都有必要使由好的代碼執(zhí)行的第一指令應(yīng)該使得當(dāng)完成執(zhí)行代碼時,從緊接著第一代碼44的位置取出下一指令。例如,如果使用有關(guān)操作碼修補(bǔ)方法以便加載數(shù)據(jù)總線20來從第二地址48取出內(nèi)容,那么存儲在第二地址48的代碼應(yīng)該是這樣以致當(dāng)完成執(zhí)行第二代碼46時,取出在緊接著第一代碼42位置存儲的指令。
因此,在塊118,修補(bǔ)裝置40在由修補(bǔ)裝置40提供的RAM 16或許多臨時寄存器中的位置上保存由CPU 12使用的各個狀態(tài)寄存器的內(nèi)容。在執(zhí)行第二代碼46之前的情況下,使用各個狀態(tài)寄存器的內(nèi)容來重建CPU 12。
在此,CPU 12將執(zhí)行第二代碼46,如塊120所示。在完成執(zhí)行第二代碼46時,所述第二代碼46必須確保能夠還原CPU 12的所有狀態(tài)寄存器,以致不影響在第一代碼42的末尾正常執(zhí)行代碼。在塊122,把CPU 12的這種狀態(tài)寄存器還原到其原始情況。在此,CPU 12繼續(xù)正常執(zhí)行來自ROM 14的代碼。從而,在塊124,CPU執(zhí)行來自ROM 14的、在第一代碼42之后的代碼。
圖5舉例說明了示例性的流程圖130,用于實現(xiàn)可以在圖4的塊114使用的有關(guān)操作碼修補(bǔ)方法。有關(guān)操作碼修補(bǔ)方法允許修補(bǔ)裝置40用位于RAM 16中不同位置的代碼或數(shù)據(jù)來代替ROM 14的代碼或存儲器修補(bǔ)程序。有關(guān)操作碼修補(bǔ)方法使用來自向量表82的各個向量來獲得好的代碼的地址,所述好的代碼將代替在所述存儲器中壞的代碼。作為選擇,所述向量表82還可以用于有關(guān)操作碼修補(bǔ)方法以便獲得將代替壞的數(shù)據(jù)的好的數(shù)據(jù)。
現(xiàn)在參照圖5,在塊132,所述修補(bǔ)裝置40從第二寄存器64讀取向量表偏移量86。如上所述,向量表偏移量86表明向量表82到存儲器扇區(qū)80基礎(chǔ)88的偏移量。接下來在塊134,所述修補(bǔ)裝置40從第三寄存器66讀取向量索引90。如上所述,所述向量索引90指定在向量表82內(nèi)第一向量84的偏移量。使用向量表偏移量86和向量索引90的值,在塊136,所述修補(bǔ)裝置40確定第一向量84的值。
可見看出使用這種有關(guān)操作碼修補(bǔ)允許把許多不同的值分配給所述第一向量84。隨后,分配給第一向量84的各個值中的每一個對應(yīng)于不同的位置,在所述位置好的代碼可以位于所述存儲器上。因此位于許多位置的好的代碼可用于代替在ROM 14中壞的代碼。例如,可以把六十四個不同的值分配給第一向量84,然后六十四個唯一的好的代碼可用于代替所述第一代碼42。
在圖6中舉例說明了許多好的代碼160的這種使用。圖6還舉例說明了向量表82的特定例子,所述向量表82可以位于在存儲器扇區(qū)80中的任何位置,其中可以通過其向量表偏移量86來識別所述向量表82。在圖6中舉例說明的向量表82包含許多向量,諸如向量151、向量152、向量153,這些向量中的每個通過它們唯一的向量索引90來識別。如圖6所示,向量151指向第一好的代碼161,向量152指向第二好的代碼162等。從而,使用向量表偏移量86和向量索引90的組合,在ROM 14中壞的代碼可以由來自許多好的代碼160中的任何好的代碼161、162等來代替。
現(xiàn)在返回參照圖5,在塊138,所述修補(bǔ)裝置40用命令來重寫數(shù)據(jù)總線20,所述命令把如在塊136計算的第一向量84值加載程序計數(shù)器74。這種命令的例子可以是“LDR PC,[PC,#-(276-4*(向量索引90)+4*(向量表偏移量86))]”。如果基礎(chǔ)88的值是0x0000_000C,那么這種命令將使程序計數(shù)器74用位于0xFFFF_FF00+4*(向量索引90)的向量來加載。隨后在塊140,存儲在這種向量中好的代碼的地址位于0xFFFF_FF00+4*(向量索引90)。
在此,修補(bǔ)裝置40開始準(zhǔn)備執(zhí)行好的代碼,起始于圖4的塊118。如從上面說明可以看出,修補(bǔ)裝置40可用于用在RAM或其它存儲設(shè)備內(nèi)好的代碼來代替在ROM或其它非易失性存儲器內(nèi)壞的代碼。盡管在上述例子中,代替駐留在非易失性存儲器上的代碼或數(shù)據(jù),在實踐中甚至可以通過使用上述修補(bǔ)裝置或修補(bǔ)方法來代替駐留在易失性存儲器上的代碼或數(shù)據(jù)。
在上述說明中,參考具體實施例已經(jīng)描述了本專利。然而,一個本領(lǐng)域內(nèi)普通技術(shù)人員將理解在不脫離如下面權(quán)利要求所闡明的本專利范圍的情況下,可以對這些實施例進(jìn)行各種修改和改變。據(jù)此,應(yīng)當(dāng)認(rèn)為說明書和附圖是說明性的而并非是限制性的,并且所有這種修改意在包括在本專利的范圍內(nèi)。
權(quán)利要求
1.一種把修補(bǔ)程序應(yīng)用于駐留在只讀存儲器(ROM)上的代碼的方法,用于用執(zhí)行駐留在存儲器映象內(nèi)第二地址處的第二代碼來替代執(zhí)行駐留在ROM中第一地址處的第一代碼,所述方法包括在第一寄存器中存儲所述第一代碼的第一地址;預(yù)先取出第一指令;把所述第一指令的地址與所述第一代碼的第一地址相比較;如果所述第一指令的地址與所述第一代碼的地址相匹配,那么發(fā)布預(yù)先取出異常中止指令;并且取出所述第二代碼的第二地址。
2.如權(quán)利要求1所述的方法,其中取出所述第二代碼的第二地址包括用第一向量來加載程序計數(shù)器,所述第一向量包含所述第二代碼的第二地址;并且從由所述第一向量指向的位置讀取所述第二代碼的第二地址。
3.如權(quán)利要求2所述的方法,其中用所述第一向量來加載所述程序計數(shù)器包括從第二寄存器讀取向量表偏移量,其中所述向量表偏移量指定包括許多向量的向量表的偏移量;從第三寄存器讀取向量索引,其中所述向量索引指定在所述向量表內(nèi)第一向量的偏移量;使用所述向量表偏移量和向量索引來確定所述第一向量的值;并且用命令來重寫數(shù)據(jù)總線,所述命令用于用第一向量加載所述程序計數(shù)器。
4.如權(quán)利要求3所述的方法,還包括把當(dāng)前狀態(tài)寄存器的第一數(shù)目的內(nèi)容保存到保存的狀態(tài)寄存器的第一數(shù)目;并且執(zhí)行所述第二代碼。
5.如權(quán)利要求4所述的方法,還包括在完成執(zhí)行第二代碼時,把保存的狀態(tài)寄存器中的第一數(shù)目的內(nèi)容還原為對應(yīng)的當(dāng)前狀態(tài)寄存器的第一數(shù)目;并且按照第一代碼來執(zhí)行在ROM中的程序。
6.如權(quán)利要求5所述的方法,使用32位改進(jìn)的精簡指令集代碼(RISC)機(jī)器(ARM)處理器來實現(xiàn)。
7.如權(quán)利要求1所述的方法,其中取出所述第二代碼的位置包括把所述第二代碼的位置存儲在第二寄存器中;并且運(yùn)行處理程序以便從所述第二寄存器讀取所述第二代碼的位置。
8.一種把修補(bǔ)程序應(yīng)用于只讀存儲器(ROM)的方法,用于用駐留在存儲器映象內(nèi)第二地址的第二數(shù)據(jù)集來替代駐留在ROM中第一地址的第一數(shù)據(jù)集,所述方法包括把第一地址存儲在第一寄存器中,而把第二地址存儲在第二寄存器中;預(yù)先取出第一指令;訪問駐留在第三地址的、來自ROM的第一數(shù)據(jù);把第三地址與第一地址相比較;并且如果所述第三地址與所述第一地址匹配那么用第二地址重寫數(shù)據(jù)總線。
9.如權(quán)利要求8所述的方法,其中所述第一數(shù)據(jù)集駐留在非易失性存儲器上。
10.如權(quán)利要求9所述的方法,其中所述非易失性存儲器是只讀存儲器(ROM)。
11.一種把修補(bǔ)程序應(yīng)用于駐留在只讀存儲器(ROM)上代碼的系統(tǒng),用于用執(zhí)行駐留在修補(bǔ)程序存儲器內(nèi)第二地址的第二代碼來替代執(zhí)行駐留在ROM中第一地址的第一代碼,所述系統(tǒng)包括第一寄存器,用于存儲所述第一代碼的第一地址;比較器,用于把所述第一代碼的第一地址與在ROM中第一指令的地址相比較;和處理器,用于預(yù)先取出所述第一指令,把所述第一指令的地址輸入到比較器中,如果所述第一指令的地址與所述第一代碼的地址相匹配那么產(chǎn)生預(yù)先取出放棄,并且取出所述第二代碼的第二地址。
12.如權(quán)利要求11所述的系統(tǒng),其中所述處理器包括程序計數(shù)器,用于存儲包含第二代碼的第二地址的第一向量,第一邏輯電路,用于把第一向量加載到所述程序計數(shù)器中;和第二邏輯電路,用于從由第一向量指向的位置讀取所述第二代碼的第二地址。
13.如權(quán)利要求12所述的系統(tǒng),還包括第二寄存器,用于存儲向量表偏移量,所述向量表偏移量指定包括許多向量的向量表的偏移量;第三寄存器,用于存儲向量索引,所述向量索引指定在所述向量表內(nèi)第一向量的偏移量;第三邏輯電路,用于使用所述向量表偏移量和向量索引來確定第一向量的值;和第四邏輯電路,用于用命令重寫數(shù)據(jù)總線,所述命令用于用第一向量加載所述程序計數(shù)器。
14.如權(quán)利要求13所述的系統(tǒng),其中所述處理器還用于把當(dāng)前狀態(tài)寄存器的第一數(shù)目的內(nèi)容保存到保存的狀態(tài)寄存器的第一數(shù)目,并且用于執(zhí)行所述第二代碼。
15.如權(quán)利要求14所述的系統(tǒng),其中在完成執(zhí)行第二代碼時,所述處理器還用于把保存的狀態(tài)寄存器的第一數(shù)目的內(nèi)容還原為對應(yīng)的當(dāng)前狀態(tài)寄存器的第一數(shù)目,并且按照第一代碼執(zhí)行在ROM修補(bǔ)程序中的程序。
16.如權(quán)利要求15所述的系統(tǒng),其中所述處理器是32位改進(jìn)精簡指令集(RISC)機(jī)器(ARM)處理器。
17.如權(quán)利要求15所述的系統(tǒng),其中所述向量表位于隨機(jī)存取存儲器(RAM)。
18.如權(quán)利要求15所述的系統(tǒng),其中所述處理器用于在其執(zhí)行第二代碼至少兩個周期之前預(yù)先取出第一指令。
19.一種把修補(bǔ)程序應(yīng)用于只讀存儲器(ROM)的系統(tǒng),用于用駐留在修補(bǔ)程序存儲器內(nèi)第二地址的第二數(shù)據(jù)集來替代駐留在ROM中第一地址的第一數(shù)據(jù)集,所述系統(tǒng)包括第一寄存器,用于存儲所述第一數(shù)據(jù)集的第一地址;比較器,用于把所述第一數(shù)據(jù)集的地址與來自ROM的第一數(shù)據(jù)的第一地址相比較;和處理器,用于從所述ROM中預(yù)先取出所述第一數(shù)據(jù),把所述第一數(shù)據(jù)的地址輸入到比較器中,如果所述第一數(shù)據(jù)的地址與所述第一數(shù)據(jù)集的地址相匹配那么產(chǎn)生預(yù)先取出放棄,并且取出所述第二數(shù)據(jù)集的第二地址。
20.如權(quán)利要求19所述的系統(tǒng),其中所述處理器包括程序計數(shù)器,用于存儲包含第二數(shù)據(jù)集的第二地址的第一向量,第二邏輯電路,用于把第二向量加載到所述程序計數(shù)器中;和第二邏輯電路,用于從由第一向量指向的位置讀取所述第二代碼的第二地址。
全文摘要
舉例說明了一種用于把修補(bǔ)程序應(yīng)用于駐留在非易失存儲器裝置上代碼或數(shù)據(jù)的方法和設(shè)備。可以由駐留在存儲器映象中第二位置的代碼來代替駐留在非易失性存儲器中第一位置的代碼。修補(bǔ)裝置把第一代碼的第一地址與由預(yù)先取出指令識別的地址相比較。如果所述第一地址與由預(yù)先取出指令識別的地址相匹配,那么發(fā)布預(yù)先取出的異常中止以便使由好的代碼來代替駐留在第一地址的壞的代碼便于進(jìn)行??梢杂上蛄勘碇械南蛄縼碇赶蛩龊玫拇a,其中把所述向量的地址動態(tài)地載入程序計數(shù)器。
文檔編號G06F15/00GK1732443SQ200380108019
公開日2006年2月8日 申請日期2003年12月9日 優(yōu)先權(quán)日2002年12月31日
發(fā)明者約翰·奧克利, 凱文·特雷勒, 格倫·策納 申請人:摩托羅拉公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
德保县| 留坝县| 阿尔山市| 松桃| 海城市| 三门县| 连城县| 金山区| 府谷县| 伊金霍洛旗| 嘉义市| 扬州市| 雅安市| 河北区| 缙云县| 秀山| 甘肃省| 太白县| 祥云县| 全州县| 嘉鱼县| 贺州市| 广西| 平邑县| 潼关县| 综艺| 麻栗坡县| 东辽县| 南充市| 西藏| 通海县| 伽师县| 同仁县| 鲁甸县| 丁青县| 阳春市| 南京市| 泗阳县| 闵行区| 石渠县| 天祝|