“数字孪生”:为什么要仿真嵌入式系统?
01.仿真是什么?
仿真的概念非常广泛,但归根结底都是使用可控的手段来模仿真实的情况,通常应用于现实世界中实施难度大甚至是无法实践的事物。
众所周知,嵌入式系统通常是形式多样的、面向特定应用的软硬件综合体,无论是软件还是硬件都必须被高效率地设计,量体裁衣、去除冗余,具备低功耗、小体积、高集成度等特点,且通常有着高实时性、高可靠性的要求。
在嵌入式系统复杂程度飙升的当下,仿真已成为研发嵌入式系统或解决嵌入式系统中所出现的问题的主流解决方案。具备以下条件的嵌入式系统格外适合应用仿真:
- 硬件尚在开发中/开发速度慢,较为稀缺
- 硬件制作成本较为高昂
- 对安全性、可靠性要求非常高
在此情形下应用仿真,可以带来以下好处:
- 提前进行软件开发、测试和调试
- 测试与硬件相连的其他设备
- 大幅节约成本
- ……
举个简单的例子来理解仿真:
综上,仿真可被应用于嵌入式系统前期设计到后期生产、维护的全生命周期。对嵌入式系统进行仿真的过程是“数字孪生”中的重要一环。数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程[1]。数字孪生体是仿真应用新巅峰,在数字孪生体成熟度的每个阶段,仿真都扮演着不可或缺的角色。
02.仿真的优势
提高效率
嵌入式系统开发人员在进行开发时,如果没有实际设备支撑,就无法测试软件的正确性与合理性,而采用仿真工具便可调试算法的逻辑部分,更侧重于可能存在的物理限制或错误。独立于硬件的深度测试可大大提升嵌入式系统的开发效率并缩短开发周期。
控制测试环境
对嵌入式系统进行仿真可使测试环境高效可控。仿真环境可被随时重置并快速生成新的测试结果,无需等待冗长的硬件重置或调整,且全数字的仿真环境不会受到外界因素的影响,结果更为真实可靠。在上文彩色小球实验中,出现数据收集不足、连接中断、被输入无效数据时,便可应用仿真来解决问题。
提升调试能力
在嵌入式系统出现问题时,由于仿真不受外界物理因素的影响,因此可以更快速地确定问题来源是软件还是硬件。如果在使用嵌入式设备和模拟器进行测试时发生错误,则可能表明算法存在问题。如果错误仅在设备上进行测试时发生,则可能表示硬件存在问题。
下表为《航空机载软件全数字仿真测试系统的设计与实现》一文中,对于某音频设备软件动态测试数据对比情况。可以看到,在测试用例数量和发现的软件问题数量等同的情况下,全数字仿真测试的执行耗时和回归测试耗时相比于全物理测试环境均显著减少。该全数字仿真测试使用了天目全数字实时仿真软件SkyEye。
▲表1 某音频设备软件动态测试数据对比[2]
03.“数字孪生”——仿真工具选择
虽然仿真是开发嵌入式系统的绝佳工具,但如果仿真工具不精准,所做的任何测试都会适得其反,不但无法缩短开发周期,还有可能拖长原定计划。选择一个适合自己的仿真工具是应用仿真的前提。
SkyEye,中文全称天目全数字实时仿真软件,是仿真嵌入式目标系统的虚拟平台,能够完全仿真目标系统中的CPU(Central Processing Unit,中央处理器)、寄存器、内存、外设接口,如图所示:
▲SkyEye功能图
在SkyEye上运行嵌入式软件,可以获得在真实目标系统上进行运行的相同效果。SkyEye还支持多个功能,如支持检查点分析:通过插入检查点,能够保存软件运行状态,支持运行状态的回放分析,便于软件问题的定位;支持访问目标系统状态:测试人员很难对真实物理硬件的寄存器、状态寄存器进行跟踪和控制,但通过SkyEye进行仿真,目标系统的内部状态清晰可见,对排查问题十分有帮助。
案例分析:SkyEye in 数字孪生卫星
本案例展示了如何应用SkyEye搭建卫星数字样机。首先通过系统级的架构分析与子系统拆分,建立不同模块对应的仿真模型,由SkyEye对嵌入式处理器及外设进行仿真。随后通过仿真软总线将各类分布式模型联合起来,即可完成数字卫星的搭建。将在真实卫星中运行产生的孪生数据放在“数字卫星”中进行超实时仿真,并通过可视化应用服务表现出来,用户可根据仿真结果分析预测真实卫星的未来走向,进行下一步决策并优化物理实体。
[1]《关于数字孪生与仿真技术关系的几点思考》http://www.uml.org.cn/modeler/202105314.asp?artid=24022
[2]《航空机载软件全数字仿真测试系统的设计与实现》,刘超,卢希,冯飞,王月波
相关文章:

“数字孪生”:为什么要仿真嵌入式系统?
01.仿真是什么? 仿真的概念非常广泛,但归根结底都是使用可控的手段来模仿真实的情况,通常应用于现实世界中实施难度大甚至是无法实践的事物。 众所周知,嵌入式系统通常是形式多样的、面向特定应用的软硬件综合体,无…...
Java基础知识总结(上)
Java基础知识总结 1. Java语言的特点 简单易学,相较于python等语言具有较好的严谨性以及报错机制; 面向对象(封装,继承,多态),Java中所有内容都是基于类进行扩展的,由类创建的实体…...
MySQL 2:MySQL约束
一、定义 约束(constraint),即表中数据的限制条件。在表设计中加入约束的目的是保证表中记录的完整性和有效性。 比如user表,有些列(手机号)的值不能为空,有些列(身份证号ÿ…...

C4--Vivado添加列表中不存在的FLash器件2023-02-10
以华邦SPI FLASH W25Q128JVEIQ为例进行说明。(其他Flash添加步骤一致) 1.本地vivado安装目录D:\Softwares\xlinx_tools\Vivado\2020.2\data\xicom下,找到xicom_cfgmem_part_table.csv文件,这个表与vivado hardware manager中的器…...

php代码审计
准备工作 了解CMS的基本信息 该CMS使用的是什么设计模式?该CMS每个目录大概负责的功能(视图、缓存、控制器等)。该CMS处理请求的基本流程是如何走的?以及在系统中使用的全局过滤函数是如何对数据进行处理的? 代码审计方法 敏感函数回溯 …...

接口测试入门,如何划分接口文档
1.首先最主要的就是要分析接口测试文档,每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定,里面缺少的内容自己需要与开发进行确认。 我认为一针对于测试而言的主要的接口测试文档应该包含的内容分为以下几个方面。 a.具体的一个业…...
数据库学习第二天
第7章 系统预定义函数 函数:代表一个独立的可复用的功能。 和Java中的方法有所不同,不同点在于:MySQL中的函数必须有返回值,参数可以有可以没有。 MySQL中函数分为: (1)系统预定义函数&…...

NODE => CORS跨域资源共享学习
1.CORS跨域资源共享 cors是Express的一个第三方中间件。通过安装和配置cors中间件,可以很方便地解决跨域问题 运行npm install cors 安装中间件使用const cors require(‘cors’) 导入中间件在路由之前调用 app.use(cors()&#…...

golang rabbitMQ 生产者复用channel以及生产者组分发策略
引用的是rabbitMQ官方示例的库:github.com/rabbitmq/amqp091-go在网络编程中我们知道tcp连接的创建、交互、销毁等相关操作的"代价"都是很高的,所以就要去实现如何复用这些连接,并要做到高效并可靠。预期效果:项目初始化…...

掌握了这项技能的性能测试师,90%都升职加薪了
初入职场的新人该怎么做才能让自己快速成长?在公司一直做着手工测试,如何才能提升自己,避免陷入“只涨年龄不涨经验”的尴尬?做为一名软件测试工程师,我们不得不去面对这些问题,有的人找到了答案࿰…...

linux中crontab定时任务导致磁盘满和云监控未报警的的坑
一个后台开发者,兼职运维工作中,配置linux中crontab定时任务,导致磁盘满和云监控未报警的问题的坑。 1.磁盘满 使用命令 df -h2.问题排查 2.1排查日志 命令 cat /var/log/messages日志文件的默认路径是:/var/log 下面是几个…...

vscode中安装python运行调试环境
在运行代码之前,需要到微软商店下载安装python环境,35m,都是自动的。 1、安装python 的extensions插件。 ctrlshiftx 输入 python 后点击 install 按钮。 2、新建文件夹spider文件夹。 3、在新建文件夹spider下新建文件spider.py源代码。…...

【微服务】微服务架构超强讲解,通俗易懂
微服务架构目录一、微服务架构介绍二、出现和发展三、传统开发模式和微服务的区别四、微服务的具体特征五、面向服务的架构SOA(service oriented architecture)和微服务的区别1、SOA喜欢重用,微服务喜欢重写2、SOA喜欢水平服务,微…...
内核中的竞态产生的原因和解决方法
产生原因: 由于多进程对临界资源的抢占 根本原因: 1、对于单核处理器而言,内核支持抢占就会出现竞态 2、对于多核处理器而言,是核与核的竞态 3、进程与中断间存在竞态 4、arm开发板不会出现中断与中断间的竞态(目前&am…...

【微服务】Elasticsearch文档索引库操作(二)
🚗Es学习第二站~ 🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一) 🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.索引库操作 索引库就类似数据库表,mapping映射就类…...

【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型
【论文速递】NAACL2022-DEGREE: 一种基于生成的数据高效事件抽取模型 【论文原文】:DEGREE A Data-Efficient Generation-Based Event Extraction Mode 【作者信息】:I-Hung Hsu , Kuan-Hao Huang, Elizabeth Boschee ÿ…...

C++类和对象(下)
✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 I do not believe in taking the right decision. I take a decision and make it right. 我不相信什么正确的决定。我都是先做决定,然后把…...

Java常见的六种线程池、线程池-四种拒绝策略总结
点个关注,必回关 一、线程池的四种拒绝策略: CallerRunsPolicy - 当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。 一般并发比较小,性能要求不高,不允许失败。 但是,由于…...

Node=>Express中间件分类 学习4
1.中间件分类 应用级别的中间件路由级别的中间件错误级别的中间件Express 内置的中间件第三方的中间件 通过app.use()或app.get()或app.post()绑定到app实力上的中间件,叫做应用级别的中间件 …...

在阿里当外包,是一种什么工作体验?
上周和在阿里做外包的朋友一起吃饭,朋友吃着吃着,就开启了吐槽模式。 他一边喝酒一边说,自己现在做着这份工作,实在看不到前途。 看他状态不佳,问了才知道,是手上的项目太磨人。 他们现在做的项目&#…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...