Làm cách nào để kiểm tra RAM xem có bị hỏng dữ liệu trên hệ thống dựa trên ARM không?


20

Tôi có một thiết bị nhúng. Nó dựa trên ARM, với Linux 2.6.31 và có RAM 256 MB.

Tôi muốn có một số ý tưởng / mẹo về cách hiệu quả nhất để kiểm tra RAM thiết bị xem có bị hỏng dữ liệu hay không. Có một bài kiểm tra / phần mềm mà ai đó có thể đề xuất?

Chú thích:

Tôi có memtester bây giờ. Tôi đã nhận được nó sau khi đề nghị từ Ulrich Dangel (bên dưới).

Tôi cũng đã mtestthiết lập từ uboot bây giờ.

Bất kỳ thử nghiệm / phương pháp khác tôi có thể sử dụng?


2
Lưu ý rằng đây là CPU ARM, không phải x86; thật không may, Memtest86 + sẽ không hoạt động trong trường hợp này.
Renan

Tôi đã nhận được memtester. Bất kỳ thử nghiệm / phương pháp khác tôi có thể sử dụng?
Ankur Agarwal

1
@abc bạn muốn gì nữa? Tôi nghĩ rằng bạn có một số vấn đề khác nếu phương pháp này không tạo ra kết quả bạn muốn. mtestvề cơ bản không giống như memtest86 +. Về cơ bản, bạn có các tùy chọn khác nhau, chạy kiểm tra bộ nhớ từ hệ điều hành của bạn như linux (điều này có thể xảy ra memtesternhưng bạn có thể gặp vấn đề khi kiểm tra toàn bộ khu vực vật lý). Bạn cũng có thể sử dụng một số hệ thống nhỏ (uboot) để kiểm tra bộ nhớ của bạn ( mtest)
Ulrich Dangel

Là bộ xử lý từ Marvell? Tôi có cùng một câu hỏi trên bộ xử lý mạng marvell, có cùng cấu hình (ARM / 256MB RAM / Linux 2.6.31) như của bạn.
Tim Wu

Đây là một câu hỏi tràn stack tương tự . Tất cả các bài kiểm tra ở đây có thể tìm thấy một số vấn đề. Họ sẽ không tìm thấy tất cả các vấn đề và trên thực tế, điều này rất khó thực hiện. Chỉ có các công cụ mô phỏng bảng và mô hình hóa rất tốt mới có thể xác minh điều này; không phải phần mềm. Nếu điều này được thực hiện thì vấn đề duy nhất sẽ là chip DDR (hoặc có thể là bộ điều khiển máy chủ) và memtestermtest có thể tìm thấy những thứ này. Tuy nhiên, nếu họ nói mọi thứ đều ổn; không loại trừ 100% vấn đề DDR.
tiếng ồn vô nghĩa

Câu trả lời:


21

Giải pháp chung để kiểm tra bộ nhớ là viết một mẫu cụ thể như 0xFFFFFFFFvào bộ nhớ của bạn và đọc nó sau đó và so sánh kết quả. Tất nhiên, bạn có thể và nên thay đổi mô hình để khám phá các vấn đề. Một số giải pháp như memtest86+cũng tạo ra các mẫu ngẫu nhiên và thay đổi hướng họ sử dụng để ghi vào bộ nhớ. Để biết thêm thông tin chi tiết về các thuật toán được sử dụng trong memtest86, hãy xem trang công nghệ của họ . Tất cả các giải pháp được cung cấp trong bài viết này đang sử dụng về cơ bản cùng một ý tưởng cơ bản.

Nếu bạn muốn chạy thử nghiệm từ bên trong Linux (bạn đã đề cập đến Linux trong bài đăng của mình), hãy xem memtester và bộ memtest mà cả hai nên hoạt động với arm. Để bắt đầu, bạn nên sử dụng memtester vì về cơ bản nó thực hiện chính xác những gì bạn muốn.

Kiểm tra bộ nhớ của bạn từ bên trong Linux có một số nhược điểm như bạn thực sự không thể kiểm tra tất cả bộ nhớ vật lý của mình vì hạt nhân cũng cần bộ nhớ. Để kiểm tra bộ nhớ với uboot (nó nhỏ hơn nhiều so với kernel linux), hãy xem lệnh mtest tích hợp . Nó cho phép bạn chỉ định phạm vi địa chỉ, mẫu và lặp. Với mtest, bạn sẽ có thể thực hiện thử nghiệm khá rộng rãi mà không cần dựa vào hệ điều hành. Bạn chỉ cần đảm bảo rằng bạn đang sử dụng phạm vi bộ nhớ hợp lệ nếu không có thể bạn sẽ ghi đè vùng ubootnhớ.

Nếu thử nghiệm được cung cấp bởi mtest là không đủ, tất nhiên bạn có thể chỉ cần mở rộng uboot và tích hợp các tính năng kiểm tra bộ nhớ bổ sung vào uboot.


OK tôi có memtester. Bất kỳ thử nghiệm nào khác tôi có thể làm?
Ankur Agarwal

1
Bất kỳ phương pháp thử nghiệm nào khác tôi có thể thử? Tôi đang nghĩ đến việc kiểm tra RAM từ uboot.
Ankur Agarwal

@abc ok tôi đã thêm một lưu ý về lệnh uboots mtest
Ulrich Dangel

1
Tôi bắt đầu sử dụng các lệnh uboot và bây giờ tôi thấy lệnh uboot hiển thị bộ nhớ bị kẹt ở giữabist > md.w 0x00000023 10 00000023:
Ankur Agarwal

u-boot có hỗ trợ cho hai mtest khác nhau. Biên dịch với CONFIG_SYS_ALT_MEMTEST để kiểm tra bộ nhớ rộng hơn so với mặc định.
m__
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.