嵌入式软件动态内存检测工具的设计与实现

上传人:仙*** 文档编号:29723587 上传时间:2021-10-08 格式:DOC 页数:37 大小:489KB
收藏 版权申诉 举报 下载
嵌入式软件动态内存检测工具的设计与实现_第1页
第1页 / 共37页
嵌入式软件动态内存检测工具的设计与实现_第2页
第2页 / 共37页
嵌入式软件动态内存检测工具的设计与实现_第3页
第3页 / 共37页
资源描述:

《嵌入式软件动态内存检测工具的设计与实现》由会员分享,可在线阅读,更多相关《嵌入式软件动态内存检测工具的设计与实现(37页珍藏版)》请在装配图网上搜索。

1、 题 目: 嵌入式设备中的内存测试方法研究与开发 - 2 -嵌入式设备中的内存测试方法研究与开发摘要 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。根据国际电气和电子工程师协会的定义,嵌入式系统是控制、监视或者辅助设备、机器和车间运行的装置。一般而言,整个嵌入式系统的体系结构可以分成四个部分:嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件。无论是 ROM 还是 RAM,其稳定性对于嵌入系统的可靠性来说都是至关重要的,因此对于硬件中使用到的 ROM 和 RAM 进行测试是十分有必要的。本课题

2、的主要工作就是对嵌入式系统的存储设备进行测试,如果存在错误,即返回存储器错误的地址。设计说明书着重说明了嵌入式系统内存测试技术的总体思想、设计结构和实现方法。关键词 嵌入式系统,内存,测试 - 3 - 毕业设计(论文)外文摘要TitleTitle Memory test on embedded system Abstract Embedded system is used to apply, and based on computer technology , you can also add or reduce the hardware or software on it . It is a

3、pplicable to the application system possess the rigorous demand calculating machine system special to meritorious service capacity , dependability , cost , bulk and work loss. As the definiens of IEEE, Embedded system is a devices used to control, monitor, or assist the operation of equipment , mach

4、inery or plants. for normally ,the entire Embedded system architectonic structure may separate into four sections as follow : the handler of flushbonding , the outside facility of flushbonding , the operating system of flushbonding and the applications of flushbonding.Whether RAM or ROM ,the stiffne

5、ss is very important to the systems credibility !So it is necessary to have a memory test in the hardware.In my design, it can test the memory in the embeded system,and as a result,if it has any problem,it will return the address where the mistakes take place. This design will expression the thought

6、s and the structure of Memory test on embedded system . Keywords Embedded System,Memory Test.二 五 届 本 科 毕 业 设 计 论 文 第 页 共 页- II -目 次1绪论.21.1 引言.21.2 嵌入式系统概述.21.2.1 嵌入式系统的定义.21.2.2 嵌入式系统的特点.21.2.3 嵌入式系统的展望.21.3 内存的概述.21.4 本文的工作.22内存检测技术简介.23嵌入式系统的内存检测概述.24嵌入式系统的内存检测的设计与实现.24.1 引言.24.2 嵌入式系统内存测试总体设计思想.

7、24.2.1 走 1 测试.24.2.2 地址线测试:.24.2.3 测试存储器本身的完整性.24.3 嵌入式系统内存测试设计结构及实现.24.4 结果及性能分析.24.5 部分代码.25结束语.2致 谢.2参 考 文 献.2附录.2 - 1 -1 1 绪论绪论1.11.1 引言引言在嵌入式设备中需要使用到各种内存,按照存储信息的功能内存可分为如下的种类:只读存储器(Read Only Memory, ROM),用于存储和保存不需要变更的数据,例如操作系统和启动信息等。在现代的嵌入式系统中,通常采用可以通过采用特殊方法进行更新的“只读存储器”来代替传统的 ROM,常见的有 EPROM、EEPR

8、OM、Flash ROM等。随机存储器 RAM(Random Access Memory, RAM),用于存储程序运行时的数据,在系统断电后其中的数据会丢失。无论是 ROM 还是 RAM,其稳定性对于嵌入系统的可靠性来说都是至关重要的,因此对于硬件中使用到的 ROM 和 RAM 进行测试是十分有必要的。1.21.2 嵌入式系统概述嵌入式系统概述1.2.1 嵌入式系统的定义 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,

9、用于实现对其他设备的控制、监视或管理等功能。简单的说,一个嵌入式系统就是一个计算机硬件和软件的集合体,也许还包括其他一些机械部件,它是为完成某中特定的功能而设计的。作为二十世纪人类社会最伟大的发明之一,计算机迈入了其另一个充满机遇的阶段后 PC 时代。形式多样的数字化产品已经开始继 PC 机之后成为信息处理的一大主要工具,并且正在逐步形成一个充满商机的巨大产业。 后 PC 时代的到来,使得人们开始越来越多地接触到一个新的概念嵌入式产品。像手机、PDA 均属于手持的嵌入式产品,VCD 机、机顶盒等也属于嵌入式产品,而像车载 GPS 系统、数控机床、网络冰箱等同样都采用嵌入式系统。形式多样的数字化

10、设备正努力把 Internet 连接到人们生活各个角落,也就是说中国数字化设备的潜在消费者数量将以亿为单位。嵌入式软件是数字化产品的核心。如果说 PC 机的发展带动了整个桌面软件的发展,那么数字化产品的广泛普及必将为嵌入式软件产业的蓬勃发展提供无穷的推动力。 随着中国消费结构的改变,人们对家电的灵活性和可控性提出了更高的要求;这些只能通过家电的数字化和网络化来实现;随着电话通信费用和通信类电子产品的价 - 2 -格进一步下调,PDA 结合数字手机将成为今后个人数据通信和事务处理的最佳选择;同时,对于现代化的医疗、测控仪器和机电产品也需要有专用的嵌入式系统软件的支持。这些需求都极大地刺激了嵌入式

11、系统的发展和产业化的进程。现在,嵌入式软件已经在很多应用领域得到广泛应用。(1)信息电器 信息电器是指所有能提供信息服务或通过网络系统交互信息的消费类电子产品。具有信息服务功能,如:网络浏览、视频点播、文字处理、电子邮件等。 (2)移动计算设备 包括手机,PDA,掌上电脑等各种移动设备。中国拥有最大的手机用户,而掌上电脑(或 PDA) 由于易于使用,携带方便,价格便宜,未来几年将得到快速发展,PDA 与手机已呈现融合趋势。(3)网络设备 包括路由器、交换机、Web server、网络接入盒等各种网络设备。基于 Linux 等的网络设备价格低廉,将为企业提供更为廉价的网络方案。设计和制造嵌入式瘦

12、服务器、嵌入式网关和嵌入式因特网路由器已成为嵌入式 Internet 时代的关键和核心技术。 (4)工控、仿真、医疗仪器等 工业、医疗卫生、国防等部门对智能控制需求的不断增长,同时也对嵌入式微处理器的运算速度、可扩充能力、系统可靠性、功耗和集成度等方面提出了更高的要求。 1.2.2 嵌入式系统的特点 嵌入式计算机系统同通用型计算机系统相比具有以下特点: (1)嵌入式系统通常是面向特定应用的 嵌入式 CPU 与通用型的最大不同就是嵌入式 CPU 大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用 CPU 中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入

13、式系统设计趋于小型化,移动能力大大增强,与网络的耦合也越来越紧密。 (2)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 (3)嵌入式系统的硬件和软件都必须高效率设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。 - 3 -(4)嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 (5)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般

14、都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。 (6)嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。1.2.3 嵌入式系统的展望 随着信息技术的发展,数字化产品空前繁荣。嵌入式软件已经成为数字化产品设计创新和软件增值的关键因素,是未来市场竞争力的重要体现。由于数字化产品具备硬件平台多样性和应用个性化的特点,因此嵌入式软件呈现出一种高度细分的市场格局,国外产品进入也很难垄断整个市场,这为我国的软件产业提供了一个难得的发展机遇。嵌入式支撑软件是嵌入式系统的基础,而与嵌入式操作系统紧密联系的开发调试工

15、具是嵌入式支撑软件的核心,它的集成度和可用性将直接关系到嵌入式系统的开发效率。目前,嵌入式系统工程师队伍迅速扩大,与他们紧密相伴的嵌入式系统开发工具的发展潜力十分巨大。后 PC 时代的数字化产品要求强大的网络和多媒体处理能力、易用的界面和丰富的应用功能。无线网络通讯技术的迅速发展,使更多的信息设备运用无线通讯技术。同时,Java 技术的发展,对开发相关无线通讯软件起到推动作用,因此嵌入式浏览器、嵌入式多媒体套件和无线通讯软件、嵌入式 GUI、嵌入式应用套件、嵌入式 Java 成为嵌入式支撑软件的基本要素,能够组合应用或作为产品单独销售,市场十分巨大。嵌入式市场非常广泛。目前嵌入式系统带来的工业

16、年产值已超过了 1 万亿美元,未来 5 年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生每年 1500 亿美元的新市场。在美国,到下一个世纪接入 Internet 将有一亿辆汽车、几千万台个人通讯装置、每个家庭中 5-20 个联网的家用电器。以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命;同时也对嵌入式系统技术,特别是软件技术提出新的挑战。这主要包括:支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理,此外,当然还需对付更加激烈的市场竞争。 (1).嵌入式应用软件的开发需要强大的开发工具和操作系统的支持 随着因特网技术的成熟

17、、带宽的提高,ICP 和 ASP 在网上提供的信息内容日趋丰富、应用项目多种多样,像电话手机、电话座机及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如 32 位、64 位 RISC 芯片或信号处理器 DSP 增强处理能力; - 4 -同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。目前,国外商品化的嵌入式实时操作系统,已进入我国市场的有 WindRiver、Microsoft、QNX 和 Nuclear 等产品。我国自主开发的嵌入式系统软件产品如科银

18、公司的嵌入式软件开发平台 DeltaSystem,它不仅包括DeltaCore 嵌入式实时操作系统,而且还包括 LamdaTools 交叉开发工具套件、测试工具、应用组件等;此外,中科院也推出了 Hopen 嵌入式操作系统。 (2)联网成为必然趋势 为适应嵌入式分布处理结构和应用上网需求,面向 21 世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要 TCP/IP 协议簇软件支持;由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备 IEEE1394、USB、

19、CAN、Bluetooth 或 IrDA 通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web 或无线 Web 编程模式,还需要相应的浏览器,如 HTML、WML 等。 (3).支持小型电子设备实现小尺寸、微功耗和低成本 为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片。这就提高了对嵌入式软件设计技术要求。如,选用最佳的编程模型和不断改进算法,采用 Java 编程模式,优化编译器性能。因此,既要软件人员有丰富经验,又要发展先进嵌入式软件技术,如 Java、Web 和 WAP 等。 (4).提供精巧的多媒体人

20、机界面 嵌入式设备之所以为亿万用户乐于接受,重要因素之一是它们与使用者之间的亲和力,自然的人机交互界面,就好象司机操纵高度自动化的汽车主要还是通过习惯的方向盘、脚踏板和操纵杆。 1.31.3 内存的概述内存的概述 内存(memory) ,即存储器。在计算机的组成结构中,存储器是很重要的一个部分。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存) ,辅助存储器又称外存储器(简称外存) 。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD 等,能长期保存信息,并且不依赖

21、于电来保存信息,但是由机械部件带动,速度与 CPU 相比就显得慢的多。内存指的就是主板上的存储部件,是 CPU 直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发 - 5 -生断电,其中的程序和数据就会丢失。 既然内存是用来存放当前正在使用的(即运行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即 DRAM) ,动态内存中所谓的“动态” ,指的是当我们将数据写入 DRAM 后,经过一段时间,数据会丢失,因此需要一个

22、额外的电路进行内存刷新操作。具体的工作过程是这样的:一个 DRAM 的存储单元存储的是 0 还是 1 取决于电容是否有电荷,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电;若电量小于 1/2,则认为其代表 0,并把电容放电,藉此来保持数据的连续性。 从一有计算机开始,就有内存。内存发展到今天也经历了很多次的技术改进,从最早的 DRAM 一直到 FPMDRAM、EDODRAM、SDRAM 等,内存的速度一直在提高且容量也在不断的增加。1.

23、41.4 本文的工作本文的工作本文以存储设备中使用到的 FCLINK(FC: Fibre Channel)适配卡(嵌入设备)为例,讨论对于其各内存部件进行测试的理论和实际方法。该系统的框图如下:CPU MemoryDDR-RAMMemory Controller ChipsetProtocol ChipData BufferDDR-RAMPLDFlashx2NVRAMCPUFC ChipBridgeSFPSFPPHYDevice I/FSystem PCI BusPCI-X 80MHz/64bit60 x CPU Bus133-200MHz/64bit100M EthernetUARTLoca

24、l PCI BusPCI-X 80MHz/64bitPCI-Express Bus测试对象测试对象图示说明:图示说明: - 6 -其中 CPU Memory DDR-RAM、Data Buffer DDR-RAM 和 NVRAM 是属于随机存储器RAM(Random Access Memory, RAM),而图中的 Flash X2 是指二块快闪存储器(Flash ROM) ,属于只读存储器(Read Only Memory, ROM)。CPU Memory 容量 128M,Data Buffer 容量为 128M,Flash X2 是的容量是 8M X2,NVRAM 为 32K 的容量。本设

25、计在测试中具体要对嵌入式设备的存储器进行测试,测试中包括对存储器的地址是否全部可以使用,能否完整存储所有数据,确认存储器的内部电路是否有时间延迟、噪音等,以及测试存储器的内存单元的地址解码器功能等等。在所有测试中,目的是测试存储器是否能够正常工作,如果有问题将会返回存储器中的地址,并根据出错码给出一定的提示信息。 - 7 -2 2 内存检测技术简介内存检测技术简介随着时代的进步,几乎每家每户都有电脑,伴随着电脑的普及,人们和电脑配件打的交道也越来越多了,然而内存又是人们很头疼的配件之一,通常我们会觉得内存出错损坏的几率不大,并且认为如果内存坏了,那么它是不可能通过主板的开机自检程序的。事实上这

26、个自检程序的功能很少,而且只是检测容量和速度而已,许多内存出错的问题并不能检测出来。如果你在运行程序时不时有某个程序莫名其妙地失去响应或者打游戏时突然退出游戏返回桌面,甚至直接蓝屏,打开文件时偶尔提示文件损坏,但稍后打开又没问题,这时候有可能是内存出问题了。目前有很多针对 PC机内存检测的工具,其中软件又以 Memtest86、Doc Memory Diagnostic(内存神医)等等软件使用率比较高。在硬件方面,SP3000 又是最流行的测试工具。比如在“内存神医”中,这个内存测试工具软件是一种可自行起动的电脑内存检测软件。它使用方便,操作灵活。它基本可以检测出常见的内存故障。 “内存神医”

27、使用的测试算法和程序检测电脑基本内存和扩展内存。无需拆除内存条即可进行检测。 从网上下载的初装软件可以生成一个自行起动的“内存神医”测试软盘。只要将这个软盘插入欲测电脑的软驱内并起动电脑即可开始内存检测。 “内存神医”提供十种精密的内存检测程序,其中包括 MATS,MARCH+,MARCHC-,以及 CHECKERBOARD 等。选用老化测试可以检测出 95%以上内存软故障。用户可以使用鼠标器方便的选择检测程序和设定测试参数。目前在内存产商中使用广泛的还有内存测试仪,比如 CST 公司的 SP3000 内存测试仪,它首次将 SIMM 和 DIMM 测试功能集成在一个通用的、可单独使用的、便携式

28、存储器测试仪上。该测试仪能进行 30 针 SIMM、72 针 SIMM、168 针 DIMM、 200 针 DIMM等多种存储器模块的测试。它配有支持 PC133、PC100、PC66 SDRAM; FPM; EDO;SODIMM;PCMCIA SGRAM 等模块的简单插拔式适配器。 测试能力 SP3000 SDRAM测试仪配有通用测试台和满足各种用户测试需求的适配器。SP3000 SDRAM 测试仪带有标准 168 针 SDRAM DIMM 插座,可进行 PC133、 PC100、 PC66 SDRAM 测试。 SP3000 DRAM 测试仪带有 72 针和 168 针 DRAM SIMM/

29、DIMM 插座,可进行 DRAM EDO FPM 模块测试。 SP3000 组合测试仪配有上述二个适配器。您可选择不同的适配器来满足不同的需要。SP3000 测试仪灵活多变的模块式结构使其可以测试种类繁多的存储器模块。 测试 SDRAM、SGRAM、DRAM SIMM、EDO DIMM、SODIMM 模块、PCMCIA 存储卡、存储芯片等器件只需选用不同的适配器,而使用相同的测试台。SP3000 测试仪内置 80 个数 - 8 -据位和 16 路复用地址线,使测试容量高达 4G 字节。它的特性为:1.测试算法,定做了二种测试算法。Walk Data 和 Walk Address 测试模式用于快

30、速测试。它可在数秒内完成焊接开/短路的检测。Marching 和棋盘测试算法可进行存储器单元的综合测试。它可检测漏焊,元件交叉污染,非连续故障及记时和噪声等因素导致的故障。测试仪可对模块的 Eeprom 进行测试和编辑(SPD) 。2.增强性能,有一些增强性能用来提高测试精度。它们包括:芯片加热,电压抖动,重复测试,计时参数可调(可选) ,可更改刷新模式和周期,刷新测试,ICC 测量,地址和 RAS/CAS 测试。另外,它还支持带奇偶校验位和 ECC 位的模块。3.简单易用,模块参数(如:访问时间)的确认只需轻轻按下一个按钮。这种自动确认方式使用户可以迅速识别未知模块。测试完成后,故障数据位将

31、显示在液晶显示器上。如您需要打印测试报告,只需将打印机与内置串口相连即可。4.简单易用,这种便携式 SIMM/DIMM 测试仪适用各种情况。在现场,您可使用电池包做电源。在实验室,您可以直接将它接到普通交流电源上。在大批量生产作业时,理想的方案是将 SP3000 与 CST 的 RoboFlex 自动化SIMM/DIMM/SODIMM/RIMM 机械手相配,进行全自动测试。无论何种情况,SP3000 都可连接到 PC 机上运行,或下载公司的升级软件。测试 DDR 的方法,尽管 DDR 存储器与 SDR 相似,但是数据频率的翻倍确实对测试工程师提出了挑战。测试仪不仅要以加倍频率锁存数据读取,而且

32、还要以加倍频率写数据。这要求有二个 DDR 测试区以便进行单独测试。芯片级测试,DDR 芯片测试既在初期晶片阶段也在最后封装阶段进行。采用的测试仪通常是自动测试存储器测试仪,其价值一般在数百万美元以上。测试仪的核心部分是一台可编程的高分辨信号发生器。测试工程师通过编程来模拟实际工作环境;另外,他也可以对计时脉冲边沿前后进行微调。自动测试仪(ATE)系统也存在缺陷。它产生的任意波形数量受制于其本身的后备映象随机存储器和算法生成程序。由于映象随机存储器深度的局限性,使波形只能在自己的循环内重复。因为 DDR 带宽和速度是普通 SDR 的二倍,所以波形变化也应是其二倍。因此,测试仪的映象随机存储器容

33、量会很快被消耗殆尽。为此,要保证一定的测试分辨率,就必须增大测试仪的内存。建立测试头也是一个棘手的问题。因为 DDR 存储器的数据读取窗口仅有 12ns,所以管脚驱动器的上升和下降时间非常关键。为保证在数据眼中心进行信号转换,需要较好的管脚驱动器转向速度。在频率为 266MHz 时,开始出现传输线反射。设计工程师发现在设计测试平台时必须遵循直线律。为保证信号的统一性,必须对测试头布局进行传输线模拟。管脚驱动器强度必须能最大限度降低高频反射。测试头设计模拟,针对测试的设计(DFT)当然收人欢迎,但却不现实。因为自 - 9 -动测试仪的所需的测试时间与花费正比于存储器芯片的存储容量。显然测试大容量

34、的DDR 芯片花费是相当可观的。新型 DDR 芯片的通用 DFT 功能一直倍受重视,所以人们不断试图集结能有效控制和观察的内部节点。专用 DFT 技术如:工业标准化委员会在JEDEC 会上提出的:采用并行测试模式进行多重阵列测试。不幸的是由于考虑到芯片电路尺寸,该方案没有被采纳。DDR 作为一种商品,必须最大限度减小芯片尺寸来保持具有竞争力的价位。存储器模块测试,对存储器模块测试的要求是千差万别的。DDR 模块的制造商假定已经进行过芯片级半导体故障的测试,因而他们的测试也就集中在功能练习和组装错误方面。通过采用 DDR 双列直插存储器模块和小型双列直插存储器模块,可以有三种不同存储器模块测试仪

35、方案:双路读取 DDR 测试结果。这恐怕是最简单的测试仪方案。大多数的测试仪公司一般仅对他们现有的 SDR 测试仪作一些很小的改动就将它们作为 DDR 测试仪推出。SDR测试仪的写方式是将同一数据写在连续排列的二个位上。在读取过程中,SDR 测试仪能首先读 DDR 模块的奇数位数据。然后,通过将数据锁存平移半个时钟周期,由第二通道读偶数位。这使得测试仪能完全访问 DDR 存储器单元。该方法没有包括真脉冲串测试,而且也不是真循环周期测试。采用实时专用集成电路(ASIC)控制器设计 DDR 测试仪并不难。毕竟,新型 ASIC集成块可以很容易达到所需的 266MHz 频率。然而,考虑到测试仪体积与价

36、格方面的因素,采用场编程门阵列(FPGA)作逻辑核心则更具竞争力。采用 FPGA 设计 266MHz 存储器控制器确实是一个挑战,因为它必须使用 0.18 微米线宽的芯片来实现上述性能。即使我们可以得到 0.18 微米线宽的芯片,但整个制备方案还没有进行全面的审核。我们必须与 FPGA 的分销商门合作,以克服所有障碍。我们需要的测试仪不仅仅是价格便宜,而且应当有一定的速度和测试精度。无论其它测试方法如何,存储器模块制造商一直在寻找超级母板模拟器。他们认为最佳测试应当在处于实际工作环境中的母板上进行。然而,制造商们也清楚 PC 机母板本身也存缺陷如:引导速度慢、测试时间长、插槽寿命短,这些均妨碍

37、了它在模块测试仪上的应用。由于技术上的突破,上述问题可以通过专门的软件和硬件设计解决。制造商们准备采用 X86 处理器和 PC 芯片组设计生产新型 DDR 模块测试仪。它将通过专门的测试操作系统大大降低引导时间,另外采用高速缓冲运算与专用软件算法结合延长双列直插式存储器模块(DIMM)插槽寿命。这意味着在更换测试器件时不必关电源和重新引导系统。当然,新型测试仪并不等于母板,它仅是一种优化性能的测试仪。它还将配备重载测试插槽。 - 10 -DDR DIMM 模块测试处理,模块测试仪最重要的部分是自动处理器。处理器一般采用镀金连接器以保证与存储器模块良好的电接触。在频率为 266MHz 时,2 英

38、寸长的连接器将会造成测试信号极大衰减。为解决上述难题,一种新型处理器面市了。它采用普通手动测试仪的插槽。测试仪可以模拟手动插入,平稳地接入待测模块的插槽;一旦测试完成,模块又可以平稳地从插槽中拔出。DDR 测试技术的转变是以一种渐进方式而不是突变方式进行的。JEDEC(工业标准委员会)不再直接干预该技术的发展,而是指出今后的改进方向。根据 JEDEC 的规划,DDR333 将于 2002 年推出;DDRII 将于 2004 年推出。物理封装将由 TSOPII(小型塑料封装)过渡到 FBGA(倒装球格阵列) 。由于内存在人们的生活中做占据的地位日益重要,人们对于内存是否能够正常工作的关注也越来越

39、密切,这也促进了内存技术的发展和内存检测技术的发展。 - 11 -3 3 嵌入式系统的内存检测概述嵌入式系统的内存检测概述有限的 ROM,有限的 RAM,有限的传输速率,使用广泛而且不乏高危场所,这一切都需要嵌入式系统中有一个核心小,效率高,优秀的内存管理。无论是 ROM 还是RAM,其稳定性对于嵌入系统的可靠性来说都是至关重要的,因此对于硬件中使用到的 ROM 和 RAM 进行测试是十分有必要的。在嵌入式系统中,内存约束通常是有限的。内存分析工具用来处理在动态内存分配中存在的缺陷。当动态内存被错误地分配后,通常难以再现,可能导致的失效难以追踪,使用内存分析工具可以避免这类缺陷进入功能测试阶段

40、。目前有两类内存分析工具软件和硬件的。基于软件的内存分析工具可能会对代码的性能造成很大影响,从而严重影响实时操作;基于硬件的内存分析工具价格昂贵,而且只能在工具所限定的运行环境中使用。虽然嵌入式系统应用广泛而且前景光明,但对于一些嵌入式系统基层原理和硬件测试方面还只是一些专业人士比较了解,一般的用户只关心嵌入式系统所能够实现的功能,相比较于 PC 机的内存的广为人知来说,更多的人也只是知道在嵌入式系统中存在内存这一事实。目前在市面上比较有效的测试方法是安捷伦公司推出的 93000SOC测试系统,对嵌入式内存的测试提供了行之有效的解决方案。嵌入式内存测试,嵌入式内存是 SOC 芯片不可或缺的组成

41、部分,因此其测试以及分析的方法也就相当重要。93000SOC 测试系统在内存的测试上,无须额外的硬件,可直接将高速数字测试通道,作为内存测试之用,以达到全速测试的目的,同时在运行中切换逻辑与内存测试,能有效提高产率,并进一步作冗余分析和修补。内存测试与除错,首先,在 93000 提供的 APG(算法图码发生器)软件中,我们可以描述出待测的内存大小,包含 x 和 Y 方向的地址数、FO 位数及其与实体地址的关系,即所谓的不规则图码。因为 93000SOC 系统的独立通道架构,在资源安排上,可任意使用 1024 个测试通道,几乎没有 IO 数的限制,也因此在 DUT 板设计与引脚安排上更具有弹性.

42、当待测对象有多个内存块,或者是对嵌入式内存,只有部份引脚用于内存测试时,利用 APG 中可定义多个测试端口的功能,可以指定不同的引脚至不同的测试端口是仍须定义存取的运作,比如读和写,以及这些运作中是否需要多任务或流水线处理。接着便需选择测试图码,其目的在于利用一连串的读写动作重复测试内存的 - 12 -每一个单元,不同的图码可检测到不同的制程错误,例如固定错误、耦合错误等。93000 已将校验板、步进 6N 等标准的内存测试图码作成图库,使用者可直接选取,或者,根据待测物的特定需求,使用 ASCII 格式自行编辑图码。内存测试的图码需占用大量的向量内存,以 12x 12 的 256MbSRAM

43、 做一次步进 6N 为例,扫描所有的地址需要约 10M 的周期,这还不含其它功能测试的向量。如采用具有独立通道架构的 93000 测试系统,使用软件式 APG 能大大压缩系统内存的占用量至原本的 119,500,即约剩536 周期。因此,在测试具有多功能的 SOC 芯片上,便不须担心因为加入内存测试而需增加系统的内存资源。内存模块因其不同的电路架构,而须特别的除错工具,以便观察待测对象出问题的地方是在哪里。93000 专为内存测试提供了位图与错误存储两种除错工具,另外诸如状态列表、示波器与时序图亦可作为辅助使用。冗余修补,随着高容量内存出现,只要有故障便丢弃整块内存的方式变得不切实际,通常 2

44、Mb 以上的 SRAMDRAM,可在模块上增加多余的行或列,利用激光绕开故障的点。至于有限的行或列是否足以修补故障,则须由测试系统判断。 一般的内存测试系统都有其判断是否足以修补的算法,但很难说是否为最佳化,尤其当待测对象较简单时。93000 提供的是一种动态的冗余判断,当发现有故障点时,其地址与 IO 资料会传回利用 C 编辑的判断程序处理。如果仍可以修补则继续测试工作,反之,已知该芯片已无剩余的列或行可使用。当发现还有故障的地址,表示已无法修补而必须丢弃时,其它的点就可跳过,直接测试另一个项目或跳至下一块芯片,以节省测试时间。高速测试的挑战,对于高速数字电路的测试,93000SOC 系统同

45、样也具有完备的解决方案。目前,93000SOC 的 P 系列产品具有 600MHz、800MHz 直至 1GHz 的测试能力,其 NP 系列产品,更具有高达 10GHz 的测试能力,充分满足了高速 CPU 和网络处理器的测试需求。但是,高速电路的测试不但要求测试系统的能力,也对整个测试环境提出了更高的要求。一般而言,我们首先会面临到传输线的问题,传输线材质的不同,其相对的电容特性及电感特性也不一样。在低速传输的环境中,传输线本身的电容效应,电感效应对于传输的信息不至于有太大的影响,但在高速传输的环境之下,电容效应和电感效应造成了传输信息的失真,无论在芯片内部的数据传输或是在芯片外部的应用方面,

46、我们可以预见传输线本身的材质及电器特性在高速环境下的重要性。 在芯片的测试环境中,包含了测试系统,配套设备如送片机负载板或是探头探头卡及芯片本身等几个主要因素。在整个测试过程中,测试系统送出相关的测试向量,通过负载板探头卡到芯片输入端,然后接收由芯片输出端送出的经由芯片内部逻辑运算后的结果来判断测试的正确性。这样的过程看似简单,但在高速的环境下,测试系统与配套设备间的接口或者配套设备与芯片间的接口,由于接触点的吻合程度, - 13 -或者彼此的电气特性不同,会导致阻抗匹配的问题。为使阻抗匹配,可以在各个接口之间利用匹配电路来补偿接口两侧的阻抗特性,如果有一侧为开路端,则需要在端点加上终端电阻来

47、避免信号的全反射。在各种测试系统中,往返延时(RTD)是一项由于系统本身与芯片之间的连接而具有的一种特征,如图 2 所示,为了确保芯片能够不受传输延时影响,系统本身可校验提前送信号到芯片输入端,或者延迟比较由芯片输出端传回的信号来补偿这样的影响。然而,这种现象若是发生在一个 IO 通道上,当驱动信号与比较信号发生的时间太靠近时,这种补偿是没有效用的,这种发生在传输线上信号冲突的情形称为总线争用,在高速传输的测试中,发生的机率较高。为了避免这种情形可由测试程序的图码和定时来考量,将驱动传送信号前的信号比较情形改为不予考虑或将两者的时间设定分开至少一个 RTD 的时间,在此同时最好能与芯片的设计者

48、一起讨论以确保错误覆盖率。 - 14 - 4 4 嵌入式系统的内存检测的设计与实现嵌入式系统的内存检测的设计与实现4.14.1 引言引言大部分的软件开发者把存储器想成是随机存取的或者是只读的。但是,实际上,每一种都有亚型,甚至有混合型的。在一个 RAM 设备中,存储在存储器中的每一个位置的数据都可以在需要的时候读或者写;在一个 ROM 设备中,存储在存储器中的每一个位置的数据都可以随意的读取,但是不能够写入,有些时候,在一个类似 ROM 设备中改写其中的数据是可能的。这种设备叫做混合存储器,因为它同时表现出了RAM、ROM 的一些特征。RAM 的类型:在 RAM 家族中有二个重要的存储设备:

49、SRAM、DRAM。在他们之间主要的差别在于存储于其中的数据的寿命。SRAM(静态 RAM)只要是芯片中有电就会保持其中的数据直到掉电为止,而 DRAM(动态 RAM)只有极短的数据寿命通常不超过 0.25 秒,即使在连续供电的情况下也是如此。目前,DRAM 的应用要比 SRAM 要广泛的多,原因有以下几方面:1.在同样大小的芯片中,DRAM 的继承度远高于 SRAM,如DRAM 的基本单元电路是一个 MOS 管,而 SRAM 是 6 个 MOS 管;2.DRAM 行列地址按先后顺序传输,减少芯片引脚,也减少了封装尺寸;3.DRAM 的功耗仅为 SRAM 的1/6;4.DRAM 的价格仅为 S

50、RAM 的 1/4。但是 DRAM 也有缺点:1.由于使用动态元件(电容) ,因此它的速度要比 SRAM 低;2.DRAM 需要再生,需要配置再生电路,也需要消耗一部分功率。通常,容量不大的高速存储器大多用 SRAM 实现。ROM 的类型:ROM 家族中的存储器是按照向其中写入的新数据的方法(通常叫做编程)及其可以重写的次数来区分的。这个划分反映了 ROM 设备从硬连线,到一次性可编程,到可擦写可编程的演化过程。这些设备一个共同的特性就是他们都能永久的保存数据和程序,甚至在断电之后。真正第一个 ROM 是硬连线设备,它包含一组预先编排的数据或指令。ROM 中的内容不得不在芯片生产出来之前指定,

51、因此实际的数据用来安排芯片内部的晶体管,硬连线内存依旧在使用,目前被称为“掩膜 ROM” 。比掩膜 ROM 更进一步的是 PROM(可编程 ROM) ,为了 把你的数据写入到 PROM 中,需要使用到设备编程器,还有一种 EPROM(可擦写可编程 ROM) ,只需要把该设备暴露在强紫外线光源下,即可擦除。最近几年存储器的技术已经成熟,RAM 和 ROM 设备之间的界限已经渐渐模糊,现在有几种类型的存储器结合了二者的优点,这种存储器不属于任何一类,总体上可以 - 15 -看做是混合存储设备。混合存储器可以随意的读写,就像 RAM 一样,但可以保持其内容而不需要供电,就像 ROM 一样。有二种混合

52、型设备,EEPROM 和快闪存储器(FLASH-ROM)是 ROM 设备的子代;第三种,NVRAM,是 SRAM 的改版。其中快闪存储器和 NVRAM也属于本次设计中的测试对象。快闪存储器是存储器技术的最新发展,它具有高密度,低价格,非易失性,快速以及电器可重编程等特点。但是向快闪存储器中写入数据很困难,这有三个原因:1.每一个存储位置必须在重写操作之前被擦除。如果旧的数据没有被擦除,写操作的结果会是新旧数据的某个逻辑组合,存储的值通常不是所期望的;2.每次只能有一个扇区或者块被擦除;不可能只是擦除一个单个的字节,具体一个扇区的大小是随设备的不同而变化的,但是它通常是几千字节的量级;3.擦除旧

53、数据的过程和写入新数据的过程是随着制造商的不同而变化的,通常更加复杂。为了使快闪存储器更加好用,就必须加入一个软件层(即快闪存储器的驱动)以使得它更容易被使用,如何创建这么一个软件层不在本文的讨论范围内,因此在这里只是提一下。而 NVRAM(nonvolatile RAM,非易失 RAM) ,NVRAM 通常只是一个带有后备电池的SRAM,当电源接同时,NVRAM 就像任何一个其他 SRAM 一样,但当电源切断时,NVRAM从电池中获得足够的电力保持现存的内容,NVRAM 在嵌入式设备中应用非常普遍;但它非常昂贵,它的应用被限制于存储仅几百字节的系统关键信息。下表中概括了不同存储器类型的特征:

54、存储器种类易失性可写擦除大小擦除周期相对速度SRAM是是字节无限制快DRAM是是字节无限制适中掩膜 ROM否否无无快PROM否用编程器可写一次无无快EPROM否是,利用编程器整个芯片有限制(见说明书)快EEPROM否是字节有限制(见说明书)快(读快写慢)FLASH ROM否是扇区有限制(见说明书)快(读快写慢)NVRAM否是字节无快无论是 ROM 还是 RAM,其稳定性对于嵌入系统的可靠性来说都是至关重要的,因此对于硬件中使用到的 ROM 和 RAM 进行测试是十分有必要的。而各个内存诊断使用的 - 16 -内存测试评价的 pattern,从逻辑上来看是共同的,因此着眼与 pattern 的概

55、要以达到测试的目的。4.24.2 嵌入式系统内存测试总体设计思想嵌入式系统内存测试总体设计思想存储器测试的目的是确认在存储设备中的每一个存储位置都在工作。换一句话说,如果你把数 50 存储在一个具体的地址,你希望可以找到存储在那里的那个数,直到另一个数写入。任何存储器测试的基本思想都是写一些数值到每一个内存设备的地址,检验读回的数据。如果所有读回的数据和那些写入的数据是一样的,那么就可以说存储设备通过了测试。所以只有通过认真选择合适的一组数据你才可以确信通过的结果是有意义的。存储器中可能会存在一些电子线路问题,这个问题可能是由电路板设计或者制造中的错误造成的。连接存储器和处理器的每一根线都是三

56、种中的一种:地址线、数据线、控制线。地址和数据线分别用来选择内存地址以及传输数据。控制线告诉存储设备处理器是要读还是要写,以及数据将被传输的精确时间。如果问题出在数据线路上,几个数据位可能看上去是像“粘”在了一起(也就是说,无论传输的数据如何,二个或者二个以上的位总是包含相同的值) 。类似的,一个数据位可能“粘高” (总是 1) ,或者是“粘低” (总是 0) 。这些问题可以通过写入一个设计好的数据序列来检测。每一个数据管脚可以被设置成 0 或 1,而不受其他管脚的影响;如果地址线出了问题,那么二个存储器位置中的内容看上去可能像是重叠的。换句话说,写到某一个地址的数据会覆盖其他地址的内容。这是

57、因为被短路或者开路的地址线会使得存储设备看到的地址不同于处理器选择的地址。如下图,就是存储器内部线路出现了短路或开路: - 17 -有的时候存储器还会出一个很另类的错误无存储器芯片,这是一个显而易见的问题,但是由于无连接电子线路的电容特性,一些存储器测试不能检测到这个问题,比如,假设使用以下测试算法:把值 1 写入到存储器的第一个位置,然后读回,验证他的值,把值 2 写入到存储器的第二个位置,读回并验证依次类推。因为每一次读的操作都是跟在相应的写操作之后的,所以有可能读回来的数据不代表任何东西,只不过是上次写操作保留在数据总线上的电压罢了。如果数据被过快的读回来,那么表面上看来数据好像已经被保

58、存进存储器即使在总线的另一端没有存储器芯片存在。为了检测出无存储器芯片,测试必须改动。不是在相应的写操作之后以及读入验证,而是执行几个连续的写操作后再进行同样数量的读操作。比如,把值 1 写入到第一个位置,值 2 写入到第二个操作,值 3 写入到第三个位置,然后验证第一个位置的数据,验证第二个位置的数据等等。如果数据的值是唯一的(像上面所述的测试那样),那么有无存储器芯片就可以被测试出了:读回来的第一个值会对应于最后写入的值3,而不是第一个写入的值 1。上面所说的只是二种有可能发生的存储器错误,针对以上二种可能的错误目前常用的独立测试方法有三种。下面介绍这三种基本的独立测试的算法:4.2.1

59、走 1 测试 走 1 测试: 由于测试对象是数据线,我们需要确定任何由处理器放置在数据线上的值都被另一端的存储设备正确的接受。最明显的测试方法就是写入所有可能的数据值并且验证存储设备成功的存储了每一个。然而,那并不是最有效率的测试方法。一个更快的测试方法是一次测试总线上的一位。如果每一个数据位可被设置成为 0 和 1,而不受其他数据位的影响,那么数据总线就通过了测试。独立测试数据位的好办法是执行所谓的“走 1 测试” 。下表说明了这个测试的 8 位版本中使用的数据模式。0000 00010000 00100000 01000000 10000001 00000010 00000100 0000

60、1000 0000 - 18 - 一个数据位被设置成 1,并且“走”过整个数据字。用于测试的数据值的数目和数据总线的宽度是一样的。这就使测试的次数从 2n 减少到 n,其中 n 是数据总线的宽度。由于测试的只是这一点的数据总线,所以所有的数据值都可以写入相同的地址。在存储设备中的任何地址都可以。然而,如果数据总线为了连接不只一个存储器芯片而分裂开来,那么你需要在多个地址进行数据总线的测试,每一个芯片对应一个地址。为了执行这一测试,只要把表中的第一个数据写入,通过读操作验证它,写入第二个数据,验证它等待。当到达表尾的时候测试就结束了。可以在写操作之后立即进行读操作,因为我们不是在测试芯片的有无。

61、即使芯片没有安装,这个测试也能提供有意义的结果。下面的函数 memTestDataBus()说明了如何实现这个“走 1 测试”的,在这段程序中,假设调用者会选择测试地址,并在这个地址测试整个一组数据。如果数据总线在正确工作,函数返回 0。否则会返回测试失败的那个数值。如果有故障发生,返回的数值对应第一个有故障的数据行。对于这个算法,如果撇开对硬件构造的考虑,该算法可以简单的用以下是函数代码去实现:memTestDataBus(volatile datum * address) datum pattern; /* perform a walking 1s test at the given ad

62、dress. */ for(pattern = 1;pattern != 0; pattern = 1 ) /* write the test pattern. */ *address = pattern ; /* read it back and check */ if (*address != pattern) return (pattern); return 0; /* memTestDataBus() */在我的设计中,使用这个“走 1 测试”的算法实施“1 位移动测试” ,目的是确 - 19 -保内存单元地址上能够保存“0”和“1” ,4.2.2 地址线测试: 地址线测试:在确认数据

63、线工作正常之后,接着测试地址线。地址线的问题将导致存储位置的重叠。不必要测试每一个可能的组合,同理前面的数据总线测试,只需要确认每一个地址线的管脚都可以被设置成 0 和 1,而不影响其他的管脚。最小的一组可以覆盖所有组合的地址是“2 的整数次方”地址。这些地址类似于“1位移动测试”中的那组数值,他们对应的存储位置分别是 0001h, 0002h, 0004h, 0008h,0010h,0020h 等等。此外,地址 0000h 也需要测试。重合位置的可能性使得地址总线测试更加难实现。在写入其中一个地址后,你必须检验任何其他的地址没有被覆盖。为了确定没有二个存储位置重叠,你应该首先在设备中每一个二

64、的整数幂偏移地址上写一些初始数据。然后写一个新的数据(比如初始值的取反)到第一个测试偏移地址,并且验证在其他二的整数幂偏移地址是否仍旧保存着初始值。如果一个位置(不是刚刚写入的那个)包含了新的数值,就说明存在错误,若没有重叠,那么继续测试。MemTestAddressBus()实现这个测试。函数接受二个参数,第一个参数是要测试的存储块的基本地址,第二个是它的大小,1 字节为单位。大小是用来决定哪一个地址位应该被测试。对于最好的情况,基本地址应该在它们的每一位里包含一个 0。如果测试失败,第一个被发现的错误的地址会被返回,否则返回 NULL .同样,撇开对硬件构造的考虑,这个测试算法可以用以下代

65、码段去实现: datum * MemTestAddressBus(volatile datum * baseAddress,unsigned long nBytes) unsigned long addressMask = (nByte - 1); unsigned long offset; unsigned long testOffset; datum pattern = (datum) 0 xAAAAAAAA; datum antipattern = (datum) 0 x55555555; /* * write the default pattern at each of the pow

66、er-of-two offset. */ - 20 - for (offset=sizeof(datum);(offset& addressMask)!=0;offset=1) baseaddressoffset = pattern;/* check for address bits stuck high. */testOffset = 0;baseaddressoffset = antipattern;for (offset=sizeof(datum);(offset& addressMask)!=0;offset=1) if (baseaddressoffset != pattern) return (datum *) & baseaddressoffset); baseaddressoffset = pattern;/* check for address bits stuck low or shorted */for (testOffset = sizeof(datum);( testOffset & addressMask) !=0; testOffset =1) basea

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!