ARMベースのシステムでRAMのデータ破損をテストする方法は?

ARMベースのシステムでRAMのデータ破損をテストする方法は?

組み込みデバイスがあります。 ARMに基づいており、Linux 2.6.31を実行し、256MBのRAMを装備しています。

デバイスRAMのデータ破損をテストする最も効果的な方法についていくつかのアイデア/ヒントが必要です。誰でもテスト/ソフトウェアをお勧めできますか?

メモ:

今はメンテスターがいます。私はUlrich Dangel(以下)のアドバイスに従ってそれを得ました。

mtest今はubootでも設定しました。

使用できる他のテスト/方法はありますか?

答え1

メモリテストの一般的な解決策は、特定のパターンを0xFFFFFFFFメモリに書き込んでから結果を読み取って比較することです。問題を見つけるためにパターンを変更して変更する必要があります。いくつかの解決策はmemtest86+ランダムパターンを生成し、メモリに書き込まれる方向を変更することもあります。 memtest86で使用されているアルゴリズムの詳細については、該当する項目を確認してください。技術ページ。この資料で提供されているすべてのソリューションは、基本的に同じ基本的なアイデアを使用します。

Linuxでテストを実行するには(ポストでLinuxを参照)、次の点を確認してください。メモリテスターそしてメモリテストスイートどちらも腕と連携する必要があります。最初に使用する必要がありますメモリテスター基本的には、要求した内容を正確に行うためです。

Linux内でメモリをテストするには、いくつかの欠点があります。たとえば、カーネルにもメモリが必要なため、実際にすべての物理メモリをテストすることはできません。 uboot(Linuxカーネルよりはるかに小さい)を使用してメモリをテストするには、統合テスト注文する。アドレス範囲、パターン、繰り返しを指定できます。そしてテストオペレーティングシステムに依存することなく、かなり広範なテストを実行できるはずです。有効なメモリ範囲を使用していることを確認するだけです。それ以外の場合は、ubootメモリ領域を上書きできます。

テストを行う場合テストこれが十分でない場合は、もちろんubootを拡張し、追加のメモリテスト機能をubootに統合することもできます。

答え2

Das U-BootはおそらくARMボードで最も広く使用されているブートローダであり、いくつかのメモリテスト機能が含まれています。

興味深いことに、閲覧ファイルより移植性が高く、および/またはより効率的な代替案を提案してください。

これらのシステムにストレスを与える最もよく知られたテストケースは、NFSを介してルートファイルシステムをマウントしてLinuxを起動し、ローカルに大きなパッケージを構築することです(たとえば、システム上のLinuxカーネルのコンパイル)。これにより、十分なコンテキスト切り替えが発生します。ネットワークトラフィック(およびネットワークコントローラからのDMA転送)、さまざまなRAM使用量などがこの領域の弱点を引き起こす可能性があります。

CONFIG_MEMTEST=yLinuxカーネルをビルドするときに内蔵メモリテストをビルドするオプションに興味があるかもしれません。これはx86アーキテクチャでのみ機能しましたが、最近のバージョンは他のアーキテクチャ、おそらくARMもサポートしていると思います。

これメモリテスターツールが構築され利用可能一部のLinuxディストリビューション、ARMを含むさまざまなアーキテクチャに適しています。

これカーネルメモリテストプロジェクトに興味があるかもしれません。

どのツールも実行中のメモリをテストすることはできず(したがって、実行中のオペレーティングシステムのプログラムには深刻な死角があります)、基本的な読み書きテストではすべての種類の障害やその他のエラーが表示されないことに注意してください。それに応じて期待値を設定し、不良メモリが疑われる理由がある場合は、いくつかの他のテストツールを試してください。

関連情報