存儲(chǔ)器測(cè)試的目的是確認(rèn)在存儲(chǔ)設(shè)備中的每一個(gè)存儲(chǔ)位置都在工作。換一句話說(shuō),如果你把數(shù)50存儲(chǔ)在一個(gè)具體的地址,你希望可以找到存儲(chǔ)在那里的那個(gè)數(shù),直到另一個(gè)數(shù)寫(xiě)入。任何存儲(chǔ)器測(cè)試的基本方法是,往存儲(chǔ)器寫(xiě)入一些數(shù)據(jù),然后根據(jù)內(nèi)存設(shè)備的地址,校驗(yàn)讀回的數(shù)據(jù)。如果所有讀回的數(shù)據(jù)和那些寫(xiě)入的數(shù)據(jù)是一樣的,那么就可以說(shuō)存儲(chǔ)設(shè)備通過(guò)了測(cè)試。只有通過(guò)認(rèn)真選擇的一組數(shù)據(jù)你才可以確信通過(guò)的結(jié)果是有意義的。
當(dāng)然,像剛才描述的有儲(chǔ)器的測(cè)試不可避免地具有破壞性。在內(nèi)存測(cè)試過(guò)程中,你必須覆蓋它原先的內(nèi)容。因?yàn)橹貙?xiě)非易失性存儲(chǔ)器內(nèi)容通常來(lái)說(shuō)是不可行的,這一部分描述的測(cè)試通常只適用于ram 的測(cè)試。
一、普通的存儲(chǔ)器問(wèn)題
在學(xué)習(xí)具體的測(cè)試算法之前,你應(yīng)該了解可能遇到的各種存儲(chǔ)器問(wèn)題。在軟件工程師中一個(gè)普遍的誤解是,大部分的存儲(chǔ)器問(wèn)題發(fā)生在芯片的內(nèi)部。盡管這類(lèi)問(wèn)題一度是一個(gè)主要的問(wèn)題,但是它們?cè)谌找鏈p少。存儲(chǔ)設(shè)備的制造商們對(duì)于每一個(gè)批量的芯片都進(jìn)行了各種產(chǎn)品后期測(cè)試。因此,即使某一個(gè)批量有問(wèn)題,其中某個(gè)壞芯片進(jìn)人到你的系統(tǒng)的可能性是微乎其微的。
你可能遇到的一種類(lèi)型的存儲(chǔ)芯片問(wèn)題是災(zāi)難性的失效。這通常是在加工好之后芯片受到物理或者是電子損傷造成的。災(zāi)難性失效是少見(jiàn)的,通常影響芯片中的大部分。因?yàn)橐淮笃瑓^(qū)域受到影響,所以災(zāi)難性的失效當(dāng)然可以被合適的測(cè)試算法檢測(cè)到。
存儲(chǔ)器出問(wèn)題比較普遍的原因是電路板故障。典型的電路板故障有:
(1)在處理器與存儲(chǔ)設(shè)備之間的連線問(wèn)題;
(2)無(wú)存儲(chǔ)器芯片;
(3)存儲(chǔ)器芯片的不正確插人。
二、測(cè)試策略
最好有三個(gè)獨(dú)立的測(cè)試:數(shù)據(jù)總線的測(cè)試、地址總線的測(cè)試以及設(shè)備的測(cè)試。前面兩個(gè)測(cè)試針對(duì)電子連線的問(wèn)題以及芯片的不正確插入;第三個(gè)測(cè)試更傾向于檢測(cè)芯片的有無(wú)以及災(zāi)難性失效。作為一個(gè)意外的結(jié)果,設(shè)備的測(cè)試也可以發(fā)現(xiàn)控制總線的問(wèn)題,盡管它不能提供關(guān)于問(wèn)題來(lái)源的有用信息。
執(zhí)行這三個(gè)測(cè)試的順序是重要的。正確的順序是:首先進(jìn)行數(shù)據(jù)總線測(cè)試,接著是地址總線測(cè)試,最后是設(shè)備測(cè)試。那是因?yàn)榈刂房偩€測(cè)試假設(shè)數(shù)據(jù)總線在正常工作,除非數(shù)據(jù)總線和地址總線已知是正常的,否則設(shè)備測(cè)試便毫無(wú)意義。如果任何測(cè)試失敗,你都應(yīng)該和一個(gè)硬件工程師一起確定問(wèn)題的來(lái)源。通過(guò)查看測(cè)試失敗處的數(shù)據(jù)值或者地址,應(yīng)該能夠迅速地找出電路板上的問(wèn)題。
1.數(shù)據(jù)總線測(cè)試
我們首先要測(cè)試的就是數(shù)據(jù)總線。我們需要確定任何由處理器放置在數(shù)據(jù)總線上的值都被另一端的存儲(chǔ)設(shè)備正確接收。最明顯的測(cè)試方法就是寫(xiě)人所有可能的數(shù)據(jù)值并且驗(yàn)證存儲(chǔ)設(shè)備成功地存儲(chǔ)了每一個(gè)。然而,那并不是最有效率的測(cè)試方法。一個(gè)更快的測(cè)試方法是一次測(cè)試總線上的一位。如果每一個(gè)數(shù)據(jù)上可被設(shè)置成為 0 和1,而不受其他數(shù)據(jù)位的影響,那么數(shù)據(jù)總線就通過(guò)了測(cè)試。
2.地址總線測(cè)試
在確認(rèn)數(shù)據(jù)總線工作正常之后,你應(yīng)該接著測(cè)試地址總線。記住地址總線的問(wèn)題將導(dǎo)致存儲(chǔ)器位置的重疊。有很多可能重疊的地址。然而,不必要測(cè)試每一個(gè)可能的組合。你應(yīng)該努力在測(cè)試過(guò)程中分離每一個(gè)地址位。你只需要確認(rèn)每一個(gè)地址線的管腳都可以被設(shè)置成0和 1,而不影響其他的管腳。
3.設(shè)備測(cè)試
一旦你知道地址和數(shù)據(jù)總線是正確的,那么就有必要測(cè)試存儲(chǔ)設(shè)備本身的完整性。要確認(rèn)的是設(shè)備中的每一位都能夠保持住0和 1。這個(gè)測(cè)試實(shí)現(xiàn)起來(lái)十分簡(jiǎn)單,但是它花費(fèi)的時(shí)間比執(zhí)行前面兩項(xiàng)測(cè)試花費(fèi)的總時(shí)間還要長(zhǎng)。
對(duì)于一個(gè)完整的設(shè)備測(cè)試,你必須訪問(wèn)(讀和寫(xiě))每一個(gè)存儲(chǔ)位置兩次。你可以自由地選擇任何數(shù)據(jù)作為第一步測(cè)試的數(shù)據(jù),只要在進(jìn)行第二步測(cè)試的時(shí)候把這個(gè)值求反即可。因?yàn)榇嬖跊](méi)有存儲(chǔ)器芯片的可能性,所以最好選擇一組隨著地址變化(但是不等于地址)的數(shù)。