一种面向功能安全的新型软件测试方法

2021-08-11 04:25:06唐风敏李春书冯欣阳夏显召
科学技术与工程 2021年18期
关键词:故障注入电控原型

唐风敏, 李春书, 冯欣阳, 夏显召, 戎 辉

(1.河北工业大学机械学院, 天津 300401; 2.中汽研(天津)汽车工程研究院有限公司, 天津 300300)

随着车载汽车电控系统的发展和普及,人们在享受到汽车电控系统带来的便利的同时,汽车电控系统带来的失效风险也在日益增加。微控制器作为汽车电控系统的大脑,安全问题更是不容忽视。汽车电控系统在工作过程中,可能会由于电磁干扰、物理碰撞等多种多样的原因导致汽车电控系统失效。为了解决汽车电控系统失效所导致的人身安全和财产安全等问题,功能安全标准ISO26262应运而生,该标准对汽车电控系统的开发流程和检测指标提出了相应的要求。ISO26262:2018是现行的功能安全标准,该标准对汽车电控系统从设计开发到运营报废提出了一系列的要求。ISO26262:2018对汽车半导体应用也提出了要求,对汽车半导体的开发、测试等多方面提供了标准。国外众多企业及研究机构因起步较早,在汽车半导体功能测试安全方面已有了相当的研究。涉及虚拟仿真以及故障注入测试[1-5];文献[1]针对SoC(system on chip)安全性分析方法的局限性,提出了通过模拟对诊断覆盖率实现真是结果的定量方法,从而减少了不必要或者复杂的安全机制;文献[2]通过使用硬件仿真平台,采用故障注入的方法验证了SoCs的鲁棒性;文献[3]提出了一种基于仿真的电路级别的故障分组方法,以减少要模拟 的故障数量,且不会遗漏关键型故障;文献[4]为了减少门级故障注入活动花费的大量时间,提出了通过寄存器传输级的SEU(single-event upset)来表示门级SET(single-event transient)的方法,结果表明,该方法能够减少数十至数百倍的故障空间,从而减少故障注入的工作量。文献[5]通过在硬件在环回路仿真器上通过故障注入方法验证了动力装置的数学模型。中国在半导体层面的功能安全测试研究起步较晚,大部分文献主要停留在系统的功能安全开发及测试,研究的对象主要是控制器以及整车层面,测试以实际对象为主,吉林大学在电子换挡系统的识别风险、量化风险、降低风险等方面作出了突出贡献[6];电子科技大学李耀等[7]提出时间状态机测试建模理论和测试用例生成方法;孙德明等[8]基于dSPACE设备设计了整车控制器硬件在环测试方案,搭建了测试环境,并对某车型整车控制器进行了硬件在环测试;杨刘倩等[9]则是对电动汽车的电源管理系统进行硬件仿真的功能安全测试;赵晓凡[10]基于功能安全对电磁兼容的7个方面阐述其设计及防护方法。对基于硬件环境开发的系统软件的测试多数也是对最基本的的芯片系统来进行的,对基于新型微控制芯片开发的系统件的测试研究较少。现结合ISO26262的测试标准和汽车V模型开发中对测试相关的要求,以英飞凌TC397作为芯片原型,使用VDK建立TC397虚拟原型,在芯片流片前利用虚拟原型采用软硬件集成的方式对基于TC397开发的应用软件进行测试,为基于TC397芯片开发的应用软件测试提供思路和方法。

1 功能安全标准ISO26262

汽车功能安全开发过程中一般都采用V型开发,如图1所示,在基于功能安全的开发体系下,测试环节是必不可少的,测试在软硬件集成层面、系统集成层面以及整车层面三个不同的水平上进行[11]。软硬件层面的测试作为最底层的测试,具有不可替代的作用。当开发人员将系统软件设计完成后,需要对开发得软件进行集成测试,软件集成有两个概念,一种是纯粹的软件模块集成,一个是硬件和软件相结合的可编程电子集成[12],相比于纯粹的软件模块集成,软硬件结合的集成测试方式具有真实性强、实时性好、易发现软件在真实环境下运行的缺陷等优点。ISO26262对软硬件集成层面测试提出以下测试要求:基于技术安全需要的测试、软硬件层面的故障注入、软件层面接口的一致性、软硬件层面的鲁棒性测试四个方面。

图1 汽车V模型开发流程

根据功能安全测试要求以及汽车的V模型开发流程,本研究在软硬件层面进行故障注入来验证系统软件对各种故障的诊断覆盖率。ISO26262中推荐通过故障注入的方式即将故障引入软硬件集成系统中,通过技术手段观察当故障发生后的软件是否可以正常工作,软件安全模块的反应时间,来评估安全机制的诊断范围、诊断时间间隔和故障反应间隔,确定故障效应等。ISO26262在第11部分即对半导体的应用指南中采用汽车安全完整性等级-ASIL来描述指定安全目标的概率高低。用A、B、C、D等级来表示,其中D级最高[13]。ASIL标准贯穿汽车的整个生命安全周期,不同的ASIL对应用软件提出了不同的故障覆盖率要求。等级越高就要求应用软件对故障的覆盖率越高,在软件测试中需要分析和检测的故障模式就越多。以系统软件的中断处理功能为例,ASIL-B等级下系统软件只需要对中断卡滞故障进行覆盖,但是在ASIL-D等级下,系统软件需要对中断遗漏、中断错误执行、中断卡滞、中断优先级错误等多种故障进行覆盖。

现以英飞凌TC397作为硬件原型,通过VDK工具,建立TC397的虚拟原型,为基于TC397硬件环境下开发的系统软件提供真实的运行环境,通过故障注入方法测试系统软件是否正确配置以及是否启动相应的安全机制,验证应用软件的开发是否符合相应的汽车完整性等级,验证等级最高可以达到ASIL-D水平。TC397属于英飞凌TC3xx系列,具有高性能的六核结构,其性能、加密和安全功能都符合ISO26262 ASIL-D的体系认证,这些优点都使其适合众多汽车应用[14],众多汽车企业纷纷使用其作为电控系统的控制器芯片。

2 基于虚拟原型的故障注入方法

采用Virtualizer开发套件作为建模工具,VDK是一套软件开发工具包,可适用于各种类型的软件开发,也适用于常用处理器架构。VDK提供了多种虚拟原型,用户可使用这些原型来开始软件启动,或扩展这些原型以符合设计要求。利用VDK有助于加速汽车软件开发、提高质量和可靠性,并且降低汽车软件开发成本。

基于芯片虚拟原型的故障测试流程图如图2所示,测试原理图如图3所示。

图2 基于虚拟原型的故障注入测试流程图

图3 基于虚拟原型的故障注入测试原理图

2.1 搭建虚拟芯片测试环境

由于安全模块数量众多,现仅以TC397的电源管理模块PMS(power management system)为例,进行后续的测试步骤。软件测试环境参数配置如图4所示。对TC397相应的模块进行分析,确定安全相关的模块。其部分安全模块如表1所示。

图4 测试环境配置

表1 TC397安全相关模块

2.2 安全用例分析

当模型建立完成后,需要针对要测试的软件模块导出相应的测试用例,这些测试用例要求涵盖寄存器、信号以及软件全局变量等测试对象。电源管理系统不同的诊断覆盖率所需要分析的失效模式如表2所示。

PMS可以管理多个不同的电压,包括外部电源电压VEXT、备用域供电电压VEVRSB、内部电压VDDPD等。根据表2中所描述的失效模式和各种电压排列组合,得出PMS系统相应的具体测试用例。

表2 不同的诊断覆盖率所需要分析的失效模式

2.3 测试场景流程定义

确定故障注入测试场景流程,首先选择测试项目,本研究选择ASIL-D等级下PMS的系统软件的安全机制和配置。本文研究以PMS的系统软件的安全机制和配置为目的,第二步确定测试前置条件,本研究测试采用的前置条件为保持芯片运行模式或者睡眠模式,第三步是故障注入,由于验证等级是ASIL-D,因此所有的电压失效模式都要进行故障注入,故障注入有两种不同的方式,以PMS为例,故障注入1是通过直接改变供压电源来注入故障,故障注入2通过改变安全管理单元的标志位即SM Flag ALM[x]进行故障注入。PMS的工作模块以及故障注入流程如图5所示。

图5 功能安全测试流程

最后查看TC397的输出结果,观察安全机制对应的安全机制是否能够作用,根据测试结果与预期行为对比,可以判断软件开发是否达到预期要求。

2.4 测试结果分析

当测试场景流程定义完成后,需要调用故障注入脚本来对PMS中的不同的电压进行故障注入测试,以PMS的过压欠压为例,故障注入脚本研究件如下所示:

import sys

import struct

sys.path.insert(0, ′vpconfigs/shared/sim_probes′)

import sim_utils

from sim_utils.sim_print_messages import *

sys.path.insert(0, ′vpconfigs/shared/vdk′)

import smu_utils

......

本示例中的应用软件行为如下:当PMS发生电压故障时,TC397会重置Core0并启动处于掉电状态的Core1-Core5。通过注入电源故障进行软件响应测试对PMS进行故障注入,观测诊断响应及安全机制的反应。

当TC397启动后,其注入过程及结果如图6所示。 图6(a)表示TC397虚拟模型启动,Core0启动,TC397处于运行状态,从图中也可以观察到六核中各个核软件的工作情况。图6(b)显示在500 μs时进行过压故障注入,掉电状态的Core1-5的启动和Core0的重启是在过压故障产生后的100 μs内完成。通过图6(c)可以发现电源过压的情况下,安全机制的过压标志位做出反应,诊断时间间隔在5 μs内,故障产生后20 μs内安全机制启动,Core0在故障产生后40 μs内掉电重启,安全机制发挥作用,软件正确响应。确认安全机制和响应处理的复杂软件配置是正确。通过注入故障结果的分析也可以得到在故障注入后,软件函数模块的反应,进而确定其安全机制是否正确运行。其余不同电压的过压欠压、漂移、电源尖峰都是通过这种方法进行功能安全的故障注入测试,以达到最高的验证等级。

图6 故障注入及结果

3 结论

对基于TC397虚拟原型的应用软件进行功能安全测试,采取故障注入的技术,检测故障发生后安全机制是否启动来验证软件配置的正确性以及是否满足相应的ASIL需求,测试水平最高可达到ASIL-D。通过VDK工具可以观察到芯片内部的软件各个函数在故障注入后的表现,评估诊断时间间隔和故障反应时间间隔等指标。这种测试方法可以极大缩短软硬件集成的测试时间,加快测试流程,减少不必要的成本,为基于TC397开发的应用软件的功能安全测试提供了思路。

猜你喜欢
故障注入电控原型
上海电控所: 三心同绘创新景 电控电抗竞争辉
经营者(2024年1期)2024-03-19 02:02:34
模拟训练装备故障注入系统研究
包裹的一切
SM4算法前四轮约减轮故障注入分析
采用修改-回放原理的1553B故障注入方法
测控技术(2018年7期)2018-12-09 08:58:10
《哈姆雷特》的《圣经》叙事原型考证
论《西藏隐秘岁月》的原型复现
剑南文学(2016年14期)2016-08-22 03:37:42
列车MVB总线故障注入研究
原型理论分析“门”
人间(2015年20期)2016-01-04 12:47:08
电控发动机点火控制系统的原理与诊断