Linux

如何在基於 ARM 的系統上測試 RAM 是否存在數據損壞?

  • August 16, 2020

我有一個嵌入式設備。它基於 ARM,使用 Linux 2.6.31 並具有 256 MB RAM。

我想獲得一些關於什麼是測試設備 RAM 數據損壞的最有效方法的想法/提示。有沒有人可以推薦的測試/軟體?

筆記:

我現在有memtester。我是在 Ulrich Dangel(下)的建議下得到它的。

我現在也已經mtest從uboot設置了。

我可以使用任何其他測試/方法嗎?

Das U-Boot 可能是 ARM 板上使用最廣泛的引導載入程序,它包括一些記憶體測試功能。

有趣的是,它的自述文件提出了一種可能更便攜和/或更有效的替代方法:

對這樣的系統施加壓力的最著名的測試案例是在 NFS 上安裝根文件系統啟動 Linux,然後在本地建構一些更大的軟體包(例如,在系統上編譯 Linux 核心)——這將導致足夠的上下文切換,網路流量(以及因此來自網路控制器的 DMA 傳輸)、不同的 RAM 使用等來觸發該區域的任何薄弱環節。

在建構 linux 核心時,您可能對該選項感興趣,該CONFIG_MEMTEST=y選項會導致建構內置記憶體測試。這曾經僅適用於 x86 架構,但我相信最近的版本也支持它在其他架構上,甚至可能是 ARM。

memtester工具已經在一些 Linux 發行版建構並可用,適用於各種架構,包括 ARM。

kernel-memtest項目可能也會讓您感興趣。

請記住,沒有工具可以測試它正在執行的記憶體(因此正在執行的作業系統中的程序將有很大的盲點),並且基本的讀/寫測試不會揭示每種類型的缺陷或其他錯誤。相應地設置您的期望,如果您有理由懷疑記憶力不好,請考慮嘗試幾種不同的測試工具。

測試記憶的一般解決方案是將特定模式寫入0xFFFFFFFF您的記憶中,然後讀取它並比較結果。您當然可以而且應該改變模式以發現問題。一些解決方案,例如memtest86+還生成隨機模式並更改它們用於寫入記憶體的方向。有關 memtest86 中使用的算法的更多詳細資訊,請查看他們的技術頁面。這篇文章中提供的所有解決方案都使用了基本相同的基本思想。

如果您想在 Linux 中執行測試(您在文章中提到了 Linux),請查看memtestermemtest 套件,它們都應該與 arm 一起使用。要開始使用,您應該使用memtester,因為它基本上完全符合您的要求。

在 Linux 中測試你的記憶體有一些缺點,比如你不能真正測試你所有的物理記憶體,因為核心也需要記憶體。要使用 uboot 測試記憶體(它比 linux 核心小得多),請查看集成的mtest命令。它允許您指定地址範圍、模式和迭代。使用mtest,您應該能夠在不依賴作業系統的情況下進行相當廣泛的測試。您只需要確保您使用的是有效的記憶體範圍,否則您可能會覆蓋uboot記憶體區域。

如果mtest提供的測試還不夠,你當然可以擴展 uboot 並將額外的記憶體測試功能集成到 uboot 中。

引用自:https://unix.stackexchange.com/questions/38887