專利名稱:軟件糾錯的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種處理器控制系統(tǒng),特別是涉及一種用于對處理器提供控制指令的系統(tǒng),允許在需要時糾錯這些指令。
背景技術(shù):
許多電子設(shè)備包括嵌入在其中的處理器,它們根據(jù)提供給處理器的程序數(shù)據(jù)來工作。因此這些設(shè)備包括用于存儲該程序數(shù)據(jù)的裝置。通常,用于存儲程序數(shù)據(jù)的裝置是只讀存儲器(ROM),因為通常這是一種可用的最有效的存儲方式。
但是將程序數(shù)據(jù)全部存到ROM上具有系統(tǒng)不靈活的缺點,因為它不可能更新或糾錯已存儲的程序數(shù)據(jù)。
US-5,592,613公開了一種具有程序存儲器和程序糾錯電路的微處理器。該程序糾錯電路包括電可編程的非易失性存儲器,用于存儲地址數(shù)據(jù)和糾錯程序數(shù)據(jù)。已存儲的地址數(shù)據(jù)表示程序存儲器中已存儲的程序數(shù)據(jù)被糾錯程序數(shù)據(jù)替換的地址。
但是,它具有這樣的缺點,即提供給系統(tǒng)的每個地址都必須與存儲在非易失性存儲器中的地址數(shù)據(jù)比較,這會犧牲處理器的速率。
US-4,751,703公開了一種利用ROM,以及讀/寫存儲器(以隨機存儲器的形式)存儲用于處理器的控制代碼的方法,該讀/寫存儲器包括代碼區(qū)和修補區(qū)。因此,控制代碼被虛擬地劃分成多個塊,每個塊的第一個指令存儲在RAM的代碼區(qū),每個塊隨后的指令存儲在ROM中。當確定一塊代碼有錯時,存儲在RAM中的這塊代碼的第一指令可以用一個分支指令來替換,該分支指令會使隨后的指令從RAM的修補區(qū)讀取。然后該修補可以存儲在RAM中,該修補的最后一個指令回到對以前控制代碼的控制。
但是,此系統(tǒng)的缺點在于RAM在每塊代碼中都要被編址一次,當不要進行糾錯時效率相對較低。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種處理器控制系統(tǒng),其中通過利用相對較小的附加硬件來提高系統(tǒng)的效率。
特別是,原始代碼可以全部存在第一存儲器,例如ROM中,而糾錯指令存在第二存儲器,例如RAM中,只有當糾錯指令存在時才訪問第二存儲器。收到的存儲器地址被分成第一多個最重要的比特和第二多個最不重要的比特。只有當?shù)诙鄠€最不重要的比特都等于零,而且糾錯指令存儲在地址等于最重要的比特的RAM中時,糾錯指令被讀取并提供給處理器。
這樣的優(yōu)點在于當沒有存儲校正指令時附加功耗很低。
進一步的優(yōu)點在于該系統(tǒng)不需要任何任意的地址比較,來確定糾錯指令存在的位置,因此沒有犧牲處理器的速率。
圖1是根據(jù)本發(fā)明的系統(tǒng)的示意方框圖。
圖2是圖1系統(tǒng)的一部分的示意方框圖。
圖3是根據(jù)本發(fā)明的備選系統(tǒng)的示意方框圖。
具體實施例方式
圖1是表示根據(jù)本發(fā)明一個方面的系統(tǒng)的示意方框圖。該系統(tǒng)接收輸入線路10的輸入,并向輸出線路12的處理器(未示出)輸出指令。輸入采取N比特地址A(N-10)的形式,符號A(N-10)表示第N-1個比特是地址中最重要的比特,第0個比特是地址中最不重要的比特。
處理器的程序代碼存儲在ROM 14中,它具有2N個位置,相應(yīng)于2N個可能的N比特地址。當在輸入線路10收到地址A(N-10)時,讀出存儲在相應(yīng)存儲器位置的指令,并提供給復(fù)用器16,復(fù)用器16通常將信號從ROM 14傳遞到處理器。
因此,當不糾錯原始程序代碼時,程序代碼可以從ROM 14中連續(xù)讀出。但是,該系統(tǒng)還包括用于存儲和讀取糾錯指令的裝置。具體來說,該系統(tǒng)還包括RAM 18和標記設(shè)置和解碼電路20。RAM 18有2N-M個位置,由在輸入線路10接收的地址的(N-M)個最重要的比特尋址。
標記設(shè)置和解碼電路20還接收在輸入線路10收到的N個比特地址。正如將要參照圖2所更詳細描述的,無論何時存儲糾錯指令都設(shè)置一個標記。標記設(shè)置和解碼電路20測試輸入地址的M個最不重要比特是零,還測試是否已經(jīng)為該地址的(N-M)個最重要的比特設(shè)置了標記。如果是,則激活RAM 18,讀出存儲在RAM 18中的指令,并控制復(fù)用器16將信號從RAM 18傳送到輸出線路12。
圖2更詳細地表示標記設(shè)置和解碼電路20的形式。收到的地址A(N-10)被分成M個最不重要的比特A(M-10)和N-M個最重要的比特A(N-1M)。最不重要的比特提供給方框22,在這里確定是否所有的比特都等于零。如果是,二進制1被傳送到AND門24。否則,二進制0被傳送到AND門24。最重要比特傳送到解碼方框26,它將N-M比特的輸入分解成2N-M個輸出。當糾錯指令存儲在特定N-M比特地址的RAM 18時,在相應(yīng)的鎖存器28設(shè)置一個標記。任何標記都提供給相應(yīng)的與門30,與門30還接收解碼方框26的輸入。
因此,當解碼方框26確定通過N-M比特地址選擇了具體一個與門30時,而且在相應(yīng)的鎖存器28已經(jīng)設(shè)置了標記時,相應(yīng)的與門向方框32提供輸出。方框32在從其中一個與門30接收到信號時提供輸出信號,而且方框32的輸出信號提供給與門24的第二輸入。
因此,如果已經(jīng)設(shè)置了標記,則在地址A(M-10)的M個最不重要的比特都等于零而且地址A(N-1M)的N-M個最重要比特相應(yīng)于已經(jīng)設(shè)置了標記的鎖存器28時,與門24提供輸出信號。
在這種情況下,與門24的輸出信號提供給RAM 18以激活它,還提供給復(fù)用器16,因此從RAM 18讀出的指令提供給處理器。
應(yīng)當注意復(fù)用器16可以從系統(tǒng)中省略,如果RAM和ROM在沒被激活時都有高輸出阻抗的話。RAM 18的激活信號相應(yīng)于ROM 14的非激活信號,結(jié)果ROM 14的高輸出阻抗會確保它就是RAM 18提供給處理器的輸出。相反,當ROM 14被激活時,RAM 18的高輸出阻抗確保ROM 14的輸出提供給處理器。
如上所述,當糾錯指令存入RAM 18時設(shè)置標記。例如,解碼電路26也可用于設(shè)置任何標記。
如上所述,解碼電路26一直工作,但顯然與門24所提供的輸出只占一小部分的時間。因此,為了省電,解碼電路26可以只在比較電路22生成一個表示地址的M個最不重要的比特都等于零的輸出時才被激活。這確保了解碼電路方框26只在RAM被激活時工作。
存儲在RAM 18中的指令優(yōu)選的可以是無條件轉(zhuǎn)移指令,指定可以存儲替換代碼的存儲器位置。例如,該存儲器位置可以在一個單獨的RAM或非易失性存儲器(例如閃存)中,可能由于其它的原因該設(shè)備已經(jīng)具有這種存儲器。
圖3表示本發(fā)明的另一個實施例,其中與圖1附圖標記相同的附圖標記表示相同的組件。
在這種情況下,已接收地址(N-10)的M個最不重要的比特(M-10)提供給比較方框22,當這些比特都等于零時它提供一個輸出。該輸出提供給與門36。為了測試糾錯指令是否已經(jīng)存入RAM 18,檢查RAM 18自己的輸出。具體說來,如果糾錯指令采取上述的無條件轉(zhuǎn)移指令的形式,則有可能依據(jù)這樣的事實,即存儲在RAM 18中的數(shù)據(jù)的一個特定比特(這里表示成“B”)是二進制1,如果且只要糾錯指令存在RAM 18的這個地址。
比特“B”在線路38上提供給與門36的第二輸入,因此與門36控制復(fù)用器16將RAM 18的輸出提供給處理器,只要地址A(M-10)的M個最不重要的比特都等于零,地址A(N-1M)的N-M個最重要的比特定義了糾錯指令存儲在RAM 18的地址。
在圖3所示系統(tǒng)的另一種變型中,RAM 18可以具有一個比特的字段,這個比特比用于存儲糾錯指令的比特寬。在這種情況下,該額外的比特可用作比特“B”,并用于存儲標記比特,當糾錯指令存在這個地址時。
因此描述了一種允許替換程序代碼的系統(tǒng),該系統(tǒng)不會對處理器或設(shè)備中的其它裝置產(chǎn)生非常大的副作用。
權(quán)利要求
1.一種用于處理器的處理器控制系統(tǒng),該控制系統(tǒng)包括裝置,用于接收一系列的地址,每個地址包括第一和第二多個地址比特;第一存儲器,用于在所述第一存儲器的相應(yīng)于各個所述地址的存儲器位置,存儲一組用于處理器的指令;第二存儲器,用于在所述第二存儲器的相應(yīng)于所述第一多個地址比特的各個組合的存儲器位置,存儲用于處理器的糾錯指令;裝置,用于確定何時已收到地址的所述第二多個地址比特都等于零,并在這種情況下,確定第二存儲器是否在相應(yīng)于所述已收到地址的所述第一多個地址比特的存儲器位置存儲了糾錯指令;和裝置,用于響應(yīng)每個已收到的地址提供輸出指令,在已收到地址的所述第二多個地址比特都等于零,并且確定第二存儲器在相應(yīng)于所述已收到地址的所述第一多個地址比特的存儲位置存儲了糾錯指令的情況下,該輸出指令是從第二存儲器讀取的糾錯指令,否則輸出指令從第一存儲器中讀出。
2.如權(quán)利要求1所述的處理器控制系統(tǒng),還包括復(fù)用器,用于接收從第一存儲器和第二存儲器讀取的指令,還用于接收控制信號,并適于根據(jù)該控制信號從第一存儲器或第二存儲器輸出指令。
3.如權(quán)利要求2所述的處理器控制系統(tǒng),還包括裝置,用于生成用于所述復(fù)用器的控制信號,在已收到地址的所述第二多個地址比特都等于零,并且確定第二存儲器在相應(yīng)于所述已收到地址的所述第一多個地址比特的存儲位置存儲了糾錯指令的情況下,該控制信號是使輸出指令是從第二存儲器讀取的指令,否則該輸出指令是從第一存儲器中讀出的指令。
4.如權(quán)利要求1所述的處理器控制系統(tǒng),還包括第三存儲器,用于存儲替換代碼,其中第二存儲器適于存儲無條件轉(zhuǎn)移指令形式的糾錯指令,其在第三存儲器中規(guī)定了地址。
5.如權(quán)利要求1所述的處理器控制系統(tǒng),還包括裝置,用于在糾錯指令存入第二存儲器時設(shè)置標記;和其中用于確定第二存儲器是否在相應(yīng)于所述已收到地址的所述第一多個地址比特的存儲位置,存儲了糾錯指令的裝置包括裝置,用于測試是否已經(jīng)設(shè)置了各個標記。
6.如權(quán)利要求5所述的處理器控制系統(tǒng),其中用于測試是否已經(jīng)設(shè)置了各個標記的裝置不工作,除非確定已收到地址的所述第二多個地址比特都等于零。
7.如權(quán)利要求5所述的處理器控制系統(tǒng),其中第二存儲器適于在每個存儲器位置存儲糾錯指令和標記比特,只有在存儲器位置包括糾錯指令時才設(shè)置該標記比特,其中用于測試是否已經(jīng)設(shè)置了各個標記的裝置包括裝置,用于測試所述標記比特的值。
8.如權(quán)利要求1所述的處理器控制系統(tǒng),其中用于確定第二存儲器是否在相應(yīng)于所述已收到地址的所述第一多個地址比特的存儲器位置存儲了糾錯指令的裝置包括裝置,用于測試在所述存儲器位置的具體一個比特的值,其中在第二存儲器在所述存儲器位置包括糾錯指令的情況下,該具體比特具有特定的值。
全文摘要
一種處理器控制系統(tǒng)允許所存儲的程序代碼可以被替換。原始代碼可以整個存儲在第一存儲器,例如ROM中,糾錯指令存儲在第二存儲器,例如RAM中,只有存在糾錯指令時才訪問第二存儲器。已接收的存儲器地址被分成第一多個最重要的比特和第二多個最不重要的比特。只有第二多個最不重要的比特都等于零,而且有糾錯指令存儲在RAM中,并且存儲的地址等于最重要的比特時,糾錯指令才被讀出并提供給處理器。這利用了相對較小的附加硬件,而且改進了系統(tǒng)的效率。
文檔編號G06F9/445GK1643501SQ03807240
公開日2005年7月20日 申請日期2003年1月27日 優(yōu)先權(quán)日2002年1月28日
發(fā)明者D·維爾克斯 申請人:因芬尼昂技術(shù)股份公司