内存测试是指内存在生产过程中经历的多次检测,这些检测包括:焊接检测、PCB外观检测、功能检测和整体外观检测等。
内存测试是指内存在生产过程中经历的多次检测,这些检测包括:焊接检测、PCB 外观检测、功能检测和整体外观检测等。
另一方面也指软件内存测试。它还需要测试软件的最大内存等资源的占用率,防止软件使用的资源超出系统的限制。同时还需要测试系统资源在极端情况下的软件行为,如系统内存资源被别的应用程序消耗时程序长时间运行后的情况等。
作为计算机不可缺少的一部分,内存性能的好坏对整个计算机系统有着极其重要的影响,随着电子技术的不断革新,计算机 CPU 的性能、总线带宽和主频不断提高,而 CPU 所需的处理数据是直接从内存中获取的,为了匹配 CPU 的运行速率,不让 CPU 长时间处于等待状态,造成硬件资源浪费,就需要内存不断更新换代,不断提高工作速度和存储容量。
随着内存条的不断更新换代,高性能的内存已经成为存储器发展的主流,然而随着内存颗粒容量的增大,单元密度增加,生产制造工艺越来越复杂,生产出的内存产品良率明显下降。因此,必须对内存条进行故障检测,测试的意义:一方面判断 DDR2 及 DDR3 SDRAM 内存条产品质量的好坏;另一方面对计算机内存系统的设计也很关键,内存条质量的好坏直接影响到内存系统的稳定性和可靠性。只有一个性能优良的 DDR2 SDRAM 或 DDR3 SDRAM 内存条才能使服务器、PC 等各种高速系统工作正常[。由此可见对 DDR2 及 DDR3 SDRAM 内存的故障测试是极其重要的。
随着 DDR2 和 DDR3 SDRAM 的广泛应用,方便快捷的检测内存系统成为了行业需求,内存在生产过程中经历了很多次检测,这些检测包括:焊接检测、PCB 外观检测、功能检测和整体外观检测。焊接检测是在内存基本成型时利用 X 光线检测 WLCSP(晶圆级芯片封装)或 BGA(球珊阵列结构)封装的内存颗粒的锡球;PCB 外观检测是人工以目测方式在放大镜下进行;功能检测的测试内容有容量、数据存取、SPD 信息等;整体外观检测是对内存的整体外观进行的最后一次检测。这样就完成了内存出厂前的整个测试工序,当然不同的厂家在功能测试方面采用的方法不同。
内存厂商,大多采用内存自动测试设备(Automated Test Equipment, ATE)对内存条进行测试,运用最多的是 Advantest 测试系统。例如在内存市场一直有较好声誉的宇瞻(Apacer),就是通过最高端的 Advantest 测试系统进行检测。除了 Advantest 测试系统以外,还有 Keysight 的 V5500 测试系统,它们都是检测 SDRAM 芯片或内存条的性能和质量的设备。ATE 测试设备测试项目包括交、直流参数测试及功能测试。其中的功能测试是对 SDRAM 芯片的读、写及数据保持等功能的检测,可以通过改变数据读、写的寻址顺序以及数据图案信息来检测这些功能是否正确。
高档的 ATE 测试设备有:Verigy 公司的 93K 系统、Advantest 公司的 T5581/T5585/T5592 系统以及 KINGTIGER 公司的 KT-2APR0 系统。这些测试系统的特点为:测试速度快;测试精度高;具有完整的时序、电性能和功能测试及分析;供专业的厂商使用;购买价格昂贵。以 Advantest 公司生产的 T5592 为例,该测试系统能够对各种专用存储器进行测试,最高可达到 1.066GHz 的测试频率,最大可测 64 颗存储芯片,同时还对存储器的驱动口与双向口分开测试进行了专门的设计,降低测试成本。
除了 ATE 测试设备测试内存以外,还有一些软件工具能够测试内存,如 RST ( Ram Stress Test)内存测试软件,RST 是美国 Ultra-X 公司的一个维修级系统检测工具,此检测工具是专门给内存生产厂商使用的,RST 在内存生产业使用非常普遍,因为此工具能检测出内存出现的大部分问题,所以是非常好用的一个测试工具,同时此测试软件与 x86 系列计算机相匹配,只要 BIOS 系统能识别的内存容量它都能检测,但是只能检测 DDR 内存;如果要检测 DDR2 内存,需要“微软内存检测工具”,此测试工具对内存有 6 项测试方法,每项都有其独特的测试算法来测试内存故障,但是一般情况下,一项测试就能检测出内存是否有故障四。
另外还有一款优秀的基于 Linux 核心的内存测试软件 Memtest86,该软件对内存故障的检测准确率较高,其测试不仅仅局限于检测内存条的好与坏,还能检测出内存的隐性问题以及内存和系统的稳定性。
与此同时,板载 BIOS 固化的内存测试程序、以及基于 ISA 或 PCI 总线的内存测试卡也可对内存进行测试,但这几种测试方法的缺点是需计算机主板芯片组支持,且必须要在能点亮的情况下才能进行测试。
研究嵌入式软件内存测试的背景
软件内存测试是提高软件质量的一个重要手段,据统计,国外软件开发机构 40%的工作量花在软件测试上,软件开发费用的近 1/2 用于软件测试。对于一些要求高可靠、高安全的软件,如核反应监控软件、航天软件,测试费用可能相当于软件工程其它费用总和的 3-5 倍。
嵌入式软件和一般的应用软件测试相比,具有自身的特点(特别是对于没有操作系统的嵌入式应用软件而言):
1)嵌入式软件是在特定的硬件环境下才能运行的软件。因此,嵌入式软件测试最重要的目的就是保证嵌入式软件能在其特定的硬件环境下更可靠地运行。
2)嵌入式软件测试除了要保证嵌入式软件在特定硬件环境中运行的高可靠性,还要保证嵌入式软件的实时性。比如在工业控制中,如果某些特定环境下的嵌入式软件不具备实时响应的能力,就可能造成巨大的损失。
3)嵌入式软件产品为了满足高可靠性的要求,不允许内存在运行时有泄漏等情况发生,因此嵌入式软件测试除了对软件进行性能测试、GUI 测试、覆盖分析测试之外,还需要对内存进行测试。
内存测试需要测试软件中的内存越界访问、内存资源泄漏情况。内存越界主要包括数组越界读写、“野指针操作”和堆栈溢出等几种。内存资源泄漏情况则包含较多的种类,如分配的内存没有释放、打开的文件没有关闭、socket 没有关闭、Windows 窗口句柄没有关闭等。内存越界和内存资源泄漏是普遍存在的严重问题,可以说如果解决了内存越界和内存资源泄漏问题,软件中的 Bug 就消除了一大半以上。
内存测试还需要测试软件的最大内存等资源的占用率,防止软件使用的资源超出系统的限制。同时还需要测试系统资源在极端情况下的软件行为如系统内存资源被别的应用程序消耗时程序长时间运行后的情况等。