虚拟平台中的“有意”/“无意”故障注入

news2025/1/13 8:08:51

构建虚拟平台的重点往往会放在系统运行,尤其是在汽车和航空航天的数字孪生领域。只有确保虚拟平台能够正常运行系统,软件才得以可靠地在虚拟平台上运行。

为确保系统正常运行,通常需要解决如何测试异常、故障和其他问题。该过程通常被称为“故障注入”,指采用人为的在目标系统中引入故障的方法,来加速系统的失效,通过观察系统在出现故障之后的行为反应对系统的可靠性进行评价。

故障注入一般可分为:

1、基于硬件的故障注入:指利用额外的硬件将故障引入目标系统的硬件中。

2、基于模拟的故障注入:指在系统设计阶段,采用某种标准硬件描述语言为目标系统建立硬件仿真模型,然后在该模型内部插入故障注入单元来实现故障注入。

3、基于软件的故障注入:指根据一定的故障模型,通过修改目标系统的内存映像来模拟系统硬件或软件故障的发生。

众所周知,在硬件上直接执行故障注入既复杂又昂贵,且难以精确控制注入时间与位置,容易对目标系统硬件造成损伤。虚拟平台是规避这一问题的解决方案。

虚拟平台中的故障注入

虚拟平台作为硬件系统的数字孪生,能够提供任何状态、任何位置的故障注入,如硬盘故障与拒绝服务(DoS,Denial of Service)攻击,从而便捷地供软件进行成本低廉、可靠性高且可无限重复的故障注入。

使用虚拟平台进行故障注入的优点包括但不限于:

1. 虚拟平台的环境具备完全确定性,故障分析时无需考虑环境因素,相对较为简单;

2. 只需插入脚本就能实现自动化的多组合故障注入,测试量及测试速度甚至优于硬件本身;

3. 使用虚拟平台进行故障注入比直接在硬件上进行故障注入可节省约90%的成本。

一般来说,虚拟平台中的故障注入需要对系统模型进行扩展。某些类型的故障可以通过简单的模型状态改变(如修改寄存器值、内存内容等)来引入,但通常需要模型中有特定故障。在实际操作时,除了预先设计的、故意的故障注入外,还会存在不能被明确定义为“故障”的意外故障。

意料之外的“时钟漂移”事件

虚拟平台上的操作系统突然崩溃,而屏幕显示的是“divede by zero”故障——多半是时钟漂移的缘故。

我们知道,实际硬件操作过程中,不同芯片上的处理器内核通常不会出现完全相同的时间,这是由于单个时钟周期通常会在某个时间点出现偏差,俗称“时钟抖动”,而“时钟漂移”指的是因物理设计等原因而出现的偏差。

实际上,虚拟平台中的时间是紧密协调的,并未对真实硬件普遍存在的时钟漂移进行建模,从而导致了这种硬件上未曾发生、只会在虚拟平台上出现的问题。

意料之外的“双板同时插入”事件

在检测系统软件能否正确检测到新插入的电路板并激活的测试中(具体指将电路板热插拔到带电背板),在虚拟平台上同时向系统添加两块电路板时,软件当即崩溃。只要在虚拟平台对应的真实背板上也同时热插拔两块电路板,并对比堆栈痕迹,就可知bug是出在虚拟平台还是系统本身。事实上,在完成读秒、同时将两块板子插入的那一瞬间,背板就被烧毁了。

尽管此种情况发生的概率很低,故障发生的原因可能是短路也可能是过载,但无论是什么结果,都是前期设计时没有考虑到此种情况所导致的——也许这才是开发人员真正需要注意的地方。

▲双板热插拔故障

SkyEye:故障注入的实用工具

天目全数字实时仿真平台SkyEye,是基于可视化建模的硬件行为级仿真平台,工程师可在虚拟测试环境中任意注入故障,随时暂停或反向执行,稳定复现缺陷,有助于突破硬件配置的界限、解决软件问题。

参考文献:

[1] 佟向鹏, 王文凤. 基于故障注入的系统测试方法及应用[C]// 2013年首届中国航空科学技术大会. 0.

[2] Intentional and Accidental Fault Injection in Virtual Platforms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】vi和vim编辑器

目录主题主题 三种常见模式: 正常模式 以vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用[上下左右]按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用「复制、…

监控开源方案

监控开源方案可观测性指标监控日志监控链路追踪开源产品ZabbixOpen-FalconPrometheusNightingale监控需求 : 系统出现问题 , 能及时感知了解数据趋势,预测未来可能出问题了解系统的水位,为服务扩缩容提供数据支撑感知待优化点,如 : 中间件参…

【Unity VR开发】结合VRTK4.0:创建一个按钮(Togglr Button)

语录: 有人感激过你的善良吗,貌似他们只会得寸进尺。 前言: Toggle按钮是提供简单空间 UI 选项的另一种方式,在该选项中,按钮将保持其状态,直到再次单击它。这允许按钮处于激活状态或停用状态的情况&#…

固态存储设备固件升级方案

1. 前言 随着数字化时代的发展,数字数据的量越来越大,相应的数据存储的需求也越来越大,存储设备产业也是蓬勃发展。存储设备产业中,发展最为迅猛的则是固态存储(Solid State Storage,SSS)。数字化时代,海量…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】

目录【ESP32freeRTOS学习笔记】系列新的开篇ESP-IDF对FreeRTOS的适配ESP-IDF环境中使用FreeRTOS的差异性简介关于FreeRTOS的配置关于ESP-IDF FreeRTOS Applications结语【ESP32freeRTOS学习笔记】系列新的开篇 ESP-IDF对FreeRTOS的适配 FreeRTOS是一个可以适用于多个不同MCU开…

JavaWeb开发(三)3.6——代理模式

一、代理模式概述 1.1、代理模式的理解 参考人家的举例,感觉挺形象,容易理解: 就拿明星与经纪人的关系来说,明星就好比被代理类,明星只需要负责唱歌,表演或给粉丝签名等事务,而类似签合同&…

Jenkins从配置到实践

Jenkins从配置到实践 1 持续集成 Continuous integration(CI) 1.1 什么是持续集成? 持续集成Continuous integration(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员…

COLMAP

简介:在使用instant-ngp过程中需要使用COLMAP得到模型的必要输入,比如模型需要的相机外参我们就可以通过COLMAP中的sparse reconstruction稀疏重建得到;而对于depth map深度图我们则需要dense reconstruction稠密重建得到,下面我们…

STM32Cube STM32MP157 M4端CAN通讯实战

1、环境 开发系列:STM32MP157 开发软件:STM32CubeIDE 1.4.0 例程目的:在M4端实现CAN通讯 2、目的 近日,有客户需要在STM32MP157中的M4端实现CAN通讯,我也是初次在M4端编写CAN通讯代码,上网研究了其他人写…

从LeNet到ResNet:深入探索卷积神经网络

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

论文解读15——LightGBM: A Highly Efficient Gradient Boosting Decision Tree

目录1、文章贡献2、直方图算法Histogram(减少分裂点)3、基于梯度的单边采样算法GOSS(减少样本量)4、互斥特征捆绑算法EFB(减少特征)在上篇中提到,XGBoost算法的局限是它在寻找最优分裂点算法中需…

AidLux AI应用案例悬赏选题 | 电路板表面瑕疵检测

AidLux AI 应用案例悬赏征集活动 AidLux AI 应用案例悬赏征集活动是AidLux推出的AI应用案例项目合作模式,悬赏选题将会持续更新。目前上新的选题涉及泛边缘、机器人、工业检测、车载等领域,内容涵盖智慧零售、智慧社区、智慧交通、智慧农业、智能家居等…

正点原子裸机开发之C语言点灯程序

一. 简介 本文针对 IMX6ULL 的裸机开发的(即不带Linux操作系统的开发)。 主要分两部分的工作: 1. 配置 C语言运行环境 2. C 语言编写及运行 二. 配置C语言运行环境 配置 C 语言运行环境的工作分 三部分。如下: 1. 设置…

Nginx配置实例-反向代理案例一

实现效果:使用nginx反向代理,访问 www.suke.com 直接跳转到本机地址127.0.0.1:8080 一、准备工作 Centos7 安装 Nginxhttps://liush.blog.csdn.net/article/details/125027693 1. 启动一个 tomcat Centos7安装JDK1.8https://liush.blog.csdn.net/arti…

YonBuilder 应用构建全新入门指南

用友开发者中心以 YonBuilder 低代码开发为核心,提供可视化 低代码 全代码的一站式开发能力,企业组织和个人开发者可实现业务应用的快速开发。YonBuilder 基于用友 BIP 强大的中台支撑能力,在元数据驱动和运行框架的统一模型架构下&#xf…

Ethercat学习-GD32以太网学习

文章目录1、GD32F4以太网简介2、以太网模框图简介3、以太网主要模块介绍SMI接口RMII接口与MII接口DMA控制器4、以太网配置流程5、其他1、GD32F4以太网简介 GD32F4系列以太网模块包含10/100Mbps以太网MAC,数据的收发都通过DMA进行操作,支持MII&#xff0…

一个C#开发的开源的快速启动工具

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 平常计算机安装软件比较多、或者工作涉及的文件比较多,很多人都会直接放在桌面,一方面不安全,还不容易查找,这时候我们往往,都会放在其他硬盘内&#x…

springboot项目yml文件中${}的使用

作用 项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值; 格式:${自定义参数名:默认值} 代码举例,已开启应用的端口号为例: server:port: ${SERVER_PORT:960…

AI+人类,实现高效网络安全

导语 聊天机器人和生成式人工智能(如 ChatGPT)突然成为主流让很多人感到担忧。很多人开始担忧,人工智能取代人的时代已经到来。 幸运的是,事实并非如此。 更有可能的情况是,人类将与 AI 合作创建工作角色的混合模型。…

Mercedes-Benz EDI需求分析

作为奔驰的仓储服务提供商,企业A需要借助EDI实现仓储流程的自动化。奔驰将车存放在企业A处,由企业A将货物提供给4S店。整体业务流程中将通过EDI系统来进行业务数据的传输,今天的文章主要从奔驰EDI需求概览以及EDI项目业务流程两方面展开介绍。…