2014年10月14日 航空航天和国防

使用Simics-In--in--in-Loop的Simulink处理器内循环

由雅各布Engblom

Jakob-engblom-Intro-Picture

有许多方法可以在控制系统的基于模型的设计(MBD)中使用仿真。在典型的MBD工作流程中,它是型号的常见控制器(基本上是系统的电子“大脑”)以及其设计用于控制(“工厂”是物理系统模型的共同术语及其环境)。起点是在建模工具中创建控制器和工厂的模型。然后,在建模工具内运行模拟,模拟输入和输出以在演变时测试设计。随着项目的进展,控制器模型需要迁移到真正的软件和硬件电子系统,而工厂模型将被真实的物理系统取代并在真实环境中进行测试。计算机和最终产品的物理部分都必须建造,虽然它们正在开发时,需要确保其实现与模型中创建的设计一致。在此过程中,控制计算机部分需要更具体的模拟,以允许理想控制器实现为在真实计算机顶部运行的实际代码。

simics.通常用于运行控制器的目标处理器代码,而建模工具用于模拟工厂。通过这些模拟设置,开发产品的团队可以验证他们的软件和目标硬件系统的运行方式与设计模型相同。这些模拟器集成或协同仿真通常是基于使用Simics的可扩展体系结构的用户创建集成的定制解决方案。然而,我们最近创建了一个现成的方案的具体情况processor-in-the-loop(公益诉讼)模拟Mathworks仿真软件和嵌入式编码人员,提供一个解决方案,不是依赖于定制的集成工作,早些时候,哪些可以使用设计流程相比,联合仿真完整的设置。

PIL测试的目的是确保从控制器模型生成的代码在最终目标系统中使用的实际处理器上正确运行。在PIL测试之前,控制算法将在主机上开发和验证,使用高精度浮点数,不关心实施系统。PIL用于测试从控制器模型(在本例中使用Embedded Coder)生成的代码,因为它是为特定的目标处理器编译的。Simics-Simulink PIL集成使在真正的处理器上运行的过程无痛,并消除了主机之外的任何物理硬件的需要。

simpil-1

如上所示,在PIL测试中,工厂模型运行在Simulink建模环境中,而控制器被转换为目标代码并编译在真实的目标系统上运行。这允许用户验证代码生成、使用目标系统编译器编译到目标系统,以及使用目标系统的实际整数和浮点语义执行不会在控制系统中引入错误。硬件运行的结果将与主机上获得的结果进行比较,从而允许建模者验证生成的代码将提供正确的结果。然而,在物理硬件系统上运行可能很困难。将系统配置到可以执行PIL运行的地步需要一些工作,通常是设置网络连接、安装操作系统和目标端代理来处理目标硬件上的代码下载。首先必须有一个可用的系统,而这通常是有限的资源。开发板可能不是最终目标系统的完美匹配,与最终目标系统的通信可能是复杂和不可靠的。

simpil-2

使用基于simics的PIL解决方案,每个开发人员都可以有自己的目标系统,没有限制,或者需要排队使用少数共享系统之一。用Simics启动PIL运行是完全自动的,不需要配置,甚至不需要知道目标系统的精确性质。一旦安装了解决方案,用户所需要做的就是配置模型,为真正的目标生成代码,然后在Simulink工具栏中选择“PIL”作为模拟模式,如图所示。

按下“运行”将构建目标软件并启动Simics进行快速运行,如下所示,在Simics目标上运行测试时,Simics窗口会简单显示。

simpil-4

详细地,当按下运行按钮以进行为PIL配置的Simulink模型时,该模型的控制器部分用于使用嵌入式编码器产品生成目标代码。然后使用已配置的目标编译器编译生成的代码,组合使用管理框架,该测试框架管理输入和输出库并与SIMICS目标支持库链接。一旦构建了二进制文件,通过Simulink启动了一个Simics进程,并且将二进制加载到SIMICS中进行执行。流程如下所示:

simpil-5

Simulink测试台通过将输入值发送到在SIMICS上运行的控制器代码,并检索控制器代码被计算的输出值来驱动模拟。值得注意的是,Simics目标上的代码不需要操作系统来运行和与Simulink通信。相反,Simics Setup在Simics中使用模块来与Simulink通信。然后,该模块通过特殊设备与目标软件通信。我们使用的目标系统是一个SIMICS快速启动平台(QSP),它为处理器上运行代码提供了一个简单稳定的系统。

运行之后,Simulink允许您检查仿真结果,并检查在理想仿真中计算的值和在simics模拟的真实处理器上运行时的值是否一致。Simulink数据检查器提供了几种比较信号的方法。在下面的示例中,我们已经使用Simics(第一次运行)运行了相同的模型,然后使用“Normal”模拟设置。正如您所看到的,计数器的波形完全重叠,并且在整个运行过程中差异为零。这可能是最好的情况,在这种情况下,针对实际目标的代码生成和编译根本不会影响结果。

simpil-6

Simics提供的另一个很好的特性是对运行在Simics上的目标代码进行分析。Simics虚拟平台中用于促进通信的特殊设备还提供了一个寄存器,该寄存器可以读出执行的指令数,这使得测量代码的执行时间变得很容易。下面的示例显示了在标准的Simulink rtwdemo_sil_counter演示设置中执行步骤函数如何花费更多的时间来执行某些步骤。即使使用Simics处理器模型使用的简化时间模型,也可能在生成的代码中找到瓶颈和时间抖动。

simpil-3

PIL集成有点不同于我之前描述的Simics和物理模拟器的典型集成或联合仿真(见“Cyberphysical西米奇”)。在联合仿真设置中,目标是验证集成系统,而不仅仅是控制器。一个联合仿真设置使用物理控制计算机的真实输入和输出的模型,而不是PIL中使用的快捷方式,它运行一个完整的软件堆栈与操作系统和设备驱动程序。它是公益诉讼的一种补充方法,通常两者都在项目中使用,但在项目执行的不同阶段。最后要注意的是,值得指出的是,我们在这里使用Simics采用的太平天国模拟方法是使用虚拟平台来简化在物理硬件上必然更复杂的任务的另一个例子。它演示了从另一个程序自动运行Simics是多么容易,以及如何做到这一点使用虚拟平台更快地工作感谢快捷方式和特定应用的后门

以前的突破并留出开源
下一个黑客、破解者和海盗:如何保护物联网中的嵌入式设备