嵌入式开发——用memtester软件进行内存压力测试

内存压力测试

内存在现代计算机体系中是重要的组成部分,很大程度上影响计算机整体的性能,在设备中必须确保内存可以长时间无差错的运行。在嵌入式开发中,如果开发一块新的开发板或者在原有的开发板里更换了内存,都要进行内存的压力测试,确保硬件上内存是没有问题的。这也是方便以后的问题定位,如果内存压力测试没有问题,那以后内存崩溃基本可以确定是软件造成的。为了对内存进行压力测试,有人开发了memtester软件。

memtester软件介绍

1.memtester可以在官网下载(http://pyropus.ca/software/memtester/).memtester会对内存进行与运算、或运算等操作,以此来校验数据是否出错。
2.测试内存的来源。简单看过memtester的源码,在用memtester软件时需要指定内存大小或者物理地址,其中物理地址不是必须的。如果只指定要测试的内存大小,memtester软件会调用malloc函数去申请内存;如果同时指定了物理地址和内存大小,memtester软件会去测试物理地址开头的相应大小的内存。指定物理地址需要谨慎,如果你指定的物理地址已经被人使用,memtester软件强制去占用可能会导致程序崩溃。
3.memtester软件的测试思路。memtester软件对不同的运算操作有不同的测试思路,基本测试思路是将要测试的内存对半分为两块并赋值相同的数据,其中一块内存拿去做运算,另一块内存留作对比。如果内存没有出错,那两块内存对应地址的数据应该相等,如果不相等就会报错。在没有指定物理地址时,报错会打印出0x开头的地址,这是出错内存单元相对于起始内存地址的偏移量而不是实际的物理地址,因为我们的内存是malloc申请的虚拟地址,所以报错打印的这个地址和物理地址并无直接关联。

memtester软件使用方法

这里介绍的是memtester软件在嵌入式设备上进行内存压力测试,基本思路就是编译出可执行文件并导出到目标板,然后在目标板上运行。
1.下载并解压memtester软件;
2.配置和编译:因为是在嵌入式设备上运行,所以指定相应的交叉工具编译链。把根目录下“conf-cc”和“conf-ld”文件的默认编译器改为目标编译器,然后make编译。
3.导出程序到目标板:通过nfs服务器挂载或者把可执行文件放到根文件系统里重新烧录,导出方法有很多,推荐nfs服务器挂载的方式。
4.运行程序memtester [-p 内存物理起始地址] [测试内存大小B/K/M/G] [测试次数],其中测试内存大小是必须指定的,物理地址和测试次数可以省略。如果省略物理地址,memtester就随机找空间的内存测试;省略测试次数就会一直测试,指定手动结束。其中注意指定测试内存大小时不要超过可用内存大小,可以提前用free查看可用内存大小。

你可能感兴趣的:(软件工具的用法,内存管理,嵌入式)