mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RAM testen


Autor: Dieter Kaehler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dieter Kaehler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Kaehler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thomas b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thomas b (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.