專利名稱:微處理器的制作方法
技術領域:
本發(fā)明涉及具有不能改寫的第一存儲器和能夠改寫的非易失性的第二存儲器的微處理器。
背景技術:
在微處理器的中斷中,有硬件中斷和軟件中斷,并且根據(jù)中斷向量能夠知道產(chǎn)生了怎樣的中斷。由微處理器的系統(tǒng)決定根據(jù)中斷的產(chǎn)生原因而執(zhí)行的處理。將存儲了在產(chǎn)生了中斷的情況下處理的程序的開頭地址的對應表稱為中斷向量表,根據(jù)中斷向量表的內(nèi)容,執(zhí)行與中斷對應的處理程序。在現(xiàn)有的微處理器中,如圖7(A)所示那樣,作為程序存儲器,安裝有不能改寫的屏蔽式堆讀內(nèi)存(mask ROM)或可改寫的非易失性存儲器的快閃只讀存儲器(flash ROM) 的任意一個。另外,如圖7(B)所示那樣,作為程序存儲器,也可以考慮具備屏蔽式堆讀內(nèi)存和快閃只讀存儲器的設備。在圖7(A)、(B)的任意一個的情況下,通常都能夠向存儲器的開頭的區(qū)域分配中斷向量表。但是,提出了以下這樣的技術,即具備用于改寫快閃存儲器的固件、存儲了對與時鐘同步式通信方式對應的時鐘同步串行接口(CSI :Clocked SerialInterface)的動作的控制程序進行設定的中斷向量的ROM、存儲了后述的通信單元的動作的控制程序或至少對該控制程序進行設定的中斷向量的R0M,在通常動作模式時,對從內(nèi)置的多個外圍電路發(fā)送來的中斷請求信號的優(yōu)先順序進行控制并通知CPU,并且在改寫模式時,變更對與該改寫模式設定聯(lián)動的改寫模式信號的供給進行應答而輸入的來自CSI的中斷請求信號的優(yōu)先順序并通知CPU (例如參考專利文獻I)。專利文獻I :特開2001-43206號公報在程序存儲器是屏蔽式堆讀內(nèi)存的情況下,由于在產(chǎn)品出廠后不能變更程序,所以在屏蔽式堆讀內(nèi)存發(fā)現(xiàn)了故障的情況下,有產(chǎn)品的回收、屏蔽式堆讀內(nèi)存的重新生產(chǎn)等花費大量時間和費用這樣的問題。在程序存儲器是快閃ROM的情況下,由于非正常的程序的誤動作、改寫過程中的電源切斷等異常的發(fā)生,有刪除了所記錄的內(nèi)容的情況。這時,在刪除了快閃ROM的改寫程序(更新程序)的情況下,有以后完全無法更新快閃ROM的問題。在程序存儲器具備屏蔽式堆讀內(nèi)存和快閃ROM的情況下,通常將中斷向量表信息記錄在屏蔽式堆讀內(nèi)存的區(qū)域中,因此,有以下的問題,即對作成存儲在快閃ROM中的程序有很大限制,并且無法對在屏蔽式堆讀內(nèi)存的程序中發(fā)現(xiàn)了故障的情況進行對應。
發(fā)明內(nèi)容
本發(fā)明就是鑒于以上的點而提出的,其目的在于提供一種能夠變更存儲在不能改寫存儲器中的中斷處理程序的微處理器。本發(fā)明的一個形式的微處理器是是微處理器(10),具備不能改寫的第一存儲器
3(13)和可改寫的非易失性的第二存儲器(14),并與外部設備(30)連接,在上述第一存儲器(13)中設置對每個向量存儲了通過多種中斷進行處理的多個程序的地址的第一中斷向量表;在上述第一中斷向量表的各向量所示的地址中存儲處理程序的區(qū)域,在上述第二存儲器(14)中設置內(nèi)容與上述第一中斷向量表相同的第二中斷向量表,具備地址變換單元(22),將對上述第一中斷向量表進行存取的地址變換為對上述第二中斷向量表進行存取的地址;寫入單元(43),根據(jù)從上述外部設備(30)供給的指令,將上述第二中斷向量表的任意向量的地址和存儲在上述任意向量所示的地址中的處理程序寫入到上述第二存儲器
(14)中。理想的是上述第一存儲器(13)存儲執(zhí)行從上述外部設備提供的指令的處理程序,在從上述外部設備30對上述第二存儲器(14)進行寫入時,停止上述地址變換單元的地址變換。理想的是上述第一存儲器(13)存儲被存儲在上述第一存儲器(13)中的數(shù)據(jù)的驗證用數(shù)據(jù)。理想的是;上述第二存儲器(14)存儲被存儲在上述第二存儲器(14)中的數(shù)據(jù)的驗證用數(shù)據(jù)。另外,上述括號內(nèi)的參考符號是為了任意理解而附加的,只是一個例子,對圖示的形式并沒有限制。根據(jù)本發(fā)明,能夠變更存儲在不能改寫的存儲器中的中斷處理程序。
圖I是本發(fā)明的微處理器的一個實施例的結構圖。圖2是表示微處理器中的存儲器的地址分配的一個實施例的圖。圖3是中斷向量切換電路的一個實施例的結構圖。圖4是表示本實施例的屏蔽式堆讀內(nèi)存和快閃ROM的地址分配的圖。圖5是表示現(xiàn)有的一般的屏蔽式堆讀內(nèi)存和快閃ROM的地址分配的圖。圖6是CPU執(zhí)行的處理的一個實施例的流程圖。圖7是表示現(xiàn)有的微處理器中的存儲器的地址分配的一個例子的圖。符號說明10 :微處理器;11 CPU ;12 RAM; 13 :屏蔽式堆讀內(nèi)存;14 :快閃ROM ;15 :計時器; 16 :通信電路;17 :邊沿檢測電路;18 :AD變換器;19 :DA變換器;20 :中斷控制器;21 :內(nèi)部總線;22 ;中斷向量切換電路;23 :復位端子;30 :外部設備;31 :地址變換電路;32 :寄存器;33 :復位信號生成電路;41、51 :中斷向量表;43 :快閃ROM寫入程序;42_0 42-15、 52-1 :處理程序
具體實施例方式以下,根據(jù)附圖,說明本發(fā)明的實施例。<微處理器的結構>圖I表不本發(fā)明的微處理器的一個實施例的結構圖。在圖I中,微處理器10具有 CPU(中央處理裝置)11、RAM12、屏蔽式堆讀內(nèi)存13、快閃R0M14、計時器15、通信電路16,進而還具有邊沿檢測電路17、AD變換器(ADC) 18,DA變換器(DAC) 19、中斷控制器20等,除了邊沿檢測電路17以外,這些電路通過內(nèi)部總線21相互連接。另外,在內(nèi)部總線21與屏蔽式堆讀內(nèi)存13和快閃R0M14之間設置有中斷切換電路22。另外,屏蔽式堆讀內(nèi)存13不能改寫,快閃R0M14是能夠改寫的非易失性存儲器。另外,內(nèi)部總線21具有地址總線、數(shù)據(jù)總線、控制總線。進而,在微處理器10中還設置有復位端子23。CPUll執(zhí)行存儲在屏蔽式堆讀內(nèi)存13和快閃R0M14中的處理程序。這時,RAMl2 被用作作業(yè)區(qū)域。計時器15對時鐘進行計數(shù),生成規(guī)定的定時信號,例如將一部分的定時信號作為中斷信號而提供給中斷控制器20。通信電路16例如在與上位裝置、個人計算機等外部設備30之間進行通信。邊沿檢測電路17檢測外部設備30與通信電路16之間的通信信號的邊沿,將邊沿檢出信號作為中斷信號而提供給中斷控制器20。AD變換器18對從外部供給的模擬信號進行數(shù)字化,例如供給CPUl I。DA變換器19 例如對從CPUll供給的數(shù)字信號進行模擬化,輸出到外部。中斷控制器20對從計時器15、 邊沿檢測電路17等供給的中斷信號進行優(yōu)先度控制,并供給CPU11。圖2表示微處理器10中的存儲器的地址分配的一個實施例。微處理器10通常以與外部設備30發(fā)生通信、或根據(jù)需要與外部設備30進行通信的產(chǎn)品為前提。微處理器10 在接通電源后,成為CPU能夠執(zhí)行存儲在屏蔽式堆讀內(nèi)存13中的程序的環(huán)境,因此,與所利用的CPUll的型號對應地進行屏蔽式堆讀內(nèi)存13的存儲器配置。因此,在圖2中,存儲器的開頭配置了屏蔽式堆讀內(nèi)存13,接著是快閃R0M14,接著是RAM12,此后是計時器15 中斷控制器20等內(nèi)置的輸入輸出裝置(I/O)?!粗袛嘞蛄壳袚Q電路的結構〉圖3表示中斷向量切換電路22的一個實施例的結構圖。在本實施例中,在產(chǎn)生了中斷時,CPU所參照的中斷向量表,設置有切換對屏蔽式堆讀內(nèi)存13的中斷向量表進行參照、還是對快閃R0M14的中斷向量表進行參照的中斷向量切換電路22。在圖3中,具有重大向量切換電路22、寄存器32、地址變換電路31、選擇信號生成電路33。寄存器32從CPUll設定值0或值I并保持。在此,CPUll在參照屏蔽式堆讀內(nèi)存 13的中斷向量表時,例如設定值0,在參照快閃R0M14的中斷向量表時,設定值I。地址變換電路31被供給寄存器32的內(nèi)容,并且經(jīng)由內(nèi)部總線21從CPUll被供給地址。地址變換電路31如果從寄存器32被供給了值0,則停止地址變換,而原樣地輸出從 CPUll供給的地址。另外,如果從寄存器32被供給了值1,則執(zhí)行地址變換,將從CPUll供給的地址的例如高位8比特例如變更為0x40 (Ox表示16進制表示)并輸出。該地址變換電路31的輸出地址被分別供給選擇信號生成電路33、屏蔽式堆讀內(nèi)存13、快閃R0M14。
該地址的高位8比特的變更是將屏蔽式堆讀內(nèi)存13的中斷向量表41的地址變更為快閃R0M14的中斷向量表51的地址的變換,根據(jù)微處理器的系統(tǒng)中的地址體系,變換比特數(shù)、所變換的值可以有各種不同。選擇信號生成電路33根據(jù)地址變換電路31的輸出地址的例如高位4比特,判斷是參照屏蔽式堆讀內(nèi)存13還是參照快閃R0M14,在參照屏蔽式堆讀內(nèi)存13時,生成選擇屏蔽式堆讀內(nèi)存13的選擇信號(快閃R0M14為非選擇),供給屏蔽式堆讀內(nèi)存13,在參照快閃R0M14時,生成選擇快閃R0M14的選擇信號(屏蔽式堆讀內(nèi)存13為非選擇),供給快閃 R0M14。圖4表示本實施例的屏蔽式堆讀內(nèi)存13和快閃R0M14的地址分配。在圖4中,屏蔽式堆讀內(nèi)存13的地址被分配為0x0000 0x3FFF,快閃R0M14的地址被分配為0x400 0x6FFF。在屏蔽式堆讀內(nèi)存13的開頭區(qū)域即例如地址0x0000 OxOOFF的區(qū)域中,配置中斷向量表41。在屏蔽式堆讀內(nèi)存13的中斷向量表41中,例如分配中斷向量0 中斷向量 15,例如將中斷向量0的值設定為中斷向量0的處理程序的開頭地址即0x0100,將中斷向量I的值設定為中斷向量I的處理程序的開頭地址即0x0200,將中斷向量15的值設定為中斷向量15的處理程序的開頭地址即0x1000。另外,在圖中,將“中斷向量”簡單表示為“向
_S*,,
里o在此,作為中斷產(chǎn)生的原因有電源接通、AD變換器18的變換結束、計時器15的規(guī)定時間的經(jīng)過、通信電路16的發(fā)送或接收的結束、來自復位端子23的復位信號輸入等元件中斷、各種軟件中斷。在屏蔽式堆讀內(nèi)存13的地址0x0100 OxOlFF中存儲中斷向量0的處理程序 42-0,在地址0x0200 0x02FF中存儲中斷向量I的處理程序42_1,同樣,在地址0x1000 OxlOFF中,存儲有中斷向量15的處理程序42-15。在屏蔽式堆讀內(nèi)存13的地址0x1100以后,也存儲各種程序、數(shù)據(jù)。進而,在屏蔽式堆讀內(nèi)存13的例如最末尾的地址0x3500 0x3FFF的區(qū)域存儲有快閃ROM寫入程序43。 快閃ROM寫入程序43是向快閃R0M14寫入、刪除、驗證數(shù)據(jù)的程序。在快閃R0M14的開頭區(qū)域即例如地址0x4000 0x40FF的區(qū)域中配置中斷向量表 51。在制造時,快閃R0M14的中斷向量表51與屏蔽式堆讀內(nèi)存13的中斷向量表是相同的結構。S卩,在快閃R0M14的中斷向量表51中例如分配中斷向量0 中斷向量15,例如中斷向量0的值被設定為中斷向量0的處理程序的開頭地址即0x0100,中斷向量I的值被設定為0x0200,中斷向量15的值被設定為0x1000。在快閃R0M14的地址0x4100 0x61FF中存儲有各種程序、數(shù)據(jù),例如在制造時未使用快閃R0M14的地址0x6200以后。但是,在圖4中,快閃R0M14的中斷向量I的值為 0x6200表示在以后被更新的值,在制造時被設定為0x0200。另外,如果對屏蔽式堆讀內(nèi)存13和快閃R0M14進行比較,則單位面積的數(shù)據(jù)容量是R0M13 —方大,因此將包含中斷向量0 15的處理程序的各種程序存儲在屏蔽式堆讀內(nèi)存13中。圖5表示現(xiàn)有的一般的屏蔽式堆讀內(nèi)存13和快閃R0M14的地址分配。在圖5中,在屏蔽式堆讀內(nèi)存13的開頭區(qū)域即例如地址0x0000 OxOOFF的區(qū)域中配置中斷向量表。在屏蔽式堆讀內(nèi)存13的中斷向量表中例如分配中斷向量0 中斷向量15,例如中斷向量0的值被設定為中斷向量0的處理程序的開頭地址即0x0100,中斷向量I的值被設定為中斷向量I的處理程序的開頭地址即0x0200,中斷向量15的值被設定為中斷向量15 的處理程序的開頭地址即0x1000。在屏蔽式堆讀內(nèi)存13的地址0x0100 OxOlFF中存儲中斷向量0的處理程序,在地址0x0200 0x02FF中存儲中斷向量0的處理程序,同樣,在地址0x1000 OxlOFF中存儲中斷向量15的處理程序。在屏蔽式堆讀內(nèi)存13的地址0x1100以后存儲有各種程序。在快閃R0M14中不配置中斷向量表,在快閃R0M14的地址0x4000 0x6FFF中存儲有各種程序。<復位處理的流程圖>圖6表示CPUll執(zhí)行的處理的一個實施例的流程圖。在微處理器10的電源接通時由未圖示的電路生成了復位信號時、或向復位端子23供給了低電平的復位信號時,通過中斷控制器20的控制,CPUll開始執(zhí)行該處理。在圖6中,在步驟Sll中,CPUll向寄存器32設定值0,作為中斷向量選擇屏蔽式堆讀內(nèi)存13。接著,在步驟S12中,進行屏蔽式堆讀內(nèi)存13的全部區(qū)域的數(shù)據(jù)驗證。在此, 例如計算從屏蔽式堆讀內(nèi)存13的全部區(qū)域中讀出的全部數(shù)據(jù)的校驗和,并與預先寫入到屏蔽式堆讀內(nèi)存13的特定區(qū)域中的校驗和值進行比較。另外,在步驟S13中根據(jù)從屏蔽式堆讀內(nèi)存13的全部區(qū)域中讀出的全部數(shù)據(jù)計算出的校驗和與特定區(qū)域的校驗和值一致的情況下,屏蔽式堆讀內(nèi)存13判斷為正常,在不一致的情況下,屏蔽式堆讀內(nèi)存13判斷為異常。在異常的情況下,設定為不能動作并結束處理。在屏蔽式堆讀內(nèi)存13正常的情況下,在步驟S14中進行快閃R0M14的全部區(qū)域的數(shù)據(jù)驗證。在此,例如計算從快閃R0M14的全部區(qū)域讀出的全部數(shù)據(jù)的校驗和,并與預先寫入到快閃R0M14的特定區(qū)域中的校驗和值進行比較。另外,在步驟S15中根據(jù)從快閃 R0M14的全部區(qū)域讀出的全部數(shù)據(jù)計算出的校驗和與特定區(qū)域的校驗和值一致的情況下, 快閃R0M14判別為正常。在不一致的情況下,快閃R0M14判斷為異常。在快閃R0M14異常的情況下,前進到后述的步驟S30。在快閃R0M14正常的情況下,在步驟S16中,CPUll向寄存器32設定值1,作為中斷向量選擇快閃R0M14。接著,在步驟S17中執(zhí)行正常時的初始化處理,以后,執(zhí)行正常時的處理。S卩,在步驟S18中判斷是否從外部設備30接收到通信數(shù)據(jù)。在接收到通信數(shù)據(jù)的情況下,依照通信數(shù)據(jù)的內(nèi)容,例如如果通信數(shù)據(jù)是指令A,則在步驟S19中執(zhí)行指令A的處理,如果通信數(shù)據(jù)是指令X,則在步驟S20中執(zhí)行指令X的處理,如果通信數(shù)據(jù)是轉移到快閃 ROM更新模式的指令,則前進到步驟S30。在步驟S18中沒有接收到通信數(shù)據(jù)的情況下,在步驟S21 S22中分別執(zhí)行正常時的處理#1 #n,前進到步驟S18。另一方面,在步驟S30中,CPUl I執(zhí)行快閃ROM更新的初始化處理。具體地說,進行通信電路16的初始化,另外,向寄存器32設定值0,作為中斷向量選擇屏蔽式堆讀內(nèi)存13。 以后,執(zhí)行快閃ROM更新處理。
S卩,在步驟S31中,判斷是否從外部設備30接收到通信數(shù)據(jù)。在接收到通信數(shù)據(jù)的情況下,依照通信內(nèi)容,例如如果通信數(shù)據(jù)是刪除(erase)指令,則在步驟S32中針對由快閃R0M14的指令所指定的區(qū)域執(zhí)行刪除處理(消去處理),如果通信數(shù)據(jù)是寫入指令,則在步驟S33中針對由快閃R0M14的指令所指定的區(qū)域,執(zhí)行寫入數(shù)據(jù)的寫入處理。另外,外部設備30如果快閃R0M14更新結束,則發(fā)送再啟動指令。因此,如果通f目數(shù)據(jù)是再啟動指令,則CPUll在步驟S34中進行再啟動。由此,從步驟Sll開始執(zhí)行圖6的處理。另外,上述的步驟S30 S34各自的處理是利用屏蔽式堆讀內(nèi)存13的中斷向量表41 而執(zhí)行的軟件中斷。但是,在步驟S12、S14中,使用校驗和進行數(shù)據(jù)驗證,但除此以外,也可以利用 CRC、奇偶等其他驗證方法,并不限于上述實施例。在此,在圖4的中斷向量表41、51的中斷向量I中登記的地址0x0200 0x02FF中所存儲的中斷向量I的處理程序42-1發(fā)現(xiàn)了故障的情況下,由于該位置是屏蔽式堆讀內(nèi)存區(qū)域,所以不能進行修改。在該情況下,從外部設備30向微處理器10發(fā)送轉移到快閃ROM 更新模式的指令。另外,通過使CPUll執(zhí)行步驟S30 S34,如圖4所示那樣,例如將快閃R0M14的中斷向量表51中的中斷向量I的值改寫為0x6200。進而,將中斷向量I的修改后的處理程序52-1寫入到快閃R0M14的例如0x6200 0x62FF。進而,從快閃R0M14的全部區(qū)域讀出全部數(shù)據(jù),計算校驗和,將計算出的校驗和寫入到快閃R0M14的特定區(qū)域中。然后,在步驟S18 S22中通過正常時的通信數(shù)據(jù)接收處理#1 #n執(zhí)行中斷向量0 15的處理程序的情況下,作為中斷向量參照快閃R0M14的中斷向量表51,因此在執(zhí)行中斷向量I的處理時,執(zhí)行快閃R0M14的修改后的處理程序。同樣,針對存儲在屏蔽式堆讀內(nèi)存13中的中斷處理程序以外的程序,也通過假設為參照向量地址的軟件中斷,能夠消除故障。當然,不只是故障的對應,在為了提高功能、追加新功能而需要變更中斷處理內(nèi)容的情況下,也能夠同樣進行對應,在產(chǎn)品出廠后提高功能這一點上,能夠提高產(chǎn)品價值。另外,快閃ROM寫入程序43由于存儲在屏蔽式堆讀內(nèi)存13中,所以不會因靜電等外在因素而破壞。因此,在存儲在快閃R0M14中的程序、數(shù)據(jù)由于靜電等外在因素、不正確的寫入或刪除等而被改寫而發(fā)生了故障的情況下,通過計時器15的監(jiān)控器(watch dog)計時器功能等,而發(fā)生復位。另外,通過從步驟S15前進到步驟S30,能夠啟動數(shù)據(jù)沒有破壞的屏蔽式堆讀內(nèi)存 13的快閃ROM寫入程序43,能夠從外部設備30對快閃R0M14的數(shù)據(jù)進行改寫,能夠恢復到正常狀態(tài)。進而,可以分別在屏蔽式堆讀內(nèi)存13和快閃R0M14中具有各自的中斷向量表41、 51,因此也可以完全通過存儲在屏蔽式堆讀內(nèi)存13中的程序和程序在快閃R0M14中的程序來進行各自的中斷處理。
權利要求
1.一種微處理器,具備不能改寫的第一存儲器和可改寫的非易失性的第二存儲器,并與外部設備連接,其特征在于在上述第一存儲器中設置對每個向量存儲了通過多種中斷進行處理的多個程序的地址的第一中斷向量表;在上述第一中斷向量表的各向量所示的地址中存儲處理程序的區(qū)域,在上述第二存儲器中設置內(nèi)容與上述第一中斷向量表相同的第二中斷向量表,具備地址變換單元,將對上述第一中斷向量表進行存取的地址變換為對上述第二中斷向量表進行存取的地址;寫入單元,根據(jù)從上述外部設備供給的指令,將上述第二中斷向量表的任意向量的地址和存儲在上述任意向量所示的地址中的處理程序寫入到上述第二存儲器中。
2.根據(jù)權利要求I所述的微處理器,其特征在于上述第一存儲器存儲執(zhí)行從上述外部設備供給的指令的處理程序,在從上述外部設備向上述第二存儲器進行寫入時,停止上述地址變換單元的地址變換。
3.根據(jù)權利要求2所述的微處理器,其特征在于上述第一存儲器存儲被存儲在上述第一存儲器中的數(shù)據(jù)的驗證用數(shù)據(jù)。
4.根據(jù)權利要求2或3所述的微處理器,其特征在于上述第二存儲器存儲被存儲在上述第二存儲器中的數(shù)據(jù)的驗證用數(shù)據(jù)。
全文摘要
本發(fā)明的目的在于能夠變更存儲在不可改寫的存儲器中的中斷處理程序。本發(fā)明的微處理器在第一存儲器(13)中設置對每個向量存儲了通過多種中斷進行處理的多個程序的地址的第一中斷向量表;在上述第一中斷向量表的各向量所示的地址中存儲處理程序的區(qū)域,在第二存儲器(14)中設置內(nèi)容與第一中斷向量表相同的第二中斷向量表,該微處理器具備地址變換單元(22),將對第一中斷向量表進行存取的地址變換為對第二中斷向量表進行存取的地址;寫入單元(43),根據(jù)從外部設備(30)供給的指令,將第二中斷向量表的任意向量的地址和存儲在任意向量所示的地址中的處理程序寫入到第二存儲器(14)中。
文檔編號G06F15/78GK102591844SQ201110374840
公開日2012年7月18日 申請日期2011年11月16日 優(yōu)先權日2010年11月29日
發(fā)明者阿部真喜男, 馬島吉英 申請人:三美電機株式會社