Wie kann ich den RAM auf Datenbeschädigung auf einem ARM-basierten System testen?

20

Ich habe ein eingebettetes Gerät. Es basiert auf ARM mit Linux 2.6.31 und hat 256 MB RAM.

Ich wollte einige Ideen / Tipps dazu erhalten, wie der RAM des Geräts auf Datenverfälschungen am effektivsten getestet werden kann. Gibt es einen Test / eine Software, die jemand vorschlagen kann?

Hinweis:

Ich habe jetzt Memtester. Ich habe es auf Vorschlag von Ulrich Dangel (unten) bekommen.

Ich habe mtestmich jetzt auch aus dem Uboot eingerichtet.

Gibt es noch andere Tests / Ansätze, die ich verwenden könnte?

Ankur Agarwal
quelle
2
Beachten Sie, dass dies eine ARM-CPU ist, keine x86-CPU. Leider funktioniert Memtest86 + in diesem Fall nicht.
Renan
Ich habe Memtester. Gibt es noch andere Tests / Ansätze, die ich verwenden könnte?
Ankur Agarwal
1
@abc was willst du noch Ich denke, Sie haben einige andere Probleme, wenn diese Methode nicht das gewünschte Ergebnis liefert. mtestfunktioniert im Grunde genauso wie memtest86 +. Grundsätzlich haben Sie verschiedene Optionen. Führen Sie den Speichertest unter Ihrem Betriebssystem wie unter Linux aus (dies ist zwar der Fall memtester, Sie haben jedoch möglicherweise Probleme beim Testen der gesamten physischen Region). Sie können auch ein Mini-System (uboot) verwenden, um Ihr Gedächtnis zu testen ( mtest)
Ulrich Dangel
Ist der Prozessor von Marvell? Ich habe die gleiche Frage zu einem Marvell-Netzwerkprozessor, der genau die gleiche Konfiguration (ARM / 256 MB RAM / Linux 2.6.31) hat wie Sie.
Tim Wu
Hier ist eine ähnliche Stapelüberlauffrage . Alle Tests hier können zu Problemen führen. Sie werden nicht alle Probleme finden und in der Tat ist dies sehr schwierig zu tun. Dies kann nur mit sehr guten Board-Simulationstools und Modellierung überprüft werden. keine Software. Wenn dies geschehen ist, besteht das einzige Problem darin, dass ein DDR-Chip (oder möglicherweise ein Host-Controller) und ein Memtester und ein mtest diese möglicherweise finden. Wenn sie jedoch sagen, ist alles in Ordnung; Schließen Sie ein DDR-Problem nicht zu 100% aus.
Kunstloser Lärm

Antworten:

21

Die allgemeine Lösung, um das Gedächtnis zu testen, besteht darin, ein bestimmtes Muster 0xFFFFFFFFin Ihr Gedächtnis zu schreiben und es anschließend zu lesen und das Ergebnis zu vergleichen. Sie können und sollten das Muster natürlich ändern, um Probleme zu entdecken. Einige Lösungen memtest86+erzeugen auch zufällige Muster und ändern die Richtung, in der sie in den Speicher schreiben. Detaillierte Informationen zu den in memtest86 verwendeten Algorithmen finden Sie auf der Tech-Seite . Alle in diesem Beitrag bereitgestellten Lösungen verwenden im Grunde die gleiche zugrunde liegende Idee.

Wenn Sie Ihren Test unter Linux ausführen möchten (Sie haben Linux in Ihrem Beitrag erwähnt), werfen Sie einen Blick auf memtester und die memtest-Suite, die beide mit arm funktionieren sollten. Um loszulegen, sollten Sie memtester verwenden, da es im Grunde genau das tut, was Sie wollen.

Das Testen Ihres Arbeitsspeichers unter Linux hat einige Nachteile: Sie können nicht den gesamten physischen Arbeitsspeicher testen, da der Kernel auch Arbeitsspeicher benötigt. Um den Speicher mit uboot zu testen (er ist viel kleiner als der Linux-Kernel), schauen Sie sich den integrierten Befehl mtest an . Hier können Sie den Adressbereich, das Muster und die Iteration festlegen. Mit mtest sollten Sie in der Lage sein, ziemlich umfangreiche Tests durchzuführen , ohne auf ein Betriebssystem angewiesen zu sein. Sie müssen nur sicherstellen, dass Sie gültige Speicherbereiche verwenden, da Sie sonst möglicherweise den ubootSpeicherbereich überschreiben .

Wenn die von mtest bereitgestellten Tests nicht ausreichen, können Sie uboot natürlich einfach erweitern und zusätzliche Speichertestfunktionen in uboot integrieren.

Ulrich Dangel
quelle
OK, ich habe Memtester. Kann ich noch einen anderen Test machen?
Ankur Agarwal
1
Könnte ich noch andere Testansätze ausprobieren? Ich denke an RAM von Uboot testen.
Ankur Agarwal
@abc ok ich habe einen Hinweis über Uboots mtest Befehl hinzugefügt
Ulrich Dangel
1
Ich habe angefangen, Uboot-Befehle zu verwenden, und jetzt sehe ich, dass der Speicher-Anzeige-Uboot-Befehl in der Mitte hängen bleibtbist > md.w 0x00000023 10 00000023:
Ankur Agarwal,
u-boot unterstützt zwei verschiedene mtest. Kompilieren Sie mit CONFIG_SYS_ALT_MEMTEST, um einen umfangreicheren Speichertest als standardmäßig durchzuführen.
3.