我想写一个简单的RAM测试来检查嵌入式设备上的内存的基本完整性。这是我想要做的:我会如何写入内存?
本质上写出某些模式:“10101010101010”到一块内存然后写入“01010101010”,然后重新写入第一个并测试以查看模式是否被写入正确。
我想用C写这个程序。我在想如何去写这个模式。我希望能够打开和关闭RAM内存单元中的某些位。
,我只想获得分配的内存块,然后写这样做
uint32 pattern = 0xaaaaaaaa;
uint32 * mem_loc = malloc some memory;
int i = 0;
int offset = 1;
uint32 * location = &mem_loc;
while ((&mem_loc)++ && (!i)) {
&mem_loc = pattern;
if (!(&(mem_loc+offet))) {
mem_loc = location;
pattern = 0x55555555;
i++;
}
}
//Check to see if values written are consistent
请问上述工作的代码?将十六进制模式写入内存会将模式中的位打开吗?
我知道上面的代码是非常可怕的,但我只是想得到一个想法,如果用正确的逻辑做这样的事情会达到预期的结果。
谢谢
谷歌“走路的人”和“走路零”的内存测试算法 – Throwback1986 2012-03-26 15:20:37
你已经概述的一般想法应该工作。你有的代码甚至没有接近。举个例子,我不确定'!int'甚至应该是什么意思,但我很确定没有正常运行的编译器会接受它。 – 2012-03-26 15:22:37
没有足够的信息 - 你的处理器有缓存吗?你的操作系统如何?它有虚拟内存系统吗?你关心你写的地址吗?除此之外,你的代码示例没有意义。什么是'!int'? 'malloc()'的使用似乎表明你的代码正在从RAM运行 - 这并不表示它的“基本完整性”是好的吗? – 2012-03-26 15:23:43