Forum: Mikrocontroller und Digitale Elektronik RAM testen


von Dieter Kaehler (Gast)


Lesenswert?

Hallo,
ich suche eine Möglichkeit, ein Ram zu testen.
Es sollen alle Bits mit 1 und auch mal mit 0 beschrieben werden. 
Desweiteren sollen alle Adressen sicher getestet werden.
Also alles mit 0x5A beschreiben und zurücklesen und dann das ganze noch 
einmal mit 0xA5 ist dann doch etwas zu einfach.
Wenn möglich, eine Funktion in C.
Aber auch für einen einfachen Ansatz wäre ich schon dankbar.

Dieter

von Sascha Weitkunat (Gast)


Lesenswert?

Die relevanten Muster sind AAh und 55h, du gehst alle Adressen ab und 
schreibst eben diese Werte in das RAM, anschließend ließt du sie aus und 
überprüfst ob es immer noch das selbe Muster ist. Wo liegt das Problem?

von Dieter Kaehler (Gast)


Lesenswert?

Ganz einfach,
wenn eine Adressleitung permanent auf 0 liegt (z.B. Lötbrücke), ist das 
nicht feststellbar. Aber genau solche Fehler will ich feststellen 
können.

Dieter

von Reiner (Gast)


Angehängte Dateien:

Lesenswert?

Hi
Das Teil ist zwar für'n M16C mit 1MB extern 16RAM, aber das kannst Du ja 
als Anregeung nehmen. Es findet nicht gelötete  Pins, kurzgeschlossene 
Addressleitungen, kurzgeschlossene Datenleitungen, sowie irgend was auf 
Masse oder Vcc

Reiner

von Peter D. (peda)


Lesenswert?

An besten, man nimmt einen Pseudo-Zufallsgenerator und schreibt damit 
den kompletten RAM voll.

Dann testet und invertiert man alles im 2. Durchgang.

Im 3.Durchgang testet man das invertierte Zufallsmuster und fertig.



Peter

von Dieter Kaehler (Gast)


Lesenswert?

Schon mal vielen Dank,
sehr schöner einfacher Ansatz, der schon mal die meissten Tücken finden 
sollte.

Gibt es noch andere Ansätze, die das RAM evtl. mit "zufälligen" Adressen 
beschreiben. Also das RAM mit allen möglichen Daten in wild springende 
Adressen beschreiben und dann genauso wild überprüfen.

Dieter

von thomas b (Gast)


Lesenswert?

Hi,

warum wild und Chaos?
Zuerst würde ich die einzelnen Aressleitungen testen:
kompletten Ram auf 0 setzten
A0=0 Zelle auf 1, lesen, invertieren, schreiben, lesen, ok? >
A0=1 Zelle auf 0? ok> zelle auf 1,... s.o.
A1=...so
und geht man halt die einzelnen Adressleitungen durch.
Sind die Adressleitungen alle ok, dann folgt der Zellentest:
Zelle lesen, invertieren, schreiben, lesen ok > nächste.

Was für ein Bitmuster zum prüfen verwendet wird spielt keine Rolle, die 
Invertierung stellt sicher das sich jedes Bit setzten und löschen lässt. 
Eine Prüfung der Adressleitungen bei RAMS in Software ist eher 
ungewöhnlich.

Noch Fragen?

cu tb

von Siegfried (Gast)


Lesenswert?

Wie Dieter schon sagte, will er nicht nur das RAM, sondern auch die 
Verdrahtung testen. Verdrahtungsfehler erkennt man mit der beschriebenen 
Methode nicht.

Noch ein Vorschlag: man löscht das gesamte RAM und schiebt ein Bit durch 
das gesamte RAM. Dabei überprüft man die letzte Adresse, ob hier das Bit 
zu früh, oder gar nicht ankommt.

Siegfried

von thomas b (Gast)


Lesenswert?

@siegfried: vertauschte Adressleitungen sind per Software nicht zu 
erkennen (gar nicht!!!) und für die Funktion ist es auch egal (solange 
nicht noch mehr am Adressbus hängt). Wichtig(und prüfbar) ist nur die 
Anzahl und Ansprechbarkeit der einzelnen Zellen(Adressleitungstest) und 
die Funktion der einzelnen Zellen(Ramtest) alles was darüber hinausgeht 
ist nur Mehraufwand ohne Mehrnutzen.

Ein BIT durch den Ram zu schieben ist Quark.
Selbst ein BYTE zu "schieben" (ist je nach Hardware nicht mal möglich) 
ist albern, da nach jedem Schritt der gesamte RAM geprüft werden müsste. 
Um Verdrahtungsprobleme zu ermitteln genügt jeweils die Zellen 
abzuchecken, bei den sich eine ADRESSLEITUNG ändert(z.b. 
0,1,2,4,8,16...). Die Funktion des RAMs wird getestet in dem jedes BIT 
getestet wird, ob es sich auf H und L setzten lässt. Ob das nun Bit-, 
Byte- oder Blockweise geschieht und mit welchem Muster ist egal.

von Siegfried (Gast)


Lesenswert?

@thomas b
Vertauschte Adressleitungen, bzw. Datenleitungen spielen keine Geige in 
Sachen Funktion.

Mit dem Vorschlag ein BIT durch den Speicher zu schieben meinte ich 
natürlich den softwaremäßigen Ansatz. Ist wohl klar, dass min. ein Byte 
adressiert werden muss. So aufwändig ist der Test nun auch nicht, er 
deckt aber zumindest fast alle Verdrahtungsfehler, Unterbrechnungen, 
Kurzschlüsse und RAM-Fehler auf.

Allerdings sind einige Fehlerfälle denkbar, wo der vorgeschlagene 
"Adressleitungseinzeltest" versagt. Beispiel: A2 hängt auf GND. 
Schreiben und Lesen von Zelle 0x0000 ist OK. Schreiben und lesen von 
Zelle 0x0004 geht jeweils auf die Zelle 0x0000.

Bei den Datenleitungen verhält es sich ähnlich. Daher sollte das 
Bitmuster was über die Datenleitungen geht, ebenfalls variiert werden.

Im Grunde kommt es auf die Anforderung an. Für einen Lego-Roboter wird 
wohl kaum jemand so einen Aufwand treiben. Es gibt jedoch genügend Fälle 
wo es auf einwandfreie Funktion ankommt.

Siegfried

von Uwe (Gast)


Lesenswert?

Hi!
Ich habe letztes Jahr mal sowas gebaut um Speicherfehler älterer 
CNC-Masch. zu testen.Dabei habe ich abwechselnd $AA und $55 ins Ram 
geschrieben.Das darauffolgende Lesen wurde mit dem ADW gemacht um 
saubere Pegel und TST feststellen zu können. Bei falschem Lesewert hat 
das Prog.einfach über RS232 eine Fehlermeldung gebracht und den 
momentanen Leitungszustand zum nachmessen per Hand erhalten.Mit der 
Tastatur konnte man dann entscheiden ob Abbruch oder Weitertesten. Das 
mit den gebrückten / losen Adressleitungen fällt auch auf, da ja das 
Bitmuster wechseln muss. Habe so einige böse Chips finden können, die 
meisten allerdings mit schlechten "Datenpegeln".Lief allerdings auf 
einem HC12, den kann man am ehesten mit einem M16 vergleichen, deshalb 
auch kein Programmanhang.Aber als Denkanstoss hilft es eventuell.

Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.