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

Simulink processor in-the- loop with simics -in- loop

由雅各布Engblom

jakob-engblom-intro-picture

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

西米奇通常用于运行控制器的目标处理器代码,而建模工具用于模拟工厂。通过这些模拟设置,开发产品的团队可以验证他们的软件和目标硬件系统的运行方式与设计模型相同。这些模拟器集成或协同仿真通常是基于使用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模型按下Run按钮时,模型的控制器部分用于使用Embedded Coder产品生成目标代码。然后使用配置的目标编译器与管理输入和输出库并与Simics目标支持库链接的测试框架一起编译生成的代码。一旦构建了二进制文件,Simulink就会启动Simics进程,并将二进制文件加载到Simics中以供执行。流程是这样的:

simpil-5

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

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

simpil-6

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

simpil-3

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

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