Softwarespeichertest für Busausfälle

Ich habe ein Board mit ziemlich vielen Flash-Chips, einige von ihnen zeigen intermittierende Fehler. Standard-Speichertests zeigen keine spezifischen Problemadressen, außer dass einige Chips bei mechanischer und thermischer Belastung intermittierend ausfallen.

Da ich die tatsächlichen Verbindungen und nicht die Flash-Zellen selbst fürchte, suche ich nach einer Möglichkeit, den parallelen Bus auf Adress- oder Daten-Pin-Fehler zu testen.

Es gibt einige Speichertests, aber sie gelten besser für RAM als für Flash-Speicher ( http://www.ganssle.com /testingram.htm ). Insbesondere hat der parallele Flash-Speicher eine Sequenz von Bus-Schreibvorgängen, um auf jeden Wert zu schreiben; Ein Schreib-/Verifizierungsfehler könnte leicht der Schreibvorgang sein, der irgendein Pin auf dem Bus sein könnte.

Ideen willkommen ...

0

4 Antworten

Ich habe mich entschieden, ein Speichermuster zu entwerfen, von dem ich denke, dass ich sowohl Daten- als auch Adressfehler daraus ableiten kann. Das Konzept besteht darin, Werte als Schlüsselindikatoren für mögliche Lesefehler zu verwenden. Das Konzept besteht auch darin, einen Fehler auf jeweils einem Pin zu erkennen.

Der Test liest abwechselnd nur von der unteren und oberen Adresse (0x000000 und 0x3FFFFF - mein Chip hat 22 Adresszeilen). An diesen Stellen setze ich 0xFF und 0x00 (Byte-weit). Die Idee ist, alle Adress- und Datenleitungen umzudrehen und zu sehen, was passiert. (Alle anderen Werte im Flash haben mindestens 3 Bit von 0x00 und 0xFF)

Es gibt 44 Adressen, an die mich ein einzelner Pin-Fehler irrtümlich schicken könnte. Geben Sie in jede Adresse einen von 22 Werten ein, um darzustellen, welcher der 22 Adress-Pins umgedreht wurde. Jeweils 2 Bits unterscheiden sich voneinander und 3 Bits unterscheiden sich von 00 und FF. (Ich habe versucht für 3 Bits voneinander zu unterscheiden, aber 8 Bits konnten nur 14 Werte erhalten)

        07,0B,0D,0E,16,1A,1C,1F,25,29,2C,
        2F,34,38,3D,3E,43,49,4A,4F,52,58

The remaining addresses I put a nice pattern of six values 33,55,66,99,AA,CC. (3 bits different from all other values) value(address) = nicePattern[ sum of bits set in address % 6];

Ich habe das getestet und habe statistisch gesehen 100er intermittierender Störfälle gesammelt, die mit der mechanischen Belastung synchronisiert sind.

  • Einzelbitfehler nachweisbar
  • doppelte Bitfehler ableitbar (erklärbar durch eine Kombination von häufigen Einzelbitfehlern)
  • 3 oder mehr Bitfehler (im Allgemeinen nicht eindeutig)

Obwohl einige der Chips 3 fehlerhafte Pins hatten, waren 70% der Vorfälle ein einzelnes Bit (sie fielen normalerweise nicht gleichzeitig aus)

Die Testgruppe verwendet dies nun, um festzustellen, welche spezifischen Verbindungen fehlschlagen.

0
hinzugefügt

Die typischen Speichertests sind dazu da. Ich bevorzuge einen Pseudo Randomizer (deterministisch mit einem lfsr) zu den 0xAA, 0x55, 0xFF, 0x00 Tests. Dies ermöglicht sowohl einen Adressbustest als auch einen Datenbustest in zwei Durchgängen (Wiederholung invertiert). Ich sage typisch im Sinne eines Wackelns der Datenbits und Adressbits beide Zustände und variieren die Zustände von Signalen und deren Nachbarn. Das Stampfen auf einen Widder, um thermische oder andere Belastungen zu erzeugen, gut, man kann nicht sehr schnell auf einen Blitz schreiben, so dass man nicht wirklich schnelle Schreib/Lese-Zyklen machen kann.

Flash erstellt ein anderes Problem und das Schreiben und dann das Lesen ist nicht so interessant, Sie möchten das Lesen später, Stunden, Tage, Wochen zurückschreiben, um festzustellen, ob das Teil tatsächlich Daten hält.

Wenn du Wärme oder Stress sagst, meinst du nur, dass es während der Zeit, in der es über X Grad liegt, versagt, oder meinst du, dass es aufgrund von thermischer Belastung die ganze Zeit nach dem Ereignis gebrochen ist. Auch bei mechanischer, schwingender oder unter mechanischer Belastung versagt das Teil, aber wenn es von dieser Spannung befreit ist, ist es in Ordnung, oder die mechanische Spannung hat dauerhafte Schäden verursacht, die unter Stress erkannt werden können oder nicht.

Nun, obwohl Sie keine schnellen Schreib-/Lesezyklen ausführen können, können Sie einen Flash durch starkes Lesen bestrafen. Ich habe Lese-Stör-Probleme durch konstantes Lesen eines Blocks oder Ortes gesehen. Nicht unbedingt etwas, wofür man Zeit für jeden Ort hat, aber man kann den Widder mit einem Pseudo-Zufallsmuster füllen und sich für eine Weile auf einen Ort konzentrieren (Minuten, Dutzende von Minuten), wenn man einen Teil hat, von dem man weiß, dass er schlecht ist Sehen Sie, ob dies die Erkennung des Problems beschleunigt und ob irgendein Standort funktioniert oder nur bestimmte. Dann ist es eine andere Sache, alle Orte für Stunden/Tage wiederholt zu lesen oder Stunden/Tage/Wochen zu sitzen und dann einen Lesepass ohne Löschen oder Schreiben zu machen und zu sehen, ob etwas verloren gegangen ist.

Leider, wie Sie wahrscheinlich wissen, nimmt jeder neue Fehlerfall sein eigenes Forschungsprojekt und die Entwicklung eines neuen Tests.

0
hinzugefügt
Die Fehler sind intermittierend, bis zu dem Zeitpunkt, an dem die mechanischen Spannungen aufhören.
hinzugefügt der Autor Michael, Quelle
Zumindest während der Fehler, die einen der Standard-Speicher-Testtricks verwenden, können Sie versuchen, die fehlerhaften Verbindungen zu identifizieren, wenn Sie gleichzeitig ein fehlerhaftes Adressbit und ein fehlerhaftes Datenbit oder andere Kombinationen von simultanen Fehlern haben bestimmen Sie etwas anderes als "es ist kaputt". Mehrere Datenbits mit guten Adressbits ist es einfach die schlechten Daten Bitspuren zu ermitteln, ebenso kann ein einzelnes Adressbit bestimmt werden ... Sie wissen wahrscheinlich all dies nicht sicher, was Sie suchen ...
hinzugefügt der Autor old_timer, Quelle

Im verlinkten Artikel sagt Jack Ganssle: "Entscheidend für diesen [Test] und jeden anderen RAM-Testalgorithmus ist, dass Sie das Muster in den gesamten RAM schreiben, bevor Sie den Lesetest durchführen."

Da das Lesen vom Schreiben isoliert werden sollte, ist das Testen des Blitzes einfacher. Führen Sie den Schreibabschnitt der Tests durch, während das System nicht belastet ist. Führen Sie dann den Leseabschnitt mit dem System unter Spannung durch. Wenn Sie die Adresse, den erwarteten Wert und den tatsächlichen Wert in genügend Fällen aufzeichnen, sollten Sie in der Lage sein, die Quelle der Fehler zu bestimmen.

Wenn das System bei diesem Vorgang niemals ausfällt, können Sie die gesamten Tests unter Stress durchführen. Alle auftretenden Fehler sind wahrscheinlich Schreibfehler.

0
hinzugefügt

Der erste Schritt zum Testen eines Speichers ist der Datenbus test0 0 0 0 0 0 0 • In diesem Test wird die Datenbusverdrahtung ordnungsgemäß getestet. 0 0 0 0 0 0 0 Bestätigen Sie, dass der Wert vom Prozessor auf 0 0 0 0 0 0 0 gesetzt wird wird vom Speichergerät am anderen Ende korrekt empfangen. 0 0 0 0 0 00 0 0 0 0 0 0 • Ein naheliegender Test besteht darin, alle möglichen 0 0 0 0 0 0 0 Datenwerte zu schreiben und 0 0 0 0 0 0 0 zu verifizieren • Jedes Bit kann unabhängig getestet werden. • Um den 1-Schritt-Test durchzuführen, schreiben Sie den ersten in der Tabelle angegebenen Datenwert, verifizieren Sie, indem Sie ihn zurücklesen, schreiben Sie den zweiten Wert, verifizieren Sie und so weiter. • Wenn Sie das Ende der Tabelle erreicht haben, ist der Test abgeschlossen

0
hinzugefügt