Bagaimana saya bisa menguji RAM untuk kerusakan data pada sistem berbasis ARM?

20

Saya memiliki perangkat tertanam. Berbasis ARM, dengan Linux 2.6.31 dan memiliki 256 MB RAM.

Saya ingin mendapatkan beberapa ide / tips tentang cara apa yang paling efektif untuk menguji RAM perangkat untuk kerusakan data. Apakah ada tes / perangkat lunak yang dapat disarankan seseorang?

catatan:

Saya memiliki memtester sekarang. Saya mendapatkannya setelah saran dari Ulrich Dangel (di bawah).

Saya juga sudah mtestmengatur dari uboot sekarang.

Adakah tes / pendekatan lain yang bisa saya gunakan?

Ankur Agarwal
sumber
2
Perhatikan bahwa ini adalah CPU ARM, bukan x86; sayangnya, Memtest86 + tidak akan berfungsi dalam kasus ini.
Renan
Saya mendapat memtester. Adakah tes / pendekatan lain yang bisa saya gunakan?
Ankur Agarwal
1
@ abc apa lagi yang kamu inginkan? Saya pikir Anda memiliki beberapa masalah lain jika metode ini tidak akan menghasilkan hasil yang Anda inginkan. mtestpada dasarnya melakukan hal yang sama dengan memtest86 +. Pada dasarnya Anda memiliki opsi yang berbeda, jalankan tes memori dari sistem operasi Anda seperti linux (ini akan memtestertetapi Anda mungkin memiliki masalah menguji seluruh wilayah fisik). Anda juga dapat menggunakan beberapa sistem mini (uboot) untuk menguji memori Anda ( mtest)
Ulrich Dangel
Apakah prosesor dari Marvell? Saya memiliki pertanyaan yang sama pada prosesor jaringan marvell, yang konfigurasi persis sama (ARM / 256MB RAM / Linux 2.6.31) seperti milik Anda.
Tim Wu
Inilah pertanyaan stack overflow yang serupa . Semua tes di sini dapat menemukan beberapa masalah. Mereka tidak akan menemukan semua masalah dan pada kenyataannya, ini sangat sulit dilakukan. Hanya alat simulasi dan pemodelan papan yang sangat baik yang dapat memverifikasi ini; bukan perangkat lunak. Jika ini dilakukan maka satu-satunya masalah adalah chip DDR (atau mungkin pengendali host) dan memtester dan mtest dapat menemukannya. Namun, jika mereka mengatakan semuanya baik-baik saja; jangan 100% mengesampingkan masalah DDR.
kebisingan seni

Jawaban:

21

Solusi umum untuk menguji memori adalah dengan menulis pola spesifik seperti 0xFFFFFFFFke memori Anda dan membacanya setelah itu dan membandingkan hasilnya. Tentu saja Anda dapat dan harus mengubah pola untuk menemukan masalah. Beberapa solusi seperti memtest86+juga menghasilkan pola acak dan mengubah arah yang mereka gunakan untuk menulis ke memori. Untuk informasi lebih rinci tentang algoritma yang digunakan di memtest86, lihat halaman teknologi mereka . Semua solusi yang disediakan dalam posting ini pada dasarnya menggunakan ide dasar yang sama.

Jika Anda ingin menjalankan tes Anda dari dalam Linux (Anda menyebutkan Linux di posting Anda) melihat memtester dan suite memtest yang keduanya harus bekerja dengan lengan. Untuk memulai, Anda harus menggunakan memtester karena pada dasarnya melakukan apa yang Anda inginkan.

Menguji memori Anda dari dalam Linux memiliki beberapa kelemahan seperti Anda tidak dapat benar-benar menguji semua memori fisik Anda karena kernel juga membutuhkan memori. Untuk menguji memori dengan uboot (jauh lebih kecil dari kernel linux) lihatlah perintah mtest yang terintegrasi . Ini memungkinkan Anda untuk menentukan rentang alamat, pola, dan iterasi. Dengan mtest Anda harus dapat melakukan pengujian yang cukup luas tanpa bergantung pada sistem operasi. Anda hanya perlu memastikan bahwa Anda menggunakan rentang memori yang valid jika tidak, mungkin Anda menimpa ubootwilayah memori.

Jika pengujian yang diberikan oleh mtest tidak cukup, Anda tentu saja dapat memperpanjang uboot dan mengintegrasikan fitur pengujian memori tambahan ke dalam uboot.

Ulrich Dangel
sumber
OK saya dapat memtester. Ada tes lain yang bisa saya lakukan?
Ankur Agarwal
1
Adakah pendekatan tes lain yang bisa saya coba? Saya berpikir untuk menguji RAM dari uboot.
Ankur Agarwal
@ abc ok saya menambahkan catatan tentang perintah moot uboots
Ulrich Dangel
1
Saya mulai menggunakan perintah uboot dan sekarang saya melihat bahwa perintah tampilan uboot memori macet di tengahbist > md.w 0x00000023 10 00000023:
Ankur Agarwal
u-boot memiliki dukungan untuk dua mtest yang berbeda. Kompilasi dengan CONFIG_SYS_ALT_MEMTEST untuk pengujian memori yang lebih luas daripada standar.
m__