2015年2月6日 航空航天和国防

模拟的三位一体:计算机,系统和世界

由Jakob Engblom.

jakob-engblom-intro-picture

西米奇是模拟包含处理器和执行代码的计算机系统的伟大产品。然而,我们都知道,仅仅一台计算机很少是一个真实系统的整体。大多数系统还涉及计算机控制的物理系统,如飞机、卫星、火箭、物联网传感器节点或控制盒,以及与系统交互的外部世界。一个真正的系统模拟器需要模拟所有这些部分——控制计算机,它所在的系统,以及外部世界。模拟的三位一体。为了实现这一点,我们需要添加更多的模拟器。《模拟人生》本身是很棒的,但《模拟人生》与一个或多个其他模拟器对话就更好了。

Moresims-1

上图展示了分解为计算机板、系统和环境的过程。运行控制软件的计算机的simics动力仿真,与系统及其环境的软件模拟器接口并集成。有时,系统和环境包含在同一个模型中(例如工厂模型在PIL测试中)但是通常不是他们是单独的团队甚至公司提供的单独模拟器。还有常见的是,每个逻辑部分包括多个单独的模拟器,用于单独的子系统。

SIMICS为模拟设置带来的关键值是它从真实目标运行未经修改的二进制文件 - 许多现有的模拟设置依赖于各种形式的SHIM层或API模拟以使软件运行。使用SIMICS,软件是编译,链接,集成的,就像在真实系统上一样运行。如上所述,输入和输出值从模拟系统转移到模拟输入和SIMICS中的输出设备。然后,该值通过设备驱动程序到达目标软件,就像它在构建后就像在真实系统中一样。通过这种方式,可以在几乎真实的环境中测试整个集成软件堆栈,使得可以执行自动测试持续集成即使对于深度嵌入并连接到环境的系统。

要明白环境的重要性,只要记住1996年阿丽亚娜5号失败该软件已经在旧的阿丽亚娜4号火箭上进行了测试,但阿丽亚娜5号的发射轨迹不同,导致软件崩溃,然后导致火箭坠落。教训是,无论一个软件有多好,它都必须在将要使用的环境中进行测试。要做这样的测试既便宜又快速,模拟是最好的工具。

在仿真软件架构方面,其他模拟器可以与SIMICS分开,或者有时在SIMICS内部运行。或者,我们可以在另一个模拟器内部运行simics。模拟器可能会跨多台机器传播,或在同一台机器上运行。一些解决方案是点对点,即使主从设置更常见,因为它们往往更容易改装对现有的模拟器。SIMICS具有帮助构建所有类型的集成解决方案所需的钩子和功能,并且我们多年来已经看到它与许多不同的模拟器集成在一起。

Moresims-2

我会说最常见的解决方案是具有SIMICS和另一个模拟器并排运行,通过网络套接字或共享内存进行通信,以及一个模拟器作为主设备,要求其他模拟器为指定数量运行时间。在实践中,现有的模拟器倾向于编写作为独立程序的运行,有时甚至需要自己的特定专用主机运行。修改这些代码以在SIMICS内部运行更加痛苦,因此最常见的解决方案是简单地构建模拟器集成模块,该模块集成模块将SIMICS连接到另一个模拟器,并将它们全部并排运行。对于一些现场视频,在行动中显示了这个概念,我指的是一个我的上一个博客文章也描述了NASA Go-SIM设置

Moresims-3

为了方便模拟设置的最终用户,通常需要构建某种形式的模拟前端来启动模拟器。如上图所示,前端将启动集成的模拟器,并建立它们之间的连接。一旦模拟器启动并运行,Simics的界面就可以暴露给用户,或者保持隐藏。前端可以像为单个配置启动所有模拟器的批处理文件一样简单,也可以是一个完整的自定义图形应用程序,用于管理模拟运行、收集结果并让用户配置系统。

当集成多个模拟器时,使用它很有意义SIMICS录制检查点要在SIMICS上捕获软件的执行,然后使用SIMICS调试,而无需其他模拟器运行。这提供了SIMICS的完整调试功率,而无需对模拟器集成和其他模拟器的支持,即可将模拟器集成和其他模拟器精确地停止。如下图所示,关键是在重播在SIMICS中的执行时,我们只需重播外界的输入。

Moresims-4

更多信息,有一章致力于集成书中的模拟器的主题使用虚拟平台的软件和系统开发我去年和Daniel Aarno一起出版的。

以前的用物联网做出更好的决定
下一个白名单是嵌入式设备安全之战的关键武器