ROM和RAM測試總結

2021-04-13 00:15:25 字數 2972 閱讀 6914

在硬體系統出廠前要進行產品測試;在嵌入式系統工作之前,一般也要進行自檢,其中rom和ram檢測必不可少,可是有不少人對於測試目的、原因和方法存在錯誤理解。

為什麼要測試rom和ram,怎麼測試呢?普遍的看法是:由於擔心rom和ram晶元損壞,在出廠和使用前應該校驗這兩種晶元的好壞。測試ram的方法是寫讀各個記憶體單元,檢查是否能夠正確寫入;測試rom的方法是累加各儲存單元數值並與校驗和比較。這種認識不能說錯,但有些膚淺,照此編出的測試程式不完備。一般來說,rom和ram晶元本身不大會被損壞,用到次品的概率也比較小,真正出問題的,大都是其他硬體部分,因此,測試rom和ram往往是醉翁之意不在酒。

rom測試

測試rom的真正目的是保證程式完整性。

嵌入式軟體和啟動**存放在rom裡,不能保證長期穩定可靠,因為硬體注定是不可靠的。以flash rom為例,它會由於以下兩種主要原因導致程式揮發:

1。受到輻射。本身工作在輻射環境裡/運輸過程中受到輻射(如過海關時被x光機檢查)。

2。長時間存放導致儲存失效,某些0、1位自行翻轉。

無論如何,在硬體上存放的程式都是不可靠的。如果完全不能執行,那到也不會造成太大的損失。怕就怕程式可以執行,但某些關鍵資料/關鍵**段被破壞,引發致命錯誤。為此,必須在程式正常工作前,在軟體層面上保證所執行的程式100%沒有被破壞,保證現在要執行的程式就是當初寫入的。

保證程式完整性的方法很多,例如對全部程式進行crc校驗(-16和-32)/累加和校驗(移位累加),只要能在數學上確保出錯概率極低,工程上就可以認為程式完整。

程式完整性測試通過,捎帶著也就證明了rom沒有被損壞。即測試rom是否損壞只是測試的副產品,不是主要目的。

ram測試

測試ram的真正目的是保證硬體系統的可靠性。

ram真的是太不容易壞了,我至今還沒有看見過一起因為ram損壞導致的系統不正常現象。不過大部分問題卻可以通過ram測試反映出來。仔細想想,當硬體被生產出來/被插到背板上究竟會發生什麼錯誤呢!是不是感到自己做的板子出問題的可能性更大!請考慮如下幾點:

1。生產工藝不過關,過孔打歪了,與臨近訊號線距離不滿足線規甚至打在了線上。

2。由於搭錫引起的訊號線粘連。

3。虛焊/漏焊引起的接觸不良。

4。不按規程操作,把手印兒印在了高頻線上。

5。板子髒了也不吹,覆蓋了一層灰塵(內含金屬微粒)。

......

這些現象比較有趣,試舉幾例:

1。位址線a0和a1粘連。讀出***00、***01、***10三個位元組的資料完全一樣。

2。資料線d0和d1粘連。d0和d1只要有乙個為0,那麼兩條線都為0。

3。接觸不良。時好時壞。

4。器件表面處理不乾淨,有助焊劑殘留。低速訪問正常,大負荷高速訪問頻繁宕機。

總之,我們做的板子在生產中和使用中都會有出錯機會,所以出廠前必須測試,使用前必須自檢。(當然如果你做的不是實際產品而是實驗室樣品的話,可以簡化步驟。)

我總結的方法是這樣的:(如測試乙個ffh位元組的ram)

首先,測試位址線,

1。'0'滑動,隨機選擇乙個數如55、aa之類,依次寫到feh、fdh、fbh、f7h、efh、dfh、bfh、7fh位址單元裡去,把位址寫成二進位制數,可以看到位元0在位址匯流排上從低到高滑動,謂之'0'滑動。目的是測試這些位址線在依次變0時是否穩定正常。當每一根線由1變0,會產生下衝,如果下衝控制不好,在高頻時會引起錯誤。單板上位址線不一定一樣長,下衝也就不會完全一樣,因此,每一根線都單獨測一下下衝效能。

2。'1'滑動,隨機選擇乙個數如55、aa之類,依次寫到1h、2h、4h、8h、10h、20h、40h、80h位址單元裡去,把位址寫成二進位制數,可以看到位元1在位址匯流排上從低到高滑動,謂之'1'滑動。,目的是測試這些位址線在依次變1時是否穩定正常。當每一根線由0變1,會產生上衝,如果上衝控制不好,在高頻時會引起錯誤。單板上位址線不一定一樣長,上衝也就不會完全一樣,因此,每一根線都單獨測一下上衝效能。上衝和下衝是不同的指標,要分別測一下。

3。"全0變全1",隨機選擇乙個數如55、aa之類,寫到ffh單元,再寫到00h單元,然後寫到ffh單元。把位址寫成二進位制數,可以看到位址線從全'0'變到全'1'。由訊號處理理論知,在電壓階躍跳變時包含無限寬頻譜,其中高頻部分對外產生輻射,這些輻射訊號是干擾源,對臨近線路產生較大影響。位址線一般集束佈線,同時跳變會引起最大干擾。位址線從全'0'變到全'1',干擾、上衝、扇出電流影響最大。

6。可選"全0全1連續高速變化"。目的是模擬最惡劣情況(大扇出電流、強干擾、上/下衝)。

然後,測試資料線,(原理與測試位址線相同,1、2兩步順帶測試了資料線粘連)

1。'0'滑動,向某一固定位址依次寫入feh、fdh、fbh、f7h、efh、dfh、bfh、7fh並讀出判斷。

2。'1'滑動,向某一固定位址依次寫入1h、2h、4h、8h、10h、20h、40h、80h並讀出判斷。

3。"全0變全1",所有單元置1(先清零再置1並讀出判斷)。

4。"全1變全0",所有單元清零(清零並讀出判斷)。

5。可選"全0全1連續高速變化"。向某一單元高速交替寫入若干全'0'和全'1',最後以全'0'結束。

至此,ram測試完畢,同時全部儲存單元清零。

對於出廠檢測程式,有較大發揮餘地,如可以加入錯誤定位**,自動指出錯誤原因和錯誤位置。

每一塊單板的高頻特性都會因為生產工藝誤差(製板、材料、焊接、組裝等)和使用情況而各不相同。同一塊板子的高頻特性在不同情況下表現也不相同。

綜上所述,除了測試ram好壞,大部分**測的是單板硬體可靠性。

如果不關心高頻特性,用原來的測試方法就差不多了(如果測試資料沒選好,可能測不出資料線粘連),但應該認識到,測試ram的主要不是ram本身的好壞,而是連線ram的單板硬體和線路。

以上是我實際工作經驗的一些總結,寫出來與大家交流,如有不對之處懇請指正!

源程式(偽**)

//test rom

testrom()

if(sum==checksum) printf("rom test ok!/n";

else printf("rom test error!/n";

}//test ram

testram()

RAM和ROM是什麼?RAM和ROM其實都是記憶體

ram是隨機訪問儲存器 random access memory 是計算機內部儲存器中的一種,也是其中最重要的,計算機和手機中一般把其叫做執行記憶體,它的速度要比硬碟快得多,所以用執行程式在ram中,而存放執行時不用的資料則在硬碟中,什麼時候需要資料,便把資料從硬碟中拿到記憶體,但同時ram斷電會丟...

RAM和ROM的區別

ram ramdomaccessmemory易揮發性隨機訪問儲存器,高速訪問,讀寫時間相等,且與位址無關,如計算機記憶體等。rom read only memory唯讀儲存器。斷電後資訊不丟失,如計算機啟動用的bios晶元。訪問速度很低,較ram而言 且不能改寫。由於不能改寫資訊,不能公升級,現已很...

RAM和ROM的區別

隨機訪問儲存器 random access memory,ram 又稱作 隨機儲存器 是與cpu直接交換資料的內部儲存器,也叫主存 記憶體 它可以隨時讀寫,而且速度很快,通常作為作業系統或其他正在執行中的程式的臨時資料儲存媒介。當電源關閉時ram不能保留資料。如果需要儲存資料,就必須把它們寫入乙個長...