如何在基于ARM的系统上测试RAM的数据损坏?


20

我有一个嵌入式设备。它基于ARM,具有Linux 2.6.31,并具有256 MB RAM。

我想了解一些什么/最有效的方法来测试设备RAM的数据损坏。是否有某人可以建议的测试/软件?

注意:

我现在有个中期。我是从Ulrich Dangel(如下)的建议中得到的。

我现在也已经mtest从uboot进行了设置。

我可以使用其他测试/方法吗?


2
请注意,这是一个ARM CPU,而不是x86。不幸的是,Memtest86 +在这种情况下无法工作。
雷南

我来了 我可以使用其他测试/方法吗?
阿加瓦尔

1
@abc您还想要什么?我认为如果这些方法不能产生您想要的结果,您还会遇到其他问题。mtest基本上和memtest86 +一样。您基本上有不同的选择,可以从操作系统(如linux)运行内存测试(虽然可以,memtester但是可能无法测试整个物理区域)。您还可以使用一些小型系统(uboot)来测试内存(mtest
Ulrich Dangel,2012年

是Marvell的处理器吗?我在marvell网络处理器上有相同的问题,它与您的配置完全相同(ARM / 256MB RAM / Linux 2.6.31)。
Tim Wu

这是一个类似的堆栈溢出问题。这里的所有测试都可以发现一些问题。他们不会发现所有问题,实际上,这很难做到。只有非常好的电路板仿真工具和建模可以验证这一点。不是软件。如果这样做,那么唯一的问题将是DDR芯片(或可能是主机控制器),而memtestermtest可能会找到这些。但是,如果他们确实说一切都很好;不要100%排除DDR问题。
artless噪音

Answers:


21

测试内存的一般解决方案是在内存中写入特定的模式0xFFFFFFFF,然后再读取并比较结果。您可以并且当然应该更改模式以发现问题。诸如此类的一些解决方案memtest86+还会生成随机模式,并更改其用于写入内存的方向。有关memtest86中使用的算法的更多详细信息,请查看其技术页面。这篇文章中提供的所有解决方案都使用基本相同的基础思想。

如果您想从Linux内部运行测试(您在文章中提到了Linux),请看看memtestermemtest套件,它们都可以与arm一起使用。首先,您应该使用memtester,因为它基本上可以完全满足您的要求。

从Linux内部测试内存有一些缺点,例如您不能真正测试所有物理内存,因为内核也需要内存。要使用uboot(比Linux内核小得多)测试内存,请查看集成的mtest命令。它允许您指定地址范围,模式和迭代。使用mtest,您应该能够在不依赖操作系统的情况下进行相当广泛的测试。您只需要确保使用有效的内存范围,否则就可能覆盖uboot内存区域。

如果mtest提供的测试还不够,您当然可以扩展uboot并将其他内存测试功能集成到uboot中。


好,我来了。我还能做其他测试吗?
阿加瓦尔

1
我可以尝试其他测试方法吗?我正在考虑从uboot测试RAM。
阿加瓦尔

@abc好的,我添加了有关uboots mtest命令的注释
Ulrich Dangel,2012年

1
我开始使用uboot命令,现在我看到内存显示uboot命令卡在中间bist > md.w 0x00000023 10 00000023:
Ankur Agarwal 2012年

u-boot支持两种不同的mtest。使用CONFIG_SYS_ALT_MEMTEST进行编译,以进行比默认存储器更广泛的内存测试。
m__
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.