專利名稱:存儲器診斷裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對序列控制裝置等的存儲器的故障進行自動診 斷的存儲器診斷裝置。
背景技術(shù):
要求高可靠性的嵌入式系統(tǒng)系統(tǒng),例如緊急停止序列控制裝置, 要求最少一天進行一次存儲器診斷,所以需要高速且診斷精度高的存 儲器診斷方法。
作為存儲器(RAM)故障的一種存在耦合故障,§卩,在對某存 儲器單元進行寫入/讀取時,其他存儲器單元的數(shù)據(jù)值變化。作為該 耦合故障的診斷方法,例如具有Walkpath或Galpat( Galloping Pattern 測試)等。在Walkpath中,首先向作為測試對象的整個存儲器區(qū)域 統(tǒng)一寫入0,然后將某1位的目標存儲器單元反轉(zhuǎn)為1,測試其余存 儲器區(qū)域(背底)的數(shù)據(jù)值是否正確。然后,為了測試而對目標存儲 器單元再次進行讀取,并再次反轉(zhuǎn)。針對后續(xù)的所有存儲器單元重復(fù) 執(zhí)行上述流程。然后,向整個存儲器區(qū)域?qū)懭?,并重復(fù)同樣的流程。 這樣,在Walkpath中,在統(tǒng)一寫入數(shù)據(jù)的存儲器區(qū)域中插入1個反 轉(zhuǎn)要素,對其余所有單元的內(nèi)容是否正確進行校驗。在Galpat中, 與Walkpath不同,每次在讀取其余的存儲器單元中的1個后,對反 轉(zhuǎn)存儲器單元(目標存儲器單元)執(zhí)行測試讀取。
另外,作為其他現(xiàn)有的存儲器診斷方法,例如存在專利文獻l。 在專利文獻1中,在存儲器的地址55h和AAh中寫入測試數(shù)據(jù) AAAAh,在其他的地址中寫入測試數(shù)據(jù)5555h,然后從存儲器中順 序讀取數(shù)據(jù)。對于才地址55h或AAh中讀取的數(shù)據(jù),與測試數(shù)據(jù) AAAAh進行比較,對于從其他地址中讀取的數(shù)據(jù),與測試數(shù)據(jù)5555h 進行比較,在一致的情況下判斷為正常,在不一致的情況下判斷為異常。在專利文獻l中,例如在發(fā)生第7位固定為0的故障的情況下,
由于地址A Ah成為2 Ah ,所以向地址2 Ah覆蓋寫入測試數(shù)據(jù)A A A Ah , 在讀取地址2Ah的數(shù)據(jù)時,輸出數(shù)據(jù)AAAAh,與作為期待值的5555h 不一致,可以檢測出地址線的故障。
專利文獻1:專利第3570388號公報
發(fā)明內(nèi)容
但是,由于在專利文獻1中,沒有針對在由多位構(gòu)成的測試數(shù) 據(jù)內(nèi)的各位單元之間發(fā)生的耦合故障進行診斷,所以在診斷精度上存 在問題。另外,由于以地址值反轉(zhuǎn)的組為前提,所以每次的測試數(shù)據(jù) 長度必須小于或等于存儲器數(shù)據(jù)長度,無法將測試數(shù)據(jù)變長而進行處 理的高速化。
另外,在Walkpath或Galpat的方法中,可以檢測出哪些地址間 發(fā)生耦合故障,但由于必須重復(fù)向地址寫入測試模板和進行所有地址 的讀取測試,所以產(chǎn)生存儲器訪問次數(shù)增加,診斷時間變長的問題。 例如,如果存儲器大小為N位,則需要N的2次方的存儲器訪問, 所以如果存儲器大小大于或等于兆位,則診斷時間超過數(shù)十小時,因 而無法將Walkpath或Galpat的方法直接應(yīng)用在需要定期進行存儲器 診斷的上述序列器系統(tǒng)等中。
本發(fā)明就是鑒于上述問題而提出的,其目的在于得到一種存儲 器診斷裝置,其能夠在維持一定程度的診斷精度的同時進行高速的存 儲器故障診斷。
為了解決上述課題、實現(xiàn)目的,本發(fā)明是一種診斷存儲器的故 障的存儲器診斷裝置,其特征在于,具有塊內(nèi)測試單元,其在上述 存儲器的每個規(guī)定的塊中,針對該塊內(nèi)的各位而測試故障;以及塊間 測試單元,其測試上述存儲器中的各塊間的故障。
另外,本發(fā)明是一種診斷存儲器的故障的存儲器診斷裝置,其 特征在于,具有字內(nèi)測試單元,其在上述存儲器的每個字中,針對 該字內(nèi)的各位而測試故障;字間測試單元,其在上述存儲器的每個由 多個字構(gòu)成的局部字段中,針對局部字段內(nèi)的各字間測試故障;以及塊間測試單元,其測試上述存儲器中的局部字段之間的故障。 發(fā)明的效果
根據(jù)本發(fā)明,由于存儲器的故障診斷分為塊內(nèi)測試、塊間測試 的層次進行,所以雖然故障發(fā)生位置的確定變?yōu)橐宰譃閱挝?,但與
Walkpath或Galpat的方法相比,可以減少存儲器訪問次數(shù)、縮短診 斷時間。由此,可以在普通應(yīng)用程序的間歇中執(zhí)行存儲器診斷。
另外,根據(jù)本發(fā)明,由于存儲器故障診斷分為字內(nèi)測試、字間 測試、局部字段間測試的層次進行,所以雖然故障發(fā)生位置的確定變 為以局部字段為單位,但與現(xiàn)有方法相比,可以減少存儲器訪問次數(shù), 縮短診斷時間。由此,可以在普通應(yīng)用程序的間隙中執(zhí)行存儲器診斷。
圖l是表示本發(fā)明所涉及的存儲器診斷裝置的實施方式的框圖。 圖2是示意地表示實施方式1的存儲器診斷步驟的工序圖。 圖3是表示實施方式1的存儲器診斷的字內(nèi)測試步驟的流程圖。 圖4是表示實施方式1的存儲器診斷的字間測試步驟的流程圖。 圖5是實施方式1的存儲器診斷的示意圖。 圖6是示意地表示實施方式2的存儲器診斷步驟的工序圖。 圖7是表示實施方式2的存儲器診斷的局部字段間測試步驟的 流程圖。
圖8是實施方式2的存儲器診斷的示意圖。
具體實施例方式
下面,基于附圖詳細說明本發(fā)明所涉及的存儲器診斷裝置的實 施方式。另外,本發(fā)明并不限于該實施方式。 實施方式1
圖1示出用于實施本發(fā)明所涉及的存儲器診斷的結(jié)構(gòu)。在圖1 中,隨機訪問存儲器(RAM)的測試區(qū)域13及保留區(qū)域14通過總 線12與CPU 11連接。CPU 11執(zhí)行存儲在非易失性存儲器15中的系統(tǒng)控制用的應(yīng)用軟件。另外,在此情況下,在非易失性存儲器15 中存儲下述說明的存儲器診斷程序,CPU 11在存儲器診斷時,執(zhí)行
存儲在非易失性存儲器15中的存儲器診斷程序。CPU 11具有用于在 測試區(qū)域13中寫入測試數(shù)據(jù)的寄存器16。測試區(qū)域13和保留區(qū)域 14也可以是由同一存儲器上的不同區(qū)域構(gòu)成。
圖2示出實施方式1的存儲器診斷處理步驟。在實施方式1中, 分為字和整體這兩個層次對測試區(qū)域13進行診斷。g卩,在實施方式 1中,首先測試字內(nèi)的各位間的包括耦合故障在內(nèi)的故障(步驟 S100),然后測試字間的包括耦合故障在內(nèi)的故障(步驟SU0)。
首先,根據(jù)圖3說明字內(nèi)的各位間的耦合故障測試步驟。首先, 對于測試區(qū)域13的起始字,測試是否在該字包含的位間沒有耦合故 障。在執(zhí)行針對該起始字的存儲器診斷處理之前,將測試區(qū)域13的 起始字的存儲數(shù)據(jù)預(yù)先備份至保留區(qū)域14中。然后,以0將寄存器 16初始化,然后使最低位為1(步驟S200),將該寄存器值(0000…001) 寫入測試區(qū)域13的起始字中(步驟S210),讀取該字(在此情況下 為起始字),確認讀取的數(shù)據(jù)值是否與寄存器值相同(步驟S220)。 然后將寄存器16移位(步驟S240),將移位后的寄存器值(0000…010) 寫入該起始字中后讀取(步驟S210),確認讀取的數(shù)據(jù)值是否與寄 存器值相同(步驟S220)。重復(fù)上述診斷直至1移動至最高位(步 驟S230)。由于如果寄存器值與讀取的存儲器字值不同,則在該存 儲器字中存在耦合故障,所以報告錯誤(步驟S295)。上述診斷可 以持續(xù)進行,也可以中斷。
然后,以1將寄存器16初始化,使最低位為0 (步驟S250), 將該寄存器值(1111…110)寫入測試區(qū)域13的起始字中(步驟S260), 讀取該字(在此情況下為起始字),確認讀取的數(shù)據(jù)值是否與寄存器 值相同(步驟S270)。然后將寄存器16移位(步驟S290),將移 位后的寄存器值(1111…101)寫入該起始字中后讀取(步驟S260), 確認讀取的數(shù)據(jù)值是否與寄存器值相同(步驟S270)。重復(fù)上述診 斷直至O移動至最高位(步驟S280)。由于如果寄存器值與讀取的 存儲器字值不同,則在該存儲器字中存在耦合故障,所以報告錯誤(步驟S295)。如果針對該起始字的診斷完畢,則從保留區(qū)域14向測試 區(qū)域13恢復(fù)起始字的數(shù)據(jù)。通過上述的確認,可以測試起始字的內(nèi) 部是否沒有位間的耦合故障。
如上述所示,針對起始字的字內(nèi)測試完畢,接下來可以進行將 起始字作為被測試字進行后述字間測試,但在本實施方式的情況下, 是針對測試區(qū)域13中的所有字與上述相同地執(zhí)行字內(nèi)測試。
在圖3的說明中,字內(nèi)測試從最低位開始進行,但也可以將字 內(nèi)測試從最高位開始進行。另外,也可以首先以1將字內(nèi)整體初始化, 然后以O(shè)將字內(nèi)整體初始化而執(zhí)行字內(nèi)測試。并且,也可以通過按照 AAAAh或5555h等特定模板來初始化被測試字,針對移位后的多個 特定模板,進行將該特定模板和從字中讀取的數(shù)據(jù)進行比較的處理, 從而進行字內(nèi)測試??偠灾灰梢源_認在字內(nèi)的各位上寫入0 和1,不會影響到其他位即可。
這樣,如果針對所有字的字內(nèi)測試完畢,則接著執(zhí)行字間測試, 其測試在測試區(qū)域13的某一個字和其他字之間是否沒有耦合故障。 根據(jù)圖4說明字間測試步驟。在執(zhí)行該字間測試之前,將測試區(qū)域 13的存儲數(shù)據(jù)復(fù)制至保留區(qū)域14中。
首先,以0將測試區(qū)域13的整體初始化。然后向進行了字內(nèi)測 試的1個被測試字的所有位上寫入1 (步驟S300),順序讀取測試 區(qū)域13的其他字的存儲數(shù)據(jù),確認讀取的數(shù)據(jù)值全部為0 (步驟 S310 S330)。由于在讀取的數(shù)據(jù)值存在1的情況下,在數(shù)據(jù)值中 含有1的字和被測試字之間存在耦合故障,所以報告錯誤(步驟 S380)。
然后,以1將測試區(qū)域13整體初始化,隨后向上述被測試字的 所有位上寫入0 (步驟S340),順序讀取測試區(qū)域13的其他字的存 儲數(shù)據(jù),確認讀取的數(shù)據(jù)值全部為1 (步驟S350 S370)。由于在 讀取的數(shù)據(jù)值存在0的情況下,在數(shù)據(jù)值中含有0的字和被測試字之 間存在耦合故障,所以報告錯誤(步驟S380)。通過上述處理,可 以診斷1個被測試字和其他字之間沒有耦合故障。
接下來,以下一地址的字作為被測試字而重復(fù)相同的測試。通過從測試區(qū)域13的起始字按順序?qū)θ孔诌M行上述字間測試,可以 進行測試區(qū)域13整體的診斷。如果字間測試完畢,則從保留區(qū)域14
向測試區(qū)域13恢復(fù)存儲器值。然后,使CPU ll重新開始進行作為
嵌入式系統(tǒng)的動作。
圖5示意地示出上述實施方式1的存儲器診斷步驟。首先,使 用1移位和0移位這2種移位模板,從起始字至最終字執(zhí)行各字內(nèi)部 的位間測試。然后,以O(shè)將測試區(qū)域整體初始化,同時在被測試字的 所有位上寫入l,進行被測試字和其他字之間的耦合故障的測試,然 后以l將測試區(qū)域整體初始化,同時在被測試字的所有位上寫入O, 進行被測試字和其他字之間的耦合故障的測試。針對所有字重復(fù)進行 上述處理。
如果測試區(qū)域13的存儲器大小為N位,則根據(jù)現(xiàn)有的Walkpath 或Galpat的方法,為了診斷N位的測試區(qū)域,需要>^的存儲器訪問 次數(shù)。如果使1個字為L位,則在實施方式l的方法中,由于字內(nèi) 測試需要L2x (N/L)次,字間測試需要(N/L) 2次,所以訪問 次數(shù)成為l2x (N/l) + (N/l) 2次。在N^l2的情況下,實施 方式1的方法可以實現(xiàn)大約L倍的高速化。
另外,在上述說明中,首先針對所有的字執(zhí)行字內(nèi)測試,結(jié)束 后再針對所有的字執(zhí)行字間測試,但也可以每次針對1個字交替進行 字內(nèi)測試和字間測試,s卩,在1個字的字內(nèi)測試結(jié)束后,將該字內(nèi)測 試完畢的字作為被測試字而進行字間測試,然后進行下一個字的字內(nèi) 測試,將該字內(nèi)測試結(jié)束后的下一個字作為被測試字執(zhí)行字間測試。 另外,也可以每次針對多個字交替進行字內(nèi)測試和字間測試,即,順 序連續(xù)進行規(guī)定數(shù)量的字(例如8個字)的字內(nèi)測試,然后針對這些 字內(nèi)測試完畢的多個字順序連續(xù)進行字間測試,隨后順序連續(xù)進行下 一規(guī)定數(shù)量的字(例如8個字)的字內(nèi)測試,然后針對這些字內(nèi)測試 完畢的多個字順序連續(xù)進行字間測試。另外,在字間測試中,只要是
已經(jīng)進行了字內(nèi)測試的字,就能夠以任意順序選擇被測試字。另外, 也可以在字間測試時,將被測試字依次設(shè)定為從起始字至最終字的所 有字,并執(zhí)行圖4的步驟S300 S330所示的測試,使被測試字為全1,同時使其他字為全0,然后,將被測試字依次設(shè)定為從起始字至
最終字的所有字,并執(zhí)行圖4的步驟S340 S370所示的測試,使被 測試字為全O,同時使其他字為全l。
另外,也可以選擇任意的測試模板作為初始化模板和被測試字 的測試模板。但是,由于在初始化值和被測試字的測試模板這兩者中 都為l或都為O時,在位間產(chǎn)生耦合故障的情況下,會產(chǎn)生漏檢,所 以初始化模板和被測試字的測試模板,必須采用例如AAAAh和 5555h這樣彼此間位值反轉(zhuǎn)的關(guān)系的模板。
另外,在上述內(nèi)容中,在測試區(qū)域13的測試完畢之前,CPU 11 不進行診斷之外的處理。這是由于CPU ll用于進行處理的存儲器(測 試區(qū)域13)中填入了診斷數(shù)據(jù)。但是,在CPU 11要進行診斷之外的 處理,例如處理嵌入式系統(tǒng)的應(yīng)用程序的定時中,如果將表示在規(guī)定 的存儲器診斷序列中存儲器診斷完成至哪一個序列的中斷序列信息, 記錄在保留區(qū)域14或非易失性區(qū)域15中,則可以在從保留區(qū)域14 向測試區(qū)域13復(fù)制數(shù)據(jù)而使CPU 11執(zhí)行診斷之外的處理后,再次 從測試區(qū)域13向保留區(qū)域14復(fù)制數(shù)據(jù),參照中斷序列信息重新開始 診斷。
例如,在每次針對1個字交替進行字內(nèi)測試和字間測試的情況 下,CPU 11在進行診斷之外的處理之前,將表示被測試字從起始位 置完成至何處的完成字信息記錄在保留區(qū)域14或非易失性區(qū)域15 中。然后,CPU 11從保留區(qū)域14向測試區(qū)域13復(fù)制數(shù)據(jù),進行診 斷之外的處理。在CPU 11重新開始存儲器診斷的情況下,從測試區(qū) 域13向保留區(qū)域14復(fù)制數(shù)據(jù),從記錄的完成字的下一字開始作為被 測試字重新開始測試。根據(jù)上述處理,由于能夠以時分方式進行存儲 器診斷,所以可以在應(yīng)用程序處理的間隙進行存儲器診斷,不會延誤 應(yīng)用程序處理。
另外,也可以首先將測試區(qū)域13復(fù)制至保留區(qū)域14,然后使 CPU 11在進行應(yīng)用程序處理時訪問保留區(qū)域14而進行處理,在存儲 器診斷時訪問測試區(qū)域13。如果存儲器診斷完成,則將保留區(qū)域14 復(fù)制至測試區(qū)域13,切換測試區(qū)域13和保留區(qū)域14的地址。如果如上述進行,則不需要在以時分方式進行上述存儲器診斷時進行測試 區(qū)域13 —保留區(qū)域14之間的復(fù)制,因此與上述方式相比能夠進一步 實現(xiàn)高速化。
這樣,根據(jù)實施方式1,由于存儲器的耦合故障診斷分為字內(nèi)測 試、字間測試的層次進行,所以雖然故障發(fā)生位置的確定變?yōu)橐宰譃?單位(即,在本方式中無法檢測跨越不同字的耦合故障),但與
Walkpath或Galpat的方法相比,可以減少存儲器訪問次數(shù),縮短診 斷時間。由此,可以在嵌入式系統(tǒng)的應(yīng)用程序的間隙執(zhí)行存儲器診斷。 另外,通過在將診斷暫時中斷時,記錄字間測試完成的字地址,在診 斷重新開始時從該地址重新執(zhí)行,從而能夠以時分方式進行存儲器診 斷。
另外,根據(jù)上述實施方式1,以字為單位迸行字內(nèi)測試及字間測 試,但也能夠以任意的塊單位進行塊內(nèi)測試及塊間測試。作為塊的單 位,例如為具有1個字、與多個字對應(yīng)的存儲器量即后述的局部字段。
實施方式2
下面,使用圖6 圖8等說明本發(fā)明的實施方式2。圖6示出實 施方式2的存儲器診斷處理步驟。在實施方式2中,將存儲器分為字、 局部字段(array)及整體這三個層次進行診斷。所謂局部字段是指 與多個字對應(yīng)的存儲器量。即,在實施方式2中,首先測試字內(nèi)的各 位間的包括耦合故障在內(nèi)的故障(步驟S400),然后測試局部字段 內(nèi)的字間的包括耦合故障在內(nèi)的故障(步驟S410),然后測試局部 字段間的包括耦合故障在內(nèi)的故障(步驟S420)。
在執(zhí)行該字間測試之前,將測試區(qū)域13的起始局部字段的存儲 數(shù)據(jù)復(fù)制至保留區(qū)域14。首先,對于測試區(qū)域13的起始局部字段的 起始字,與上述的圖3所示的步驟相同地進行字內(nèi)測試。如果該字內(nèi) 測試正常,則與上述圖4所示的步驟相同,將已測試的字作為被測試 字在局部字段內(nèi)進行字間測試,以測試在起始局部字段中,己測試的 字(在此情況下為起始字)和包括該字的局部字段中的其他字之間是 否沒有耦合故障。然后,針對測試區(qū)域13的起始局部字段中的起始字的下一字, 與上述圖3所示的步驟相同地進行字內(nèi)測試。如果該字內(nèi)測試正常, 則與上述圖4所示的步驟相同,將己測試的字作為被測試字在局部字 段內(nèi)進行字間測試,以測試在起始局部字段中,已測試的字(在此情 況下為起始字的下一字)和包括該字的局部字段中的其他字之間是否 沒有耦合故障。接下來,相同地對起始局部字段內(nèi)的各字進行字內(nèi)測 試及字間測試。
然后,進行局部字段間測試,針對已測試的局部字段(在此情 況下為起始局部字段)和其他局部字段之間是否沒有耦合故障進行測 試。根據(jù)圖7說明局部字段間測試步驟。在執(zhí)行該局部字段間測試之
前,將測試區(qū)域13的存儲數(shù)據(jù)復(fù)制至保留區(qū)域14中。
首先,以0將測試區(qū)域13的整體初始化,然后將已進行局部字 段內(nèi)測試的1個局部字段作為被測試局部字段,向該被測試局部字段 的所有位寫入1 (步驟S500)。然后順序讀取測試區(qū)域13中的被測 試局部字段之外的局部字段的存儲數(shù)據(jù),確認讀取的數(shù)據(jù)值全部為0 (步驟S510 S530)。在讀取的數(shù)據(jù)值存在1的情況下,在數(shù)據(jù)值 中包括1的局部字段和被測試局部字段之間存在耦合故障,所以報告 錯誤(步驟S580)。
然后,以1將測試區(qū)域13的整體初始化,然后向上述被測試局 部字段的所有位寫入0 (步驟S540),順序讀取測試區(qū)域13的被測 試局部字段之外的局部字段的存儲數(shù)據(jù),確認讀取的數(shù)據(jù)值全部為1 (步驟S550 570)。在讀取的數(shù)據(jù)值存在0的情況下,在數(shù)據(jù)值中 包括0的局部字段和被測試局部字段之間存在耦合故障,所以報告錯 誤(步驟S580)。通過上述處理,可以診斷在1個被測試局部字段 和其他局部字段之間沒有耦合故障。
然后,針對下一個局部字段,與上述相同地進行字內(nèi)測試及字 間測試,然后將該局部字段作為被測試局部字段,進行上述局部字段 間測試。通過針對測試區(qū)域13內(nèi)的所有局部字段順序執(zhí)行上述處理, 可以針對測試區(qū)域13的整個區(qū)域進行耦合故障診斷。這樣,如果整 個存儲器的測試完畢,則從保留區(qū)域14向測試區(qū)域13恢復(fù)存儲器值。然后,CPU 11重新開始作為嵌入式系統(tǒng)的動作。
圖8示意地示出上述實施方式2的存儲器診斷步驟。首先,對 起始局部字段,對各字進行字內(nèi)測試,然后對該局部字段進行字間測 試。然后將測試區(qū)域整體初始化,進行局部字段間測試。對測試區(qū)域 的所有局部字段,重復(fù)字內(nèi)測試、字間測試、局部字段間測試,由此 完成整個測試區(qū)域的測試。
假設(shè)測試區(qū)域13由N個M字的局部字段構(gòu)成。如果使用 Walkpath或Galpat的方法,則在診斷MN個字的測試區(qū)域時,在字 內(nèi)測試之外還需要(MXN) 2的存儲器訪問次數(shù)。如果是實施方式2 的方法,則在局部字段的字間測試中為NX (M2)次,在局部字段 間測試中為NX (NM)次,存儲器訪問次數(shù)共計為NX (M2) +N X (NM)次。如果在這里使M = N= 1000,即為l兆字的存儲器, 則實施方式2的方式與現(xiàn)有的方式相比,存儲器訪問次數(shù)為千分之
另外,在上述說明中,在1個局部字段內(nèi)交替進行字內(nèi)測試和 字間測試,但也可以在1個局部字段內(nèi),完成針對所有字的字內(nèi)測試 后,對各字執(zhí)行字間測試。另外,也可以在l個局部字段內(nèi),每次針 對多個字交替進行字內(nèi)測試和字間測試。另外,在字間測試中,只要 是已進行字內(nèi)測試的字,就能夠以任何順序選擇被測試字。也可以在 進行1個局部字段內(nèi)的字間測試時,將被測試字依次設(shè)定為1個局部 字段內(nèi)的起始字至最終字的所有字,并執(zhí)行圖4的步驟S300 S330 所示的測試,使被測試字為全l,同時使其他字為全0,然后,將被 測試字依次設(shè)定為1個局部字段內(nèi)的起始字至最終字的所有字,并執(zhí) 行圖4的步驟S340 S370所示的測試,使被測試字為全0,同時使 其他字為全1。
另外,也可以首先對測試區(qū)域內(nèi)的所有字執(zhí)行字內(nèi)測試,然后 執(zhí)行各局部字段內(nèi)的字間測試,隨后執(zhí)行局部字段間測試。另外,在 局部字段間測試中,只要是已進行字間測試的局部字段,就能夠以任 意順序選擇被測試局部字段。
另外,也可以選擇任意的測試模板作為初始化模板和被測試字的測試模板。但是,由于在初始化值和被測試字的測試模板這兩者中 都為l或都為0時,在位間產(chǎn)生耦合故障的情況下,會產(chǎn)生漏檢,所
以初始化模板和被測試字的測試模板,必須采用例如AAAAh和 5555h這樣彼此間位值反轉(zhuǎn)的關(guān)系的模板。相同地,初始化模板及被 測試局部字段的測試模板也可以選擇任意的測試模板。在此情況下, 也必須采用具有彼此間位值反轉(zhuǎn)的關(guān)系的模板。
另外,在實施方式2中,在CPU 11要進行診斷之外的處理,例 如處理嵌入式系統(tǒng)的應(yīng)用程序的定時中,如果將表示在規(guī)定的存儲器 診斷序列中存儲器診斷完成至哪一個序列的中斷序列信息,記錄在保 留區(qū)域14或非易失性區(qū)域15中,則可以在從保留區(qū)域14向測試區(qū) 域13復(fù)制數(shù)據(jù)而使CPU 11執(zhí)行診斷之外的處理后,再次從測試區(qū) 域13向保留區(qū)域14復(fù)制數(shù)據(jù),參照中斷序列信息重新開始診斷。
例如,CPU 11在進行診斷之外的處理之前,將表示被測試字從 起始位置完成至何處的完成字信息記錄在保留區(qū)域14或非易失性區(qū) 域15中。然后,CPU 11從保留區(qū)域14向測試區(qū)域13復(fù)制數(shù)據(jù),進 行診斷之外的處理。在CPU 11重新開始存儲器診斷的情況下,從測 試區(qū)域13向保留區(qū)域14復(fù)制數(shù)據(jù),從記錄的完成字的下一字開始作 為被測試字重新開始測試。也可以不記錄已完成字間測試的字,而是 記錄已完成局部字段間測試的局部字段地址。根據(jù)上述處理,由于能 夠以時分方式進行存儲器診斷,所以可以在應(yīng)用程序處理的間隙進行 存儲器診斷,不會延誤應(yīng)用程序處理。
另外,也可以首先將測試區(qū)域13復(fù)制至保留區(qū)域14,然后使 CPU 11在進行應(yīng)用程序處理時訪問保留區(qū)域14而進行處理,在存儲 器診斷時訪問測試區(qū)域13。如果存儲器診斷完成,則將保留區(qū)域14 復(fù)制至測試區(qū)域13,切換測試區(qū)域13和保留區(qū)域14的地址。如果 如上述進行,則不需要在以時分方式進行上述存儲器診斷時進行測試 區(qū)域13 —保留區(qū)域14之間的復(fù)制,因此與上述方式相比能夠進一步 實現(xiàn)高速化。
這樣,根據(jù)實施方式2,由于存儲器的耦合故障診斷分為字內(nèi)測 試、字間測試、局部字段間測試的層次進行,所以雖然故障發(fā)生位置的確定變?yōu)橐跃植孔侄螢閱挝?即,在本方式中無法檢測跨越不同局 部字段的耦合故障的位置),但與現(xiàn)有方法相比,可以減少存儲器訪 問次數(shù),縮短診斷時間。由此,可以在嵌入式系統(tǒng)的應(yīng)用程序的間隙 執(zhí)行存儲器診斷。另外,通過在將診斷暫時中斷時,記錄己完成字間 測試的字地址、或已完成局部字段間測試的地址,在診斷重新開始時 從該地址重新執(zhí)行,從而能夠以時分方式進行存儲器診斷。
工業(yè)實用性
如上所示,本發(fā)明所涉及的存儲器診斷裝置,適用于要求高可 靠性的嵌入式系統(tǒng),例如最少一天進行一次存儲器診斷的緊急停止序 列控制裝置的存儲器診斷中。
權(quán)利要求
1.一種存儲器診斷裝置,其診斷存儲器的故障,其特征在于,具有塊內(nèi)測試單元,其在上述存儲器的每個規(guī)定的塊中,針對該塊內(nèi)的各位而測試故障;以及塊間測試單元,其測試上述存儲器中的各塊間的故障。
2. 根據(jù)權(quán)利要求1所述的存儲器診斷裝置,其特征在于, 塊內(nèi)測試單元在使測試模板變化的同時重復(fù)執(zhí)行下述處理,艮口,向該塊中寫入規(guī)定的測試模板后,將從該塊讀取的數(shù)據(jù)和上述測試模 板進行比較,上述塊間測試單元在按順序改變將要被寫入反轉(zhuǎn)測試模板的塊 的同時重復(fù)執(zhí)行下述處理,即,向所有塊中寫入規(guī)定的第1測試模板, 并且向1個塊中寫入反轉(zhuǎn)測試模板,然后針對除了被寫入反轉(zhuǎn)測試模 板的塊之外的塊,將從該塊讀取的數(shù)據(jù)和上述第1測試模板進行比 較,其中,上述反轉(zhuǎn)測試模板是通過將上述第1測試模板反轉(zhuǎn)而獲得 的。
3. 根據(jù)權(quán)利要求1或2所述的存儲器診斷裝置,其特征在于, 上述塊為1個字。
4. 根據(jù)權(quán)利要求1或2所述的存儲器診斷裝置,其特征在于, 上述塊為多個字。
5. —種存儲器診斷裝置,其診斷存儲器的故障, 其特征在于,具有字內(nèi)測試單元,其在上述存儲器的每個字中,針對該字內(nèi)的各 位而測試故障;字間測試單元,其在上述存儲器的每個由多個字構(gòu)成的局部字段中,針對局部字段內(nèi)的各字間測試故障;以及塊間測試單元,其測試上述存儲器中局部字段間的故障。
6.根據(jù)權(quán)利要求5所述的存儲器診斷裝置,其特征在于,字內(nèi)測試單元在使測試模板變化的同時重復(fù)執(zhí)行下述處理,艮p, 向該字中寫入規(guī)定的測試模板后,將從該字讀取的數(shù)據(jù)和上述測試模板進行比較,上述字間測試單元在按順序改變將要被寫入反轉(zhuǎn)第1測試模板 的字的同時重復(fù)執(zhí)行下述處理,即,向1個局部字段中寫入規(guī)定的第 l測試模板,并且向該局部字段內(nèi)的l個字中寫入反轉(zhuǎn)第l測試模板, 然后針對除了被寫入反轉(zhuǎn)第1測試模板的字之外的字,將從該字讀取 的數(shù)據(jù)和上述第1測試模板進行比較,其中,上述反轉(zhuǎn)第1測試模板 是通過將上述第1測試模板反轉(zhuǎn)而獲得的,上述局部字段間測試單元在按順序改變將要被寫入反轉(zhuǎn)第2測 試模板的局部字段的同時重復(fù)執(zhí)行下述處理,即,向存儲器中寫入規(guī) 定的第2測試模板,并且向該存儲器內(nèi)的1個局部字段中寫入反轉(zhuǎn)第 2測試模板,然后針對除了被寫入反轉(zhuǎn)第2測試模板的局部字段之外 的局部字段,將從該局部字段讀取的數(shù)據(jù)和上述第2測試模板進行比 較,其中,上述反轉(zhuǎn)第2測試模板是通過將上述第2測試模板反轉(zhuǎn)而 獲得的。
全文摘要
本發(fā)明提供一種存儲器診斷裝置,其能夠在維持一定程度的診斷精度的同時進行高速的耦合故障診斷。該存儲器診斷裝置具有字內(nèi)測試單元,其在存儲器的每個字中,針對該字內(nèi)的各位而測試耦合故障;字間測試單元,其在存儲器的每個由多個字構(gòu)成的局部字段中,針對局部字段內(nèi)的各字間測試耦合故障;以及塊間測試單元,其測試存儲器中的局部字段間的耦合故障。
文檔編號G11C29/56GK101310343SQ200680042518
公開日2008年11月19日 申請日期2006年9月20日 優(yōu)先權(quán)日2005年11月14日
發(fā)明者石岡卓也, 神余浩夫 申請人:三菱電機株式會社