專利名稱:配有閃爍存儲器的微型計(jì)算機(jī)及其程序存入方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種配有配有閃爍存儲器的微型計(jì)算機(jī)以及一種將程序存入閃爍存儲器的方法。具體來說,本發(fā)明涉及一種具有能對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能的微型計(jì)算機(jī)以及一種將程序?qū)懭腴W爍存儲器的方法。
用于檢測閃爍存儲器重寫操作中斷以防止出錯的數(shù)據(jù)處理設(shè)備已經(jīng)廣為人知,而且在日本專利公開No.6865/1996中也已作出說明。
圖1的框圖顯示出了上述文件所揭示的數(shù)據(jù)處理設(shè)備的一般結(jié)構(gòu)。參考圖1,在如改變程序這樣的初始化過程中,CPU 202執(zhí)行重寫操作,以將數(shù)據(jù)塊通過RAM 206從ROM 203逐塊寫入閃爍存儲器204,并將代表數(shù)據(jù)開始/結(jié)束的起始代碼和結(jié)束代碼按照與該數(shù)據(jù)相對應(yīng)的關(guān)系寫入閃爍存儲器204。
CPU 202在每當(dāng)電源變?yōu)橛行r都將閃爍存儲器204的內(nèi)容復(fù)制進(jìn)RAM 206。通過這種復(fù)制操作,CPU 202就可根據(jù)起始代碼和結(jié)束代碼而檢測出閃爍存儲器204中數(shù)據(jù)的寫錯誤。
圖2顯示了閃爍存儲器204的數(shù)據(jù)結(jié)構(gòu)。
閃爍存儲器204被分割成多個塊,并將含有數(shù)據(jù)串101、起始代碼103和結(jié)束代碼104的數(shù)據(jù)串寫入各個塊中。
數(shù)據(jù)串101的數(shù)據(jù)區(qū)中包含有程序代碼、數(shù)據(jù)表以及其它必需的數(shù)據(jù)。起始代碼103和結(jié)束代碼104是預(yù)先確定好的任意數(shù)據(jù),它們被加在數(shù)據(jù)串101的開始和結(jié)尾處。
圖3的流程圖顯示了傳統(tǒng)數(shù)據(jù)處理設(shè)備在啟動正常程序時的操作流程圖。
一個塊的數(shù)據(jù)被從閃爍存儲器204中讀出(步驟C1),并且將起始代碼和結(jié)束代碼與各自的預(yù)定值進(jìn)行比較(步驟C2)。然后,步驟C2的比較結(jié)果得到確認(rèn)(步驟C3)。在對先前讀出的塊數(shù)據(jù)所進(jìn)行的重寫操作被半途中斷的情況下,由于結(jié)束代碼或起始代碼和結(jié)束代碼尚未被寫入,所以起始代碼和結(jié)束代碼將和其各自的預(yù)定值不一致。這樣,執(zhí)行對閃爍存儲器204和RAM 206的設(shè)置(步驟C4),并執(zhí)行錯誤處理(步驟C5)。然后,啟動并存儲在RAM 206中的正常程序被執(zhí)行(步驟C8)。
如果步驟C3確認(rèn)了起始代碼和結(jié)束代碼與各自的預(yù)定值一致,則數(shù)據(jù)塊將被寫入RAM 206(步驟C6)。之后,對全部數(shù)據(jù)的處理是否已經(jīng)完成將得到確認(rèn)(步驟C7)。如果對全部數(shù)據(jù)的處理已被完成,則啟動保留在RAM 206中的正常程序并予以執(zhí)行(步驟C8)。如果步驟C7確認(rèn)對全部數(shù)據(jù)的處理尚未完成,則控制將返回步驟C1并重復(fù)步驟C1至C6的操作,直到將預(yù)定的多個塊的數(shù)據(jù)傳送到RAM的操作完成為止。
如上所述,在傳統(tǒng)的數(shù)據(jù)處理設(shè)備中,當(dāng)起始代碼和結(jié)束代碼被確認(rèn)與其各預(yù)定值一致時,或者在用于閃爍存儲器和RAM的設(shè)置操作或錯誤處理被執(zhí)行之后,正常程序才會被啟動,這樣就可防止因閃爍存儲器的寫錯誤而導(dǎo)致的程序出錯。
但是,使用閃爍存儲器的傳統(tǒng)數(shù)據(jù)處理設(shè)備存在以下問題。
第一個問題,由于用來檢測閃爍存儲器寫錯誤而進(jìn)行的起始代碼和結(jié)束代碼的寫操作僅在對閃爍存儲器進(jìn)行重寫時才被執(zhí)行,所以如果當(dāng)寫錯誤發(fā)生在重寫操作被中斷的初始階段時,就不能被檢測到。
例如,如果在閃爍存儲器擦除操作的初始階段的重寫操作中發(fā)生中斷,則起始代碼和結(jié)束代碼有可能被保留下來而未被擦除(即使一些程序代碼已被擦除)。這種情況下就可能出現(xiàn)功能失常。
還有,當(dāng)全部地址被保留而未被擦除時,由于重寫操作之前的程序仍保持原樣,所以數(shù)據(jù)處理設(shè)備所執(zhí)行的操作將與預(yù)期操作不同。
第二個問題,當(dāng)起始代碼和結(jié)束代碼被設(shè)在塊的邊界之上時,由于它們是作為數(shù)據(jù)區(qū)的部分寫入數(shù)據(jù)而被加入的,所以編制一個程序?qū)⑹掷щy,因?yàn)镃PU是直接執(zhí)行存儲在閃爍存儲器中的程序的。具體來說,一個計(jì)算機(jī)系統(tǒng)有時具有這樣一種配置,即,復(fù)位向量或中斷向量被固定在特定的地址上。在這類計(jì)算機(jī)系統(tǒng)中,如果復(fù)位向量和中斷向量被固定在應(yīng)存儲起始代碼和結(jié)束代碼的地址,就不能編制出一個程序。
另外,雖然傳統(tǒng)數(shù)據(jù)處理設(shè)備被設(shè)置成先將程序讀入RAM一次然后再執(zhí)行該程序,但是,當(dāng)它使用含有內(nèi)置存儲器的計(jì)算機(jī)(如單片機(jī))時,則必須為該數(shù)據(jù)處理設(shè)備額外準(zhǔn)備RAM,以用于存儲待執(zhí)行的程序,其結(jié)果使得此類數(shù)據(jù)處理設(shè)備的成本較高。
傳統(tǒng)數(shù)據(jù)處理設(shè)備還有一個問題,即,因?yàn)槌绦蚴菑拈W爍存儲器傳送到RAM的,所以它需要較長的時間來啟動一個正常操作程序。
本發(fā)明是針對上述已有技術(shù)所存在的各種問題而被提出的,它的目的就是提供一種配有內(nèi)置閃爍存儲器并具有自編程功能的微型計(jì)算機(jī)以及一種將程序存入閃爍存儲器的方法,利用它們,就可快速且準(zhǔn)確地檢測出因閃爍存儲器重寫操作的中斷而導(dǎo)致的寫錯誤。
根據(jù)本發(fā)明的一個方面,提供了一種配有閃爍存儲器并具有能對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能的微型計(jì)算機(jī),這種微型計(jì)算機(jī)包括存儲有一個程序的重寫程序區(qū),該程序用于閃爍存儲器的重寫操作過程;以及控制器,它在當(dāng)存儲在外部存儲裝置或上述重寫程序區(qū)之中的重寫程序被寫入閃爍存儲器時,在閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū),并對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者確認(rèn)各階段是好還是壞,以及將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中。
在這種配有閃爍存儲器的微型計(jì)算機(jī)中,其閃爍存儲器可含有多個塊,并且每個塊都是一個可擦寫單元且都含有一個數(shù)據(jù)區(qū)和一個標(biāo)志區(qū),而控制器則可將多個塊的數(shù)據(jù)區(qū)映射在連續(xù)地址上。
根據(jù)本發(fā)明的另一個方面,提供了一種配有閃爍存儲器并具有能對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能的微型計(jì)算機(jī),這種微型計(jì)算機(jī)包括重寫程序區(qū),其存儲有一個程序,該程序用于閃爍存儲器的重寫操作過程;重寫裝置,它在當(dāng)存儲在外部存儲裝置或上述重寫程序區(qū)之中的重寫程序被寫入閃爍存儲器時在閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū);以及控制器,它對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者確認(rèn)各階段是好還是壞,并通過重寫裝置將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中。
根據(jù)本發(fā)明的又一個方面,提供了一種配有閃爍存儲器并具有對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能的微型計(jì)算機(jī),這種微型計(jì)算機(jī)包括重寫程序區(qū),存儲有一個程序,該程序用于閃爍存儲器的重寫操作過程;重寫裝置,它在當(dāng)存儲在外部存儲裝置或上述重寫程序區(qū)之中的重寫程序被寫入閃爍存儲器時在閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū);控制器,它對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者確認(rèn)各階段是好還是壞,并通過重寫裝置將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中;以及標(biāo)志狀態(tài)報(bào)告裝置,它在重寫操作完成后當(dāng)電源變?yōu)橛行r,對從標(biāo)志區(qū)讀出的數(shù)值和預(yù)先存儲的標(biāo)志區(qū)預(yù)期值進(jìn)行比較,并將比較結(jié)果通知給控制器。
在這兩種配有閃爍存儲器的微型計(jì)算機(jī)中,閃爍存儲器都可含有多個塊,并且每個塊都是一個可擦寫單元且都含有一個數(shù)據(jù)區(qū)和一個標(biāo)志區(qū),而重寫裝置則可將多個塊的數(shù)據(jù)區(qū)映射在連續(xù)地址上。
根據(jù)本發(fā)明的再一個方面,提供了一種用于將程序存儲入微型計(jì)算機(jī)的閃爍存儲器中的方法,該微型計(jì)算機(jī)配有閃爍存儲器并具有能對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能,這種方法的特征在于,當(dāng)重寫程序被寫入閃爍存儲器時,在閃爍存儲器中局部形成了多個標(biāo)志區(qū),而且還執(zhí)行對重寫操作各階段完成情況的確認(rèn),或?qū)Ω麟A段好或壞的確認(rèn),之后將確認(rèn)的結(jié)果記錄入各標(biāo)志區(qū)。
在具有上述結(jié)構(gòu)的本發(fā)明中,部分閃爍存儲器被用于一些標(biāo)志,這些標(biāo)志中記錄著閃爍存儲器重寫操作過程狀態(tài)。當(dāng)閃爍存儲器中的一個程序?qū)⒈粓?zhí)行時,通過確認(rèn)該標(biāo)志的內(nèi)容就可了解重寫過程的狀態(tài)。因此,由于閃爍存儲器重寫操作的中斷而導(dǎo)致的寫錯誤就能被快速且準(zhǔn)確地檢測出來。
通過以下的文字說明并參考顯示有本發(fā)明實(shí)施例的附圖,本發(fā)明的上述及其它目的、特征和優(yōu)點(diǎn)將變得更為明了。
圖1的框圖顯示了一個傳統(tǒng)的數(shù)據(jù)處理設(shè)備;圖2的示意圖顯示了傳統(tǒng)數(shù)據(jù)處理設(shè)備中閃爍存儲器的數(shù)據(jù)結(jié)構(gòu);圖3的流程圖說明了傳統(tǒng)數(shù)據(jù)處理設(shè)備在啟動正常程序時的操作;圖4的框圖顯示了本發(fā)明一個實(shí)施例的結(jié)構(gòu);圖5(A)和5(B)的示意圖顯示了圖4所示閃爍存儲器區(qū)的結(jié)構(gòu),其中,圖5(A)顯示的是其物理結(jié)構(gòu),圖5(B)顯示的是其邏輯結(jié)構(gòu);圖6的流程圖顯示了在電源變?yōu)橛行r上述實(shí)施例的操作;圖7(A)和7(B)的示意圖顯示了圖4所示閃爍存儲器區(qū)的詳細(xì)結(jié)構(gòu),其中,圖7(A)顯示的是其物理結(jié)構(gòu),圖7(B)顯示的是其邏輯結(jié)構(gòu);圖8的示意圖顯示了標(biāo)志區(qū)2的結(jié)構(gòu);圖9的流程圖顯示了用于對圖8所示標(biāo)志區(qū)進(jìn)行重寫處理的操作;圖10的框圖顯示了本發(fā)明第二個實(shí)施例的結(jié)構(gòu)。
以下將參考附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明。
圖4是顯示了本發(fā)明一個實(shí)施例的結(jié)構(gòu)的框圖。該實(shí)施例包括微型計(jì)算機(jī)1,CPU(控制裝置)2,重寫程序區(qū)3,閃爍存儲器區(qū)4,用于對閃爍存儲器區(qū)4進(jìn)行重寫的重寫裝置5,用于在操作中存儲臨時數(shù)據(jù)的RAM 6,以及用于相互連接各單元的通信裝置7。
圖5(A)和5(B)是顯示了圖4所示閃爍存儲器區(qū)的結(jié)構(gòu)的示意圖,其中,圖5(A)顯示的是其物理結(jié)構(gòu),圖5(B)顯示的是其邏輯結(jié)構(gòu)。
閃爍存儲器區(qū)4含有多個塊,其每個塊都構(gòu)成了一個可擦寫單元,并且都含有一個用于存儲重寫操作歷史信息的標(biāo)志區(qū)以及一個用于存儲程序、數(shù)據(jù)表及其它必需數(shù)據(jù)的數(shù)據(jù)區(qū)。此處,含有數(shù)據(jù)區(qū)1和標(biāo)志區(qū)1的塊1用數(shù)據(jù)101來表示,而含有數(shù)據(jù)區(qū)2和標(biāo)志區(qū)2的塊2則用數(shù)據(jù)102來表示。
如圖5(B)所示,數(shù)據(jù)區(qū)被映射在處于連續(xù)空間中的邏輯地址上。
圖6是說明了在電源變?yōu)橛行r本實(shí)施例操作的流程圖。以下將參考圖6對本實(shí)施例的操作進(jìn)行說明。
重寫程序區(qū)3存儲有一個用于對閃爍存儲器區(qū)4進(jìn)行重寫的程序。圖6中虛線以右是由存儲在閃爍存儲器區(qū)4中的程序所執(zhí)行的操作,而虛線以左則是由存儲在重寫程序區(qū)3中的程序所執(zhí)行的操作。
當(dāng)電源變?yōu)橛行Ш?,初始化操作將被?zhí)行以將各單元設(shè)定到初始狀態(tài)(步驟A1)。初始化操作之后,流程將檢查是否出現(xiàn)閃爍存儲器區(qū)4的重寫請求(步驟A2)。如果閃爍存儲器區(qū)4有重寫請求,則重寫操作將被執(zhí)行(步驟A3),但如果閃爍存儲器區(qū)4沒有重寫請求,則流程將確定閃爍存儲器區(qū)4的重寫操作是否已被正常執(zhí)行(步驟A4)。
步驟A4中對閃爍存儲器區(qū)重寫操作是否正常作出判斷,其依賴于圖5(A)中的標(biāo)志區(qū)是否具有預(yù)期值。如果流程確定出重寫操作未被正常執(zhí)行,則出錯處理將被執(zhí)行(步驟A5),但如果流程確定出重寫操作已被正常執(zhí)行,則它將由存儲在閃爍存儲器區(qū)4中的程序執(zhí)行正常操作(步驟A6)。
在步驟A3的重寫操作中,當(dāng)操作(如重寫操作中的擦除操作或?qū)懭氩僮?到達(dá)結(jié)尾時,流程將設(shè)置一個代表此結(jié)尾的標(biāo)志。對待在步驟A4中用于確定重寫操作正常性的預(yù)期值來說,它使用的是經(jīng)重寫操作改變后的標(biāo)志。
利用存儲在閃爍存儲器區(qū)中的內(nèi)容(它已被按照上述方式重寫),就可通過對標(biāo)志的檢測來確定重寫操作是否已被正常執(zhí)行。例如,如果重寫操作被半途中斷,則標(biāo)志將保持與被中斷處理之前的狀態(tài)相同,并因而具有與其預(yù)期值不同的數(shù)值。利用這種不同,就可檢測出對閃爍存儲器區(qū)4所進(jìn)行的重寫操作已被中斷。
在本實(shí)施例的這種方法中,如果操作在對閃爍存儲器進(jìn)行重寫期間被中斷,則通過利用一個標(biāo)志就可將其檢測出來,該標(biāo)志代表了閃爍存儲器一部分的重寫歷史信息,它用于確定寫操作的正常性。因此,就可防止由于程序出錯而導(dǎo)致的意外錯誤或事件。
以下將對上述實(shí)施例的操作進(jìn)行更為詳細(xì)的說明。
圖7(A)和7(B)是顯示了圖4所示閃爍存儲器區(qū)的詳細(xì)結(jié)構(gòu)的示意圖,其中,圖7(A)顯示的是其物理結(jié)構(gòu),圖7(B)顯示的是其邏輯結(jié)構(gòu)。除具有如圖5(A)和5(B)所示閃爍存儲器區(qū)4的結(jié)構(gòu)以外,圖7(A)和7(B)所示的閃爍存儲器區(qū)4的結(jié)構(gòu)還含有重寫程序區(qū)3以及RAM 6,前者用于解釋一個地址分配的實(shí)例,而后者則用于在操作中存儲臨時數(shù)據(jù)。
重寫程序區(qū)3存儲有用于對閃爍存儲器區(qū)4進(jìn)行重寫的程序。閃爍存儲器區(qū)4則存儲著用于進(jìn)行正常操作的程序??梢詫⒋鎯υ陂W爍存儲器區(qū)4中的程序變成采用本實(shí)施例的系統(tǒng)的擴(kuò)展功能,或者便于對程序進(jìn)行修改以消除其缺陷。
對閃爍存儲器區(qū)4所進(jìn)行的重寫是由重寫裝置5在CPU 2的控制下,根據(jù)存儲在重寫程序區(qū)(ROM)3中的程序而執(zhí)行的。在重寫過程中,閃爍存儲器區(qū)4中的程序?qū)⒈恢匦聦懭胗赏ㄐ叛b置7所接收的程序代碼。
RAM 6可在正常程序操作期間或在對重寫程序區(qū)3進(jìn)行重寫期間臨時存儲數(shù)據(jù)。
雖然圖7(A)所示的實(shí)例包括有RAM 6、重寫程序區(qū)3以及閃爍存儲器區(qū)4(該閃爍存儲器區(qū)4含有3個塊,其每個塊都含有一個8k字節(jié)的數(shù)據(jù)區(qū)和一個1字節(jié)的標(biāo)志區(qū)),但是為了簡化程序的編制,也可按如圖7(B)所示的方式對該存儲區(qū)進(jìn)行映射,從而保證數(shù)據(jù)區(qū)在閃爍存儲器區(qū)4中的連續(xù)性。
圖8是顯示了標(biāo)志區(qū)2的結(jié)構(gòu)的示意圖。
閃爍EPROM或EPROM具有一個共性,即,寫入時未變成寫入值的位可通過在以后再次執(zhí)行寫入操作而得到改變。
例如,在閃爍EPROM或EPROM被設(shè)置成使其一個位被位擦除變?yōu)椤?”而被位寫入變?yōu)椤?”的情況下,可以先對其第0位寫入一次“1”,而以后再對剩余的位寫入“1”。但是,曾被寫入過一次“1”的位將不能被以后的寫入操作再轉(zhuǎn)變到“1”。
圖8中所示的實(shí)例利用了剛才所說的情況,即,它為標(biāo)志分配了1個字節(jié)作為一個寫入單位。在此標(biāo)志中,從BIT 7到BIT 0分別分配的是校驗(yàn)錯誤標(biāo)志、空白錯誤標(biāo)志、重寫結(jié)束標(biāo)志、校驗(yàn)結(jié)束標(biāo)志、寫入結(jié)束標(biāo)志、空白檢查結(jié)束標(biāo)志、擦除結(jié)束標(biāo)志和重寫開始標(biāo)志。
根據(jù)閃爍存儲器的這種單元結(jié)構(gòu),其單元會因?qū)懭氲膬?nèi)容而發(fā)生質(zhì)變。在這種情況下,由于較多次的重寫操作只能用于標(biāo)志區(qū),所以它將減少標(biāo)志區(qū)各單元的壽命。為了防止這種情況,可將標(biāo)志的權(quán)數(shù)分配進(jìn)如1個字節(jié)大小的寫單元中。
待被分配的標(biāo)志必須至少含有重寫開始標(biāo)志和重寫結(jié)束標(biāo)志,這樣才能實(shí)現(xiàn)本發(fā)明的基本目的。但是,也可對將被分配的標(biāo)志進(jìn)行選擇以保留更多的詳細(xì)歷史信息。這樣,在重寫中斷被檢測到之后當(dāng)寫操作被執(zhí)行時,就可通過從緊接于重寫被中斷的地方開始繼續(xù)執(zhí)行重寫操作,從而提高重寫操作的效率。
圖9是說明對圖8所示標(biāo)志區(qū)進(jìn)行重寫處理的操作的流程圖,以下將參考圖9說明重寫操作。在以下的說明中作了這樣的假設(shè),即,閃爍存儲器各單元的數(shù)值被擦除變?yōu)椤?”、被寫入變?yōu)椤?”。
參考圖9,在當(dāng)寫操作開始的時刻,標(biāo)志區(qū)具有一數(shù)值為“00111110”,該值是它在重寫被正常完成時的預(yù)期值,為了設(shè)置代表重寫操作開始的重寫開始標(biāo)志,流程對標(biāo)志區(qū)進(jìn)行寫入,從而將標(biāo)志區(qū)的數(shù)值改為“00111111”(步驟B1)。
對重寫開始標(biāo)志的設(shè)定使得當(dāng)前存儲在重寫程序區(qū)3中的程序與預(yù)期的程序不同。因此即使重寫操作在初始階段被中斷,也可通過上述的不同而檢測出重寫操作的中斷。
然后,流程將執(zhí)行對重寫區(qū)的擦除操作(步驟B2)。標(biāo)志區(qū)也因此而得到擦除。這樣,標(biāo)志區(qū)現(xiàn)在具有的數(shù)值為“00000000”,即,無特別指定的標(biāo)志區(qū)要被改變。
接下來,流程將設(shè)置代表擦除操作完成的擦除結(jié)束標(biāo)志(步驟B3),從而將標(biāo)志區(qū)的數(shù)值改變?yōu)椤?0000010”。
然后,流程將執(zhí)行對數(shù)據(jù)區(qū)的空白檢查,以確定擦除是否被完全執(zhí)行(步驟B4),接著流程將確定空白檢查的結(jié)果(步驟B5)。如果空白檢查發(fā)現(xiàn)一些不一致,則流程將設(shè)置空白出錯標(biāo)志(步驟B6)。隨后流程將再次執(zhí)行從上述擦除開始的操作。
如果空白檢查正常完成,則流程將設(shè)置空白檢查結(jié)束標(biāo)志(步驟B7),從而將標(biāo)志區(qū)的數(shù)值改變?yōu)椤?0000110”,之后,流程將連續(xù)執(zhí)行寫操作(步驟B8)。
當(dāng)寫操作完成后,流程將設(shè)置寫入結(jié)束標(biāo)志(步驟B9),從而將標(biāo)志區(qū)的數(shù)值改變?yōu)椤?0001110”,之后,流程將執(zhí)行校驗(yàn)操作以確認(rèn)寫操作是否已被正常完成(步驟B10)。
接下來,流程將確認(rèn)校驗(yàn)操作的結(jié)果(步驟B11),如果校驗(yàn)操作的結(jié)果確認(rèn)了寫入操作未被正常完成,則流程將設(shè)置校驗(yàn)出錯標(biāo)志(步驟B12)。隨后,寫操作將被再次執(zhí)行。
如果校驗(yàn)操作的結(jié)果證明寫入操作已被正常完成,則流程將設(shè)置校驗(yàn)結(jié)束標(biāo)志和重寫結(jié)束標(biāo)志(步驟B13、B14),以結(jié)束該重寫操作。
如上所述,在本實(shí)施例中,每當(dāng)一個重寫操作步驟被完成時,都有一個代表該步驟完成的歷史信息被記錄進(jìn)標(biāo)志區(qū)。因此,當(dāng)一個正常程序被啟動時,通過對閃爍存儲器區(qū)4中的標(biāo)志區(qū)進(jìn)行確認(rèn),就可檢測出重寫操作是否完成以及操作在哪個階段被中斷。
圖10是顯示了本發(fā)明第二個實(shí)施例的結(jié)構(gòu)的框圖。以下將參考圖10對本發(fā)明的第二個實(shí)施例進(jìn)行說明。
本實(shí)施例在重寫裝置5的結(jié)構(gòu)上與第一個實(shí)施例有所不同,它們的差別在于,在第一個實(shí)施例中,為了減少CPU 2的負(fù)擔(dān),它僅僅執(zhí)行重寫操作。本實(shí)施例中的各單元與圖4所示第一個實(shí)施例中的各單元類似,因此其類似部分用相同的標(biāo)號來表示。為了避免重復(fù),對類似部分的說明在此省略。
本實(shí)施例中的重寫裝置5包括重寫控制電路8,數(shù)據(jù)保持裝置9,重寫狀態(tài)保持裝置10以及多路轉(zhuǎn)換器(MPX)11。
重寫控制電路8控制著數(shù)據(jù)保持裝置9、重寫狀態(tài)保持裝置10以及多路轉(zhuǎn)換器11,從而有效地控制了閃爍存儲器區(qū)4中重寫區(qū)域的分配以及對閃爍存儲器區(qū)4所進(jìn)行的重寫操作(如寫入和擦除)。重寫控制電路8可輸出一個重寫目標(biāo)塊的地址信息以及用于該塊標(biāo)志的地址信息。
數(shù)據(jù)保持裝置9存儲有用于閃爍存儲器區(qū)4中的數(shù)據(jù)區(qū)的寫入數(shù)據(jù),而且它能夠在重寫控制電路8的控制下,將寫入數(shù)據(jù)輸出至多路轉(zhuǎn)換器11。
重寫狀態(tài)保持裝置10存儲有用于有關(guān)重寫操作不同操作階段的信息以及重寫目標(biāo)塊的信息。
多路轉(zhuǎn)換器11受重寫控制電路8的控制,以便在對數(shù)據(jù)區(qū)進(jìn)行寫入時,由多路轉(zhuǎn)換器11選中數(shù)據(jù)保持裝置9的輸出并將其輸出至閃爍存儲器區(qū)4,而在對標(biāo)志區(qū)進(jìn)行寫入時,由多路轉(zhuǎn)換器11選中重寫狀態(tài)保持裝置10的輸出值并將其輸出至閃爍存儲器區(qū)4。
從重寫狀態(tài)保持裝置10輸出到多路轉(zhuǎn)換器11的輸出值是這樣的,當(dāng)重寫操作的各階段被完成時,該值都會被寫入標(biāo)志區(qū),而且在每當(dāng)控制前進(jìn)到下一個操作階段時,它都會被重寫控制電路8更新。
如上所述,本實(shí)施例中對各標(biāo)志區(qū)所進(jìn)行的重寫是由重寫控制電路8根據(jù)存儲在重寫狀態(tài)保持裝置10中的地址信息內(nèi)容而執(zhí)行的。CPU 2執(zhí)行重寫操作的啟動并確定需寫入的內(nèi)容,但它不需要將標(biāo)志區(qū)分配至特定的地址。這樣就減少了CPU 2的負(fù)擔(dān),并允許CPU 2去執(zhí)行其它的處理。因此,其操作效率得到了提高。
圖10中,本實(shí)施例除上述各單元之外還含有標(biāo)志狀態(tài)報(bào)告裝置70。標(biāo)志狀態(tài)報(bào)告裝置70能夠在重寫完成后當(dāng)電源變?yōu)橛行r,對從標(biāo)志區(qū)讀出的值和預(yù)先存儲的標(biāo)志區(qū)中的預(yù)期值進(jìn)行比較,并能通過中斷來向CPU 2報(bào)告此閃爍存儲器區(qū)的重寫是否已正常完成。盡管上述比較操作一般是由CPU 2來執(zhí)行的,但剛才所述的這種結(jié)構(gòu)能夠消除由CPU 2執(zhí)行比較操作的必要性,此舉進(jìn)一步提高了操作效率。
由于本發(fā)明是按照以上方式構(gòu)成的,因此它達(dá)到了以下效果。
第一個效果,它防止了因重寫操作的中斷而導(dǎo)致的出錯情況,并且還防止了一系列的失效或致命錯誤。這是因?yàn)?,在對一閃爍存儲器區(qū)進(jìn)行重寫時,重寫操作的歷史信息被寫入了標(biāo)志區(qū),并且在閃爍存儲器區(qū)中的某一程序被執(zhí)行之前,只需通過參考各標(biāo)志,就可以快速且準(zhǔn)確地確認(rèn)出寫操作是否被正常完成。
第二個效果,由于重寫操作的歷史信息可在重寫操作的開始階段中被保留下來,所以在初始階段中產(chǎn)生的重寫操作的中斷(如擦除操作)也可被檢測出來。
第三個效果,由于代表操作完成的歷史信息可在重寫操作的各過程中被保留下來,所以當(dāng)在中斷后再次執(zhí)行重寫操作時,該重寫操作可從緊隨其曾被中斷的地方開始重新執(zhí)行。
第四個效果,因?yàn)閿?shù)據(jù)區(qū)被設(shè)置在連續(xù)的地址上,所以就可輕易地編制出一個程序。
另外,與傳統(tǒng)結(jié)構(gòu)中為執(zhí)行一程序需將其從閃爍存儲器傳送至RAM的情況相比,本發(fā)明還有一個效果,即消除了用于執(zhí)行程序的RAM所需的費(fèi)用,而且也減少了啟動一個正常操作程序所需的時間。
盡管采用了特定的術(shù)語對本發(fā)明的各實(shí)施例所作的說明,但這種說明僅起到了解釋性的目的。熟練人員應(yīng)該明白,任何對本發(fā)明所作的修改和變換都不會脫離其下述權(quán)利要求的精神或范圍。
權(quán)利要求
1.一種配有閃爍存儲器的微型計(jì)算機(jī),具有對存儲在所述閃爍存儲器中的程序進(jìn)行重寫的自編程功能,其特征在于包括重寫程序區(qū),其保存有一個程序,用于所述閃爍存儲器的重寫操作過程;以及控制器,它在當(dāng)存儲在外部存儲裝置或所述重寫程序區(qū)之中的重寫程序被寫入上述閃爍存儲器時,在所述閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū),并對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者對各階段是好還是壞進(jìn)行確認(rèn),并將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中。
2.如權(quán)利要求1所述的配有閃爍存儲器的微型計(jì)算機(jī),其特征在于所述閃爍存儲器含有多個塊,并且每個塊都是一個可擦寫單元且都含有一個數(shù)據(jù)區(qū)和一個標(biāo)志區(qū),而所述控制器則可將多個塊的數(shù)據(jù)區(qū)映射在連續(xù)地址上。
3.一種其配有閃爍存儲器的微型計(jì)算機(jī),具有對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能,其特征在于包括重寫程序區(qū),其存儲有一個程序,該程序用于所述閃爍存儲器的重寫操作過程;重寫裝置,它在當(dāng)存儲在外部存儲裝置或所述重寫程序區(qū)之中的重寫程序被寫入所述閃爍存儲器時,在上述閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū);控制器,它對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者確認(rèn)各階段是好還是壞,并通過上述重寫裝置將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中。
4.一種配有閃爍存儲器的微型計(jì)算機(jī),具有對存儲在所述閃爍存儲器中的程序進(jìn)行重寫的自編程功能,其特征在于包括重寫程序區(qū),其存儲有一個程序,該程序用于所述閃爍存儲器的重寫操作過程;重寫裝置,它在當(dāng)存儲在外部存儲裝置或所述重寫程序區(qū)之中的重寫程序被寫入所述閃爍存儲器時,在所述閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū);控制器,它對重寫操作各階段的完成情況進(jìn)行確認(rèn)、或者確認(rèn)各階段是好還是壞,并通過上述重寫裝置將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中;以及標(biāo)志狀態(tài)報(bào)告裝置,它在重寫操作完成后當(dāng)電源變?yōu)橛行r,對從上述標(biāo)志區(qū)讀出的數(shù)值和預(yù)先存儲的所述標(biāo)志區(qū)的預(yù)期值進(jìn)行比較,并將比較結(jié)果通知給上述控制器。
5.如權(quán)利要求3或4所述的配有閃爍存儲器的微型計(jì)算機(jī),其特征在于所述閃爍存儲器含有多個塊,并且每個塊都是一個可擦寫單元,且都含有一個數(shù)據(jù)區(qū)和一個標(biāo)志區(qū),而所述重寫裝置則可將多個塊的數(shù)據(jù)區(qū)映射在連續(xù)地址上。
6.一種用于將程序存儲入微型計(jì)算機(jī)的閃爍存儲器中的方法,該微型計(jì)算機(jī)配有閃爍存儲器,并具有能對存儲在閃爍存儲器中的程序進(jìn)行重寫的自編程功能,這種方法的特征在于它在重寫程序被寫入所述閃爍存儲器時,在所述閃爍存儲器中局部形成了多個標(biāo)志區(qū),而且還執(zhí)行了對重寫操作各階段完成情況的確認(rèn)或?qū)Ω麟A段好或壞的確認(rèn),之后還將確認(rèn)的結(jié)果記錄入各標(biāo)志區(qū)。
全文摘要
本發(fā)明提供一種配有閃爍存儲器并可自編程的微型計(jì)算機(jī)以及一種將程序存入閃爍存儲器的方法,可快速且準(zhǔn)確地檢測出因重寫中斷所致的寫錯誤。這種計(jì)算機(jī)包括:存儲用于閃爍存儲器重寫過程的程序的重寫程序區(qū);以及控制器,它在當(dāng)存儲在外部存儲裝置或上述重寫程序區(qū)之中的重寫程序被寫入閃爍存儲器時在閃爍存儲器內(nèi)局部形成多個標(biāo)志區(qū),并確認(rèn)重寫各階段的完成情況、或確認(rèn)各階段是好還是壞,以及將確認(rèn)結(jié)果記錄進(jìn)各標(biāo)志區(qū)中。
文檔編號G11C16/10GK1249463SQ99119769
公開日2000年4月5日 申請日期1999年9月28日 優(yōu)先權(quán)日1998年9月28日
發(fā)明者葉山雅洋 申請人:日本電氣株式會社