Wie führen Sie Speicher-test auf Arm-Architektur Hardware? (so etwas wie Memtest86)
Gibt es einen Weg, um Speicher zu testen auf android-Gerät RAM?
Entwickle ich ein Treiber aber bei ramdom mal bekomme ich eine gewisse physische Adressen mit falschen Wert verursacht die Fahrer gehen in die falschen Staat. Ich bin versucht zu Lesen aus dem RAM, als ich gegen das problem. Ich Denke, gewisse Teile des ram auf meinem Gerät beschädigt sind.
- Sprechen Sie über die tatsächliche RAM oder ein memory-mapped-Gerät? MMDs-nur "Aussehen wie" normale RAM aber du hast Zugriff auf einige interne register des Geräts. In beiden Fällen sollten Sie überprüfen, ob Ihre cache-Einstellungen für die memory-region korrekt ist, und wenn Sie Spülung/Invalidierung der Caches richtig, wenn es verwendet wird, durch das Gerät und der CPU.
- Wenn Sie wirklich denken, dass Sie haben beschädigte Arbeitsspeicher könntest du überprüfen, ob dein bootloader ist die Bereitstellung von Speicher testen.
- Ich Kontrolle für die tatsächliche RAM. Ich habe einen ring-Puffer (circular Linkliste), die ich bin der überprüfung der Daten. Leider bootloader nicht, die Speicher testen.
- Die Befüllung der ring-Puffer? Wenn es einen anderen Prozess, ein Gerät oder den kernel, den Sie haben könnten, cache-Probleme. Sie sollten prüfen, ob die erste, fehlerhafte ram ist sehr unwahrscheinlich.
- Die hardware füllt der ring-Puffer und generiert einen interrupt. Der Fahrer muss die Daten abzurufen. Es könnte sein, du hast Recht. Also ich bin derzeit auf der Suche nach möglichen cache-Probleme.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Komplette ist ein vieldeutiges Wort. Es kann bedeuten, verschiedene Temperaturen, Spannungen und in einer Reihe von Geräten mit unterschiedlichen Bauteil-Toleranzen. Wie Sie Webseite MemTest86, ich glaube, ich verstehe. Die meisten Projekte, die ich gesehen habe, sind C basiert und kann nicht alles testen.
Hier ist man unter Linux - http://www.madsgroup.org/~quintela/memtest/
Gibt es algorithmen dokumentiert, wie walking bits, etc. Viel hängt davon ab, Ihre RAM-Typ. Ich denke, Sie haben irgendeine Art von SDRAM. Es gibt viele verschiedene Zyklen mit SDRAM. Es gibt Einzel-beat liest/schreibt, bank-zu-bank-überweisungen, terminierte platzt, etc.
Persönlich, hatten wir ein system, wurden 5% der boards, die zeigen würde, Probleme, die beim durchführen einer SSH-transfer über Ethernet (DMA). Die SSH-Verschlüsselung beinhaltet, die CPU - /Speicher-intensiv und die DMA-engine oft hat verschiedene SDRAM-Zyklen als die CPU (mit cache).
Hier sind einige Anforderungen,
Anderen einschränkenden Voraussetzung ist die Zeit zu laufen. Ein komplette SDRAM test könnte Jahre dauern, zu laufen, auf einer einzigen platine. Ich habe festgestellt, dass ein pseudo-random-Adress - /Daten-test gut funktioniert. Nehmen Sie einfach die zahlen, die relativ prim zu der Größe der SDRAM und verwenden, die als eine Schrittweite. Der einfachste Fall ist
1
. Möchten Sie vielleicht finden Sie die andere ständig ändernrows
,banks
- und Geräte-Größe;bank size-1
Beispiel, aber Primzahlen arbeiten besser als Sie haben unterschiedliche Mengen von bits ändern die ganze Zeit. Mit dem cache deaktivieren, können Siechar
,short
,int
, undlong long
Zeiger zum testen einige verschiedene burst-Längen. Diese tests werden langsam. Benötigen Sieldm/stm
Paare, um zu simulieren eine full SDRAM burst, diese sind häufiger mit der cache auf so sollten Sie simulieren mitldm/stm
. Dies ist auch eine der schnellsten Prüfungen.incr
ist die data-increment-undwrap
ist die Adresse Inkrementieren. Der Algorithmus für die burst wird die gleiche sein. Hier einige gcc-inline-assembler,Diese tests sind einfach und sollten fit in den code-cache die Maximierung der Belastung auf den RAM. Unser Hauptproblem war die DQS-Verzögerung, die kritisch für DDR-SDRAM und kann Temperatur und Spannung abhängig und variieren mit PCB-layout und Materialien.
Cachbench kann verwendet werden, wenn Sie die Optimierung der Speicher-controller registriert mit der SDRAM-chips. Es kann auch nützlich sein für die Prüfung.
Siehe auch: Unix-Stack Exchange (gleiche Frage). Ich habe diese C basierten test-suites unter Linux, aber Sie nicht setzen Sie alle Probleme, die in unserem Fall. Die memtest86 algorithmen vielleicht nicht so stressig (für PCB glitches) wie was ich oben beschreiben; obwohl test 7 oder die burnBX test ist in der Nähe. Ich denke, memtest86 bietet finden DRAM-chip-Ausgaben im Gegensatz zum board-design.
Edit: ein Weiteres Problem ist der Transienten - /cross-talk mit den SDRAM-chips. Wenn Ihr Gerätetreiber ist ein hoher Strom oder hohe-Frequenz-Gerät, das SDRAM-interface kann möglich abholen cross-talk -, oder erhalten Sie einen Doppel-Uhr aufgrund von Angebot Variationen. So ein RAM-test zeigen keine Probleme und der SDRAM-Fehler geschieht nur, wenn ein bestimmter Teil der hardware verwendet wird. Auch darauf achten, dass das Android-Gerät nicht verwenden die dynamische Taktung und ändern Sie die SDRAM-Frequenz. Signale können cross-eine Resonanz, die Uhr änderungen.