Ulr*_*gel 22
测试内存的一般解决方案是将特定模式写入0xFFFFFFFF您的内存,然后读取它并比较结果。您当然可以而且应该改变模式以发现问题。一些解决方案memtest86+还生成随机模式并更改它们用于写入内存的方向。有关 memtest86 中使用的算法的更多详细信息,请查看他们的技术页面。这篇文章中提供的所有解决方案都使用基本相同的基本思想。
如果您想在 Linux 中运行您的测试(您在帖子中提到了 Linux),请查看memtester和memtest 套件,它们都应该与 arm 一起使用。首先,您应该使用memtester,因为它基本上完全符合您的要求。
在 Linux 中测试内存有一些缺点,例如您无法真正测试所有物理内存,因为内核也需要内存。要使用 uboot(它比 linux 内核小得多)测试内存,请查看集成的mtest命令。它允许您指定地址范围、模式和迭代。使用mtest,您应该能够在不依赖操作系统的情况下进行相当广泛的测试。您只需要确保使用有效的内存范围,否则可能会覆盖uboot内存区域。
如果mtest提供的测试还不够,你当然可以扩展 uboot 并将额外的内存测试功能集成到 uboot 中。
Das U-Boot 可能是 ARM 板上使用最广泛的引导加载程序,它包含一些内存测试功能。
有趣的是,它的自述文件提出了一种可能更便携和/或更有效的替代方法:
对这样的系统进行压力的最著名的测试用例是通过 NFS 安装根文件系统来引导 Linux,然后本地构建一些更大的软件包(例如,在系统上编译 Linux 内核) - 这将导致足够的上下文切换,网络流量(以及来自网络控制器的 DMA 传输)、不同的 RAM 使用情况等会触发该区域的任何弱点。
当您构建 Linux 内核时,您可能会对CONFIG_MEMTEST=y导致构建内置内存测试的选项感兴趣。这曾经仅适用于 x86 架构,但我相信最近的版本也支持其他架构,甚至可能是 ARM。
memtester工具已在某些 Linux 发行版中构建并可用,适用于各种体系结构,包括 ARM。
您可能也会对 kernel-memtest 项目感兴趣。
请记住,没有工具可以测试它运行的内存(因此正在运行的操作系统中的程序将有明显的盲点),并且基本的读/写测试不会揭示每种类型的缺陷或其他错误。相应地设置您的期望,如果您有理由怀疑内存不好,请考虑尝试几种不同的测试工具。
| 归档时间: |
|
| 查看次数: |
28438 次 |
| 最近记录: |