首页> 中国专利> 面向BIT软件测试的存储器故障注入方法及其模拟器

面向BIT软件测试的存储器故障注入方法及其模拟器

摘要

本发明提出一种面向BIT软件测试的存储器故障注入方法及其模拟器,将运行BIT软件的硬件电路板作为模拟器的模拟对象。本发明在模拟器中新增:模拟存储器正常功能的模拟模块,建立并解析故障序列文件的故障建模及模型解析模块,匹配代注入故障的故障注入模块,故障行为模拟模块和外围交联环境仿真模块。本发明方法通过建立故障模式库,编写并解析XML故障序列文件为模拟器可识别的故障序列,在处理器访问存储器时查找相应故障并注入,当触发故障时进行故障模拟。本发明注入的故障模式种类较全,充分覆盖了涉及存储器下的每种故障发生下的测试用例,可对电路板级BIT软件进行较为充分的测试,而只有进行了充分测试的BIT软件。

著录项

  • 公开/公告号CN102789416A

    专利类型发明专利

  • 公开/公告日2012-11-21

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201210194671.7

  • 申请日2012-06-13

  • 分类号G06F11/36(20060101);

  • 代理机构11121 北京永创新实专利事务所;

  • 代理人周长琪

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-18 07:21:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-28

    未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20141231 终止日期:20160613 申请日:20120613

    专利权的终止

  • 2014-12-31

    授权

    授权

  • 2013-01-16

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20120613

    实质审查的生效

  • 2012-11-21

    公开

    公开

说明书

技术领域

本发明涉及可靠性工程方面的故障注入技术和计算机工程方面的存储器技术,特别是涉 及一种面向BIT软件测试的存储器故障注入方法及其模拟器。

背景技术

一个系统、设备或产品可靠性再高也不能保证永远正常工作,使用者和维修者要掌握其 健康状况,要确知有无故障或何处发生了故障,这就要对其进行监控和测试。于是希望系统 和设备本身能为此提供方便,这种系统和设备本身所具有的便于监控其健康状况、易于进行 故障诊断测试的特性,就是系统和设备的测试性。测试性是指产品能及时准确地确定其状态 (可工作、不可工作或性能下降)并隔离其内部故障的一种设计特性。随着系统和设备性能 的提高和复杂性的增加,测试性越来越受到人们的重视,许多新技术、新方法都应用到了测 试性之中。机内测试(Built-In Test,简称BIT)是系统或设备内部提供的检测和隔离故障的 自动测试能力。当前,机载电子设备增多,机内控制高度集中,使得BIT达到空前的重要程 度。测试性研究的热点,就在于研究BIT以及BIT进一步发展的技术,如故障预测与健康管 理。

BIT的功能是在系统出现故障时能够进行故障检测与隔离,那么BIT本身也会发生故障, 存在BIT设计不当、BIT虚警等问题,则在进行BIT设计时,如何验证BIT的功能是否达到 了预期设计的目标就成为一个问题。由于BIT软件实现部分基本承载了BIT全部逻辑功能, BIT软件实现部分(简称BIT软件)和普通软件相比,具有检测、隔离以及处理电子设备系 统硬件故障的功能特点,实时性强,可靠性要求高。BIT软件是否可靠决定了航空电子设备 能否正确检测和处理故障,进而关系到整个系统的可靠性和安全性。与此同时,设备在正常 运行过程中,并不会频繁发生故障,甚至很多故障很难复现,因此依靠收集外场数据很难对 设备的BIT功能进行全面有效的评估。所以迫切需要一种对BIT软件进行测试的有效方法和 实施途径。

故障注入技术是BIT软件测试中一种有效的手段,通过人为对系统注入故障并运行BIT 软件,观察其故障检测、隔离能力,从而检验BIT软件的设计是否合理、测试能力是否符合 设计要求等。

然而传统故障注入技术面临诸多问题:基于硬件的故障注入技术虽然注入真实的硬件故 障,但受限于电路板上元器件的高密集性,已没有足够空间附加探针、插座等硬件故障注入 设备,而且比较关注的元器件内部故障也是无法注入的;基于软件的故障注入技术在其他应 用中有种种好处,但BIT软件的代码不开放(或不允许修改)、运行结构复杂、且可达性差, 故而软件故障注入在BIT软件测试中是无处着手的;最后,采用VHDL、Verilog等硬件描述 语言实现的基于模拟/仿真的故障注入技术虽可精确仿真BIT软件运行的硬件环境,但无法支 撑BIT软件在其上运行,作为软件测试工具则无从谈起。

开展BIT软件测试,不仅需要相应的试验方法、技术和规范,还需要相应的故障注入工 具来支持试验执行。但目前,由于在BIT设计指标的考核过程中缺少有效的故障注入工具, BIT软件测试试验无法得到充分地执行,影响BIT技术在工程中的应用。随着航空电子设备 复杂度的不断提高,故障注入工具的缺乏已成为国内外开展BIT试验的瓶颈。

综上所述,常见的故障注入手段应用于BIT软件测试中,或具有一定局限性、或无法实 施,因此尚无有效解决BIT软件测试难题的故障注入方法。

模拟器在计算机工程领域是计算机体系结构研究、处理器指令集研究等方面的重要工具, 具有广泛的实用价值。全系统模拟器模拟了软件运行的硬件环境,可支持客户操作系统及应 用软件在其上的运行。此外,除去运行速度上的差异,软件在模拟器上运行与在真实硬件上 的运行情况是无差别的。

目前,国内外尚缺乏评测针对板上器件的BIT软件的有效方法和测试设备。在动态测试 方面,受专业知识、环境技术条件等方面的限制,存在两方面的问题:(1)在测试用例的设 计中缺少对于电子设备系统的全面分析,对异常用例的设计不够全面;(2)考虑到BIT软件 检测故障模式而设计的异常用例,但由于BIT软件自身功能特点,使得部分异常用例的施加 需要在实际硬件中注入故障才能实现。但硬件故障注入方法无法适用于高密集度的电子设备 中。这样,很多用例即使设计了也无法执行。这些原因都导致BIT软件测试不充分,使得很 多问题在实际使用过程中才被发现,造成严重的后果。

发明内容

本发明所要解决的技术问题是如何提供一种有效的用于板级BIT软件测试的故障注入技 术。具体,本发明提供了一种面向BIT软件测试的存储器故障注入方法及其模拟器。

一种面向BIT软件测试的存储器故障注入模拟器,将运行BIT软件的硬件电路板作为模 拟对象,在模拟器中设置如下模块:正常功能模拟模块、故障行为模拟模块、故障注入模块、 结果回收模块、故障建模及模型解析模块和外围交联环境仿真模块。模拟器运行在宿主机上, BIT软件运行在客户机上。

正常功能模拟模块实现了对存储器的正常功能模拟,包括模拟存储单元的存储功能,以 及处理器对存储器的正常读写访问功能;具体通过如下方法实现对存储器的正常功能模拟: 在宿主机的内存中动态申请指定大小的内存空间,并对申请的内存空间进行分页处理,作为 客户机的物理内存,实现RAM的正常存储功能,对申请的内存空间进行属性设置,RAM设置 为可读可写,并通过二级转换表实现客户机物理地址到宿主机地址的映射,处理器通过查找 二级转换表来实现对相应的存储单元的读写访问;与模拟RAM的方法类似模拟ROM的存储以 及访问,不同在于,将模拟ROM的内存空间的属性设置为只读模式,将ROM的内容存储在文 件里,当需要读取ROM时,先将文件内容载入ROM内存空间再进行访问;对FLASH的功能模 拟中,对启动FLASH的模拟方法,与ROM的模拟方法相同,对于应用FLASH的模拟方法,在 ROM模拟方法的实现基础上,对申请的内存空间添加可写属性以及相应的读写访问函数和擦 除操作函数,并在处理器访问结束后将存储空间里的内容写入文件,以实现FLASH可读可写 且断电后数据不丢失的功能。

故障建模及模型解析模块,首先对要注入的各故障采用XML语言进行故障建模,描述 每个故障的故障元器件、故障位置、故障模式、故障参数、故障触发方式以及故障时间,生 成XML故障序列;然后对XML故障序列进行解析,得到采用C语言表示的模拟器识别的故 障序列,所解析得到的故障序列采用链地址法的哈希表数据结构存储,以故障模式作为哈希 关键字,同一故障模式的待注入故障构成单向链表结构。

故障注入模块接收故障建模及模型解析模块解析得到的故障序列,在处理器访问存储器 时进行故障模式匹配,如果在故障序列中查找到相应的故障,则注入相应的故障。

故障行为模拟模块根据存储器故障发生的行为表现,构造相应的故障模拟函数以模拟存 储故障行为。在触发了某个故障后调用相应的故障模拟函数执行。

外围交联环境仿真模块用于模拟外围环境激励与模拟器的响应,以及模拟模拟器对外的 输入和输出。

本发明提出的一种面向BIT软件测试的存储器故障注入方法,将运行BIT软件的硬件电 路板作为模拟对象,模拟器运行在宿主机中,BIT软件运行在模拟器之上的客户机上,然后 进行如下步骤:

步骤1:对存储器类故障模式进行分析,建立存储器故障模式库;

步骤2:从存储器故障模式库中选取符合本次测试目标的故障模式,并定义相应故障模 式下的故障,通过故障建模及模型解析模块对各故障建立故障模型,将所建立的故障模型写 入故障模型序列文件中;所述的故障模型序列文件为用XML语言描述的文件;所述的对各 故障建立故障模型,是提取故障的6个特征来建立故障模型,6个特征为:元器件,故障位 置,故障模式,故障参数,故障触发方式和故障时间;

步骤3:模拟器读入故障模型序列文件,经过故障建模及模型解析模块解析为模拟器识 别的故障序列,然后将故障序列输入到故障注入模块中;所述的模拟器识别的故障序列,是 用C语言表示的,采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字,同一 故障模式的待注入故障构成单向链表结构;

步骤4:模拟器对存储器进行正常功能模拟,当处理器对存储器进行访问时,执行步骤5; 通过正常功能模拟模块对存储器的正常存储功能进行模拟,并且处理器能够通过地址映射关 系对存储空间进行访问;

步骤5:故障注入模块查询输入的故障序列,判断是否有匹配当前地址能注入的故障模 式的故障,若有执行下一步骤,若无,转步骤4执行;

步骤6:判断步骤5匹配得到的各故障的触发条件是否具备,若都不具备,转步骤4执 行,若存在具备触发条件的,查找所有具备触发条件的故障,然后执行步骤7;

步骤7:故障注入模块注入故障,具体是:为满足故障触发条件的故障进行触发条件设 置,并适时触发故障;

步骤8:模拟器在触发某个故障后,通过故障行为模拟模块调用相应的故障模拟函数实 现故障的行为模拟;

步骤9:监控模拟器运行及故障注入过程,并通过结果回收模块回收执行结果。

本发明的优点与积极效果在于:

(1)本发明提供的故障注入方法及模拟器,解决了BIT软件测试问题,注入的故障模式 种类较全,充分覆盖了涉及存储器的每种故障发生下的测试用例,可对电路板级BIT软件进 行较为充分的测试,而只有进行了充分测试的BIT软件,才能保障航空机载设备BIT预报故 障的准确性、及时性,进而保障系统的可靠性、安全性。

(2)本发明提供的故障注入方法及模拟器,在背景技术所述的用于软、硬件测试的基于 模拟的故障注入的应用技术中均有研究前景,而且结合模拟自身独有的优势,也可将本发明 中的模拟器应用到原型系统的开发阶段,做可靠性预评估、系统测试性设计的早期评价试验。

(3)本发明提供的故障注入方法及模拟器,对BIT软件测试中,对硬件和其上运行的应 用程序均无侵入性与损害。

附图说明

图1是本发明的模拟器所运行的层次结构示意图;

图2是本发明的模拟器整体功能模块示意图;

图3是XML描述的故障模型序列文件的一个示例;

图4是本发明方法中故障建模-解析的流程示意图;

图5是一个解析后的故障序列结构的示例图;

图6是本发明方法中故障模拟-注入的流程示意图;

图7是本发明故障注入的整体步骤流程图;

图8是本发明客户机地址到宿主机地址的映射示意图;

图9是本发明模拟器的一个系统架构图;

图10是本发明模拟器整体实现的一个示例图。

具体实施方式

下面将结合附图和实施例对本发明作进一步的详细说明。

由于航空板的封闭性、不可侵入性等原因,不能在硬件上直接注入故障对板级BIT软件 进行测试。由于模拟器是依照真实硬件功能以软件方式实现的,因此对它可以进行任意修改, 且对硬件和其上运行的应用程序均无侵入性与损害。因此,结合模拟器和故障注入技术应用 于BIT软件测试是一种可行方案。本发明的基本技术思想是:将运行BIT软件的硬件电路板 作为模拟对象,采用模拟器模拟的方法来解决BIT软件测试的瓶颈问题,发挥模拟器的优势, 诸如对模拟对象的详细功能分析、通过模拟方法可注入的故障模式最多(使得测试用例全面, 测试更充分)、对软硬件无任何侵入性、有更好的可控性以及观察性。通过这些分析,认为基 于模拟器的故障注入方法是可以解决BIT软件测试不充分问题的有效途径。下面对本发明的 具体技术方案进行说明。

如图1所示,为本发明模拟器所运行的层次示意图。底层平台称为宿主机(Host),将运 行在模拟器上的软件平台称为客户机(Guest)。模拟器作为宿主机操作系统上的一个应用程 序,通过纯软件的方法将目标体系结构模拟出来,能够让原来运行在PowerPC上的目标软件 (客户机操作系统或/与客户机应用程序)在宿主机操作系统上运行。模拟器要成功地模拟一 个真实的机器,必须能够模拟真实机器所能做的一切事情,从而使客户机能够正常地运行, 并意识不到自己是在模拟器环境中,即与在真实硬件上运行无差别。

如图2所示,本发明提供了面向BIT软件测试的存储器故障注入的模拟器,是对现有的 模拟器进行了改进,增加了如下功能模块:

正常功能模拟模块1:对处理器、存储器、外围设备等元器件的正常行为进行功能级模 拟。本发明中主要说明对存储器的模拟的部分。对于存储器正常功能模拟包括:模拟存储单 元的存储功能,以及处理器对存储器的正常读写访问功能。对模拟器正常功能的模拟具体实 现方法是:在宿主机的内存中动态申请指定的大小的内存地址空间,并对申请的内存空间进 行分页处理,作为客户机的物理内存,实现RAM的正常存储功能,并通过对申请的内存空间 进行属性设置,RAM设置为可读可写,通过二级转换表实现客户机物理地址到宿主机地址的 映射,从而模拟地址译码功能,处理器通过查找二级转换表来实现对相应的存储单元的读写 访问;和RAM功能模拟类似的模拟ROM的存储以及访问,将申请的内存空间的属性设置为只 读模式,将ROM的内容存储在文件里,当需要读取ROM时,先将文件内容载入ROM内存空间 再进行访问;对FLASH的功能模拟中,对启动FLASH的模拟方法,与ROM的模拟方法相同, 对于应用FLASH的模拟方法,在ROM模拟方法的实现基础上,对申请的内存空间添加可写属 性以及相应的读写访问函数和擦除操作函数,并在处理器访问结束后将存储空间里的内容写 入文件,以实现FLASH可读可写且断电后数据不丢失的功能。

故障行为模拟模块2:结合存储器故障模式,模拟故障发生时的行为表现。故障行为模 拟模块2根据故障发生的行为表现,构造相应的故障模拟函数,以模拟存储故障行为,在触 发了某个故障后调用相应的故障模拟函数执行。

具体故障模拟函数的实现方法包括如下:

(1)对存储单元所有与位值出错有关的故障,产生相应的故障掩码与指定存储地址正常 值作与/或/异或操作,之后写回发生故障的存储地址,造成数据错误;

(2)对存储单元阵列的多重访问故障:读操作时通过额外指定访问地址对故障单元进行 读操作,将读出的数据进行与/或操作后,作为返回给处理器的逻辑值;写操作时,主动调用 读写函数对其他故障地址单元进行同数值写操作;

(3)开路故障:在处理器访问存储器函数中添加故障匹配以及故障实现语句,根据地址 条件匹配,当触发该故障时,调用故障实现语句,使访问函数返回值为空,实现无法访问故 障;

(4)FLASH的存储耐久故障以及数据保持故障:在处理器访问FLASH函数中添加故障 匹配语句以及故障实现语句,当触发该故障时,调用故障实现语句,使访问函数返回错误或 异常结果,从而模拟该存储单元失效,不能正常进行擦除以及读写操作;

(5)地址译码器故障:当处理器对某地址进行访问时,对该地址值进行修改后,再对修 改后的地址进行访问,从而实现错误地址访问故障;对于多重选择故障,通过额外调用读写 操作函数,将读出的数据进行与操作或者或操作后作为返回给处理器的逻辑值;对于没有选 中任何地址故障,则在对二级转换表进行查询时通过调用故障实现语句,使得其地址返回值 为空,从而实现无地址选中故障;对于多个地址选中同一个地址故障,则根据故障模型,在 对其他地址进行访问时,将其地址值修改为故障访问地址后再进行访问操作。

故障注入模块3:接收故障建模及模型解析模块4解析得到的故障序列,在处理器访问 存储器时进行故障模式匹配,如果在故障序列中查找到相应的故障,则注入相应的故障。具 体,在模拟器运行遇到某个故障观察点时被调用,故障注入模块3在当前测试的故障序列中, 查找具备触发条件的,且与当前地址对应的故障模式相匹配的故障,如果查找到相应的故障, 则注入相应的故障。

故障建模及模型解析模块4:首先用更接近自然语言的XML语言进行故障建模,描述每 个故障的故障元器件、故障位置、故障模式、故障参数、故障触发方式以及故障时间,生成 XML故障序列。具体故障序列文件的示例可见图3。之后对XML文件进行解析,得到模拟 器识别的故障序列。模拟器识别的故障序列采用C语言表示,采用链地址法的哈希表数据结 构存储,以故障模式作为哈希关键字,同一故障模式的待注入故障构成单向链表结构。

外围交联环境仿真模块5:由于模拟对象(即BIT软件运行环境)不是一块独立的电路 板,而是整个航空电子设备中的一部分,故而需要对其与外围环境的交联加以模拟。模拟外 围环境激励与模拟器的响应,还要模拟模拟器对外输入输出。

如图7所示,本发明的面向BIT软件测试的存储器故障注入方法包括如下九个步骤。

步骤1:对存储器类故障模式进行分析,建立存储器故障模式库。

存储器类故障模式分析(Failure Mode Analysis),是指分析模拟对象的故障模式的影响和 可能的故障模拟方法,选出可以在模拟器中实现注入的故障模式。在FMEA(Failure Mode and  Effects Analysis,失效模式与影响分析)的基础上,根据开发板上处理器的具体情况,制定出 存储器故障模式库和相应的故障模拟方法。下面的表1~表9给出了九种存储器故障模式, 并给出了各故障模式的故障描述、故障位置、故障属性和故障发生场景。

表1第一种故障模式

表2第二种故障模式

表3第三种故障模式

表4第四种故障模式

表5第五种故障模式

  故障模式   开路故障   故障描述   由于断线等原因导致某存储单元无法被访问到   故障位置   存储单元阵列   故障属性   永久故障:存储器开始启动到终止运行   故障发生情景   对该存储单元进行读写访问时,无法正常读出其内容或写入值

表6第六种故障模式

表7第七种故障模式

  故障模式   读写超时   故障描述   对某存储单元进行访问时超出额定访问时间   故障位置   地址译码器或存储单元阵列   故障属性   永久故障:存储器开始启动到终止运行   故障发生情景   对某存储单元进行访问时超出额定访问时间

表8第八种故障模式

  故障模式   数据保持故障   故障描述   不能在要求的时间内保持数据   故障位置   FLASH   故障属性   永久故障:开始启动到终止运行   故障发生情景   当对故障单元进行读访问时,不能得到数据

表9第九种故障模式

步骤2:建立XML故障序列文件。从存储器故障模式库中选取符合本次测试目标的故障 模式,并定义相应模式下的故障,并通过故障建模及模型解析模块4,采用表10所示的故障 特征来对各故障建立故障模型。将所建立的故障模型写入故障模型序列文件中,所述的故障 模型序列文件为用XML语言描述的文件。

通过调研并分析搭载BIT软件的电路板上存储器常见故障,确定提取故障特征如下:

故障元器件:对于存储器故障来讲,元器件就是RAM、ROM或FLASH;

故障位置:故障发生的位置,如存储单元阵列、地址译码器等;

故障模式:对故障模式的描述,如存储器固定故障、地址译码器访问错误地址故障等;

故障参数:故障发生相关的参数,如发生故障的地址、故障触发时间等;

故障触发方式:触发故障的方式,如按时间触发、按访问触发;

故障时间:识别故障为永久故障、瞬时故障还是间歇故障,并包括相关时间信息;

因此,存储器常见故障可以通过上述6个特征来刻画,将上述故障特征抽象为一个元组, 就可建立故障模型的元组表示。M代表一个故障模型,则M可以表示为:

M={component,target,model,params,trigger,time}

表10对各故障所提取的故障特征

 XML元素标记   对应名称   component   故障元器件   target   故障位置   model   故障模式   params   故障参数   trigger   故障触发方式   time   故障时间

XML描述的故障模型序列文件一方面可作为模拟器故障注入功能的故障配置输入;另一 方面,在BIT软件测试试验中可作为试验用例,描述一次故障注入试验的输入样本。这样做 达到了设计功能上的复用性。

如图3所示,为一个XML描述的故障模型序列文件的示例。故障模型序列文件以<test-job> 作为XML根标签,其子标签包括测试名称<name>、开始时间<start-time>、测试描述 <description>、全局定义<global-vars>、故障注入主体<injection>等标记元素。其中<injection> 标签的下一级为本次测试所包含的故障模型序列,故障模型是以<fault>作为标签名称。图3 中给出的例子中定义了两个故障,第1个故障是跳变耦合故障,第2个故障为地址位固0故 障,具体故障关键字及值如图3所示。

步骤3:模拟器读入故障模型序列文件,经过故障建模及模型解析模块4解析为模拟器 识别的故障序列,然后将故障序列输入到故障注入模块3中。

如图4所示,描述了XML故障建模-故障解析-模拟器可识别的故障序列生成的过程。 具体本发明将XML表示的故障模型输入故障建模及模型解析模块4,故障建模及模型解析模 块4中包含一个基于libxml2库开发的XML文件解析器,通过解析将XML表示的故障模型 序列文件转化为采用C语言表示的数据结构组成的故障序列,C语言表示的各数据结构中记 载了相应的故障。模拟器能够识别用C语言表示的故障序列。

解析得到的故障序列采用链地址法的哈希表数据结构存储,以故障模式作为哈希关键字, 同一故障模式的待注入故障构成单向链表结构,如图5给出的示例,例如,故障4、5和6属 于故障模式6,通过链表结构联系在一起。这样考虑了故障按故障模式的划分,一方面照顾 了查询效率,另一方面没有浪费过多存储空间。

如图6所示,将用C语言表示的故障序列输入到故障注入模块3中。

步骤4:模拟器对存储器进行正常功能模拟,当处理器对存储器进行访问时,执行步骤5。

将设置好的测试用例输入模拟器执行,使得模拟器模拟存储器的运行,在未注入故障前, 处于正常运行过程中。

存储器的功能保存数据以及根据处理器给出的地址返回或写入相应的值。模拟存储器的 正常功能即提供足够的存储空间,以及正确的对地址单元进行操作。

具体地,模拟器通过正常功能模拟模块1模拟处理器正常功能,具体实现方法是:在宿 主机的内存中动态申请指定大小的内存空间,作为客户机的物理内存,实现RAM的正常存储 功能,为便于内存管理并对申请的内存空间进行分页处理,并通过二级转换表实现客户机物 理地址到宿主机地址的映射,从而模拟地址译码功能,对申请的内存空间进行属性设置,RAM 设置为可读可写,处理器通过查找二级转换表来实现对相应的存储单元的读写访问;与模拟 RAM的方法类似模拟ROM的存储以及访问,不同在于,将模拟ROM的内存空间的属性设置为 只读模式,将ROM的内容存储在文件里,当需要读取ROM时,先将文件内容载入ROM内存空 间再进行访问;对FLASH的功能模拟,具体而言,对于启动FLASH的模拟,因其存储内容为 启动配置等只读文件,因此与ROM的实现相同;对于应用FLASH,主要用于存储报告等文件, 因此其功能等效于硬盘,在ROM的实现的基础上添加可写属性以及相应的读写访问函数和擦 除操作函数,并在处理器访问结束后将存储空间里的内容写入文件,以实现其可读可写且断 电后数据不丢失的功能。

在处理器对某地址进行访问时,调用故障注入模块3以判断是否需要注入故障。

步骤5:故障注入模块3查询故障序列,判断是否有匹配当前地址能注入的故障模式的 故障,若有执行下一步骤,若无,转步骤4,返回模拟器正常运行。该步骤在进行前,需要 根据当前地址所处位置,例如是FLASH、存储单元阵列或者地址译码器,来确定该位置可以 注入的故障模式。在得到故障模式后,进一步查找故障序列。

该步骤也称为故障模式匹配,就是在故障序列中查找符合注入条件的故障的过程,也即 为一次哈希表查找过程。假设故障模式数为M,有效待注入故障数为N。故障注入模块3第 一次查找故障序列,就是在故障序列中按故障模式的哈希值直接取出当前地址对应的故障模 式下的故障链表,时间开销为O(1)。

步骤6:判断步骤5匹配得到的各故障的触发条件是否具备,若都不具备,转步骤4执 行,若存在具备触发条件的,查找所有具备触发条件的故障,然后执行步骤7。

该步骤也称为触发条件匹配,故障注入模块3第二次查找故障序列,针对步骤5匹配得 到的每个故障,在故障链表中根据该故障模型的故障参数,查找该故障的触发条件是否满足, 若满足,则执行步骤7,若匹配的所有故障的触发条件都不满足,则转步骤4继续正常模拟。 第二次查找哈希表的时间开销为O(N/M)。

步骤7:故障注入模块3为满足故障触发条件的故障进行触发条件设置,并适时触发故 障。

故障注入模块3进行故障触发条件设置,触发方式主要有计时器触发与事件触发,结合 电路板上存储器为模拟对象进行分析,模拟器运行过程中的故障注入基本的触发方式有以下 几种:

1.时间触发:当模拟器计时器执行到指定时刻或者时间范围,故障注入模块3对当前总 线周期进行故障注入。时间触发可以用来模拟间歇故障或者瞬时故障以及指定永久故障的开 始时刻。由于无法准确估计出模拟器运行的精确时刻,时间触发条件往往设置为一个时间范 围,同时与其他触发条件配合共同决定何时向目标系统注入故障。

2.访问触发:当处理器对存储器某地址进行访问时,触发故障注入设备3进行故障注入 动作执行。通过选定不同的访问触发条件可以实现对存储器不同故障模式的故障模拟。

在实际的故障注入过程中,以上两种触发方式可以单独使用,也可以相互组合,采用几 种触发条件相与、相或的方式来控制实际的故障注入触发。

步骤8:模拟器在触发某个故障后,通过故障行为模拟模块2调用相应的故障模拟函数 实现故障的行为模拟。

根据存储器所存在的各种故障模式,在模拟器中预先定义好各种故障,根据故障发生的 行为表现,进行各种故障模式的故障行为模拟,进而形成故障行为模拟模块2。

对于步骤1的故障模式库中存储单元故障,如:固定故障、耦合故障等,按照其故障表 现,构造相应的故障模拟函数实现故障算法。故障算法的基本原理为产生相应的故障掩码与 指定存储地址正常值作与/或/异或操作,之后写回发生故障的存储地址,造成数据错误。

存储单元阵列故障最终都可由固0、固1、位翻转故障三种原子故障组合实现,下面对该 三种原子故障的函数实现进行举例说明。

如32位存储器中位于地址0xabcde开始的第4个存储单元(即第(31-4)位)发生位翻 转故障,故障模拟函数实现功能主体即为

mem→νal^=(1UL《(31-4))

上式中,val为该地址的存储内容,32位故障掩码的第0-26位、28-31位均为0,而 第27位取值为1,通过“异或”操作即使得该地址开始的第4个存储单元发生位翻转故障, 而其余位值不变。

如32位存储器中位于地址0xabcde开始的第8个存储单元(即第(31-8)位)发生固0 故障,故障模拟函数实现功能主体即为

mem→νal&=~(1UL《(31-8))

上式中,val为该地址的存储内容,32位故障掩码的第0-22位、24-31位均为1,而 第23位取值为0,通过“与”操作即使得该存储单元的值固定为0,而其余位值不变。

如32位存储器中位于地址0xabcde的最高位发生固1故障,故障模拟函数实现功能主体 即为

mem→νal |=(1UL《(31-0))

上式中,val为该地址的存储内容,32位故障掩码的第0-30位均为0,而最高位取值为 1,通过“或”操作即使得该地址的最高位值发生固定为1故障,而其余位值不变。

以此类举,可实现所有与位值出错相关的故障。

存储单元阵列的其他故障,多重访问故障:读操作时通过额外指定访问地址对故障单元 进行读操作,将读出的多个数据进行与/或操作后,作为返回给处理器的逻辑值;写操作时, 主动调用读写函数对其他故障地址单元进行同数值写操作。

开路故障:在处理器访问存储器函数中添加故障匹配以及故障实现语句,根据地址条件 匹配,当触发该故障时,调用故障实现语句,使访问函数返回值为空,实现无法访问的故障。

FLASH的存储耐久故障以及数据保持故障和开路故障类似的,在处理器访问FLASH函 数中添加故障匹配语句以及故障实现语句,当触发该故障时,调用故障实现语句,使访问函 数返回错误或异常结果,从而模拟该存储单元失效,不能正常进行擦除以及读写操作。

地址译码器故障:当处理器对某地址进行访问时,对该地址值进行一定修改后(如将源 地址向下移动3个地址),再对修改后的地址进行访问,从而实现错误地址的访问故障;对于 多重选择故障,则可通过额外调用读写操作函数,将读出的数据进行与操作或者或操作后作 为返回给处理器的逻辑值;对于没有选中任何地址故障,则在对二级转换表进行查询时通过 调用故障实现语句,使得其地址返回值为空,从而实现无地址选中故障;对于多个地址选中 同一个地址故障,则根据故障模型,在对其他地址进行访问时,将其地址值修改为故障访问 地址后再进行访问操作。

步骤9:监控模拟器运行及故障注入过程,回收执行结果。

连接到模拟器监控器后可通过命令行形式监控模拟器的运行,包括查看CPU运行状态 (info cpus)、寄存器集状态(info registers)、块设备状态(info blockdev)、物理地址空间分 配(info mtree)、内存某地址值(xp/fmt[addr])等等。

本发明扩展了监控器命令集,加入与故障相关的命令,如查看故障序列(info faults)、即 时触发故障并查看结果(fault register、fault alu、fault memory,…)等。

同时,模拟器监控器支持socket连接,可通过其他软件(在本发明的图10中为消息转化 层软件)自动化实现信息监控和结果回收的过程,并反馈给上层界面,减少人为的参与。这 样就可以做到对模拟器运行及故障注入过程的全面监控和结果显示。

模拟器对存储器的模拟,即模拟存储单元的存储功能,以及处理器对存储器的正常读写 访问功能。对模拟器的模拟具体实现方法是:在宿主机的内存中动态申请指定大小的内存地 址空间,并对申请的内存空间进行分页处理,作为客户机的物理内存。如图8所示,再将客 户机物理内存到宿主机应用地址空间的映射关系保存在地址映射转换表里,通过该二级转换 表可以实现从客户机应用地址空间到主机应用地址空间的映射,即可根据该映射关系实现对 存储器正常寻址以及读写访问。

最后通过结构体链表对申请的各块存储空间进行属性设置,如RAM设置为可读可写、 ROM设置为只读、FLASH设置为可读可写。由于ROM和FLASH内容在断电时不会丢失, 因此将其内容保存在文件里,每次加载文件内容到分配的ROM、FLASH存储空间,实现其 正常功能模拟。

如图9所示,描述应用本发明故障注入的中全系统模拟器的系统架构,模拟对象包括处 理器、存储器、外围设备及总线等。处理器模拟的实现是采用二进制代码翻译将(模拟对象 处理器的)源指令集转化为目标代码块并通过系统调用方式在宿主机上执行。存储器模拟的 实现是利用宿主机的存储空间提供给客户机一个从零地址开始的连续物理内存空间(称之为 客户机物理空间),同时模拟器的flash存储器实现装载客户机映像并读写的功能,在这一部 分的实现逻辑中添加了故障模拟和故障注入的功能以完成本发明的设计目标。外围设备模拟 的实现则模拟了目标外设的转件接口,依靠宿主机提供的运行环境,实现外设的功能模拟;

如图10所示,为实现本发明的模拟器的一个软件实例结构图。从图11中可以看出,在 整个BIT软件测试系统中,本发明的实现部分处于黑色虚线所框部分,主要包括模拟器软件 部分中的存储器模拟部分和消息接口软件的故障建模及模型解析模块部分。其中故障建模及 模型解析模块的实现是在模拟器软件部分实现,但按照其功能特性划归消息接口软件,以突 出系统层次。进一步的,图11中提供了图形用户界面模块以方便操作、监控模拟器运行及故 障注入过程。

图形用户界面包括:

电路板图形化模块:该模块以图形化的方式向用户展示模拟对象。

故障建模模块:该模块以图形化的方式向用户提供建模接口,用户在建模界面可以通过 一些基本操作建立一套故障模型,并生成相应用XML语言描述的故障模型序列文件。

模拟器控制模块:该模块主要提供对模拟器故障注入试验过程的控制功能,如模拟器启 动、暂停、终止等功能,以及对试验配置文件的控制功能,如下载试验配置文件到实时故障 注入软件;所述的试验配置文件包括试验开始时间、试验名称、故障模型序列、从模拟器回 收的试验结果数据等。

信息收集显示模块:该模块主要对模拟器中的故障模型序列及运行结束后的故障注入结 果进行回收,并且提供存储和显示的功能。

本发明提供的故障注入方法及模拟器,解决了BIT软件测试中,异常用例的设计不够全 面,由于硬件的封闭性等,不能在硬件上直接注入故障,使得部分异常用例不适用的问题, 注入的故障模式种类较全,充分覆盖了每种故障发生下的测试用例,可对电路板级BIT软件 进行较为充分的测试。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号