2016年11月29日 航空航天和国防

VxWorks中的软件遏制:vxpod - 虚拟化的分离替代方案

作者:Ka Kay Achacoso

Kakay照片

实时嵌入式系统在硬件整合方面的挑战是确保子系统之间不相互干扰。为了利用硬件整合带来的空间和硬件成本降低,一些系统使用虚拟化技术将子系统彼此分离。使用虚拟化,系统管理程序可以在硬件(类型1虚拟化)或操作系统(类型2虚拟化)上运行。Hypervisor实例化虚拟机(vm)以在其中运行软件负载,并负责在vm之间对所有硬件资源进行分区或虚拟化。整个操作系统将在这些vm中运行,就像它们在硬件上本机运行一样。

虚拟化系统很好地组合在一起,但是虚拟化需要1)支持虚拟化的硬件,这通常比较昂贵;2)更多的资源,因为每个VM运行自己的成熟的操作系统;3)增加了设计的复杂性,因为客户操作系统交互有额外的管理程序。

WindRiver®VxWorks®具有内置的1型虚拟化解决方案,还提供替代的单OS分离机制:VxWorks Portable Contendinativer Containers(VxPod)。Vxpod是一组用于在单个实时操作系统(RTOS)中的一组VxWorks进程周围定义时间,空间和资源约束的技术。Vxpod可以在具有MMU的任何处理器上使用。它不需要硬件虚拟化扩展。与虚拟化相比,该解决方案需要更少的资源和技术。

这篇博文使用了一个制造单元的例子来显示VxPOD所处理的问题。该解决方案可应用于许多其他硬件整合场景:减少工业控制系统中的空间和重量,或将多个医疗设备合并到一个单元中。

合并示例:制造单元

制造单元是一种独立的系统,负责制造和组装制造产品。该示例中的子系统包括:

  • 机器人控制(高临界子系统)
  • 环境控制(中临界子系统)
  • 质量控制(低临界子系统)
  • 提供云连接的库存(低临界子系统)

图1显示了四个子系统和每个系统的质量。

kakay博客2

图1.一个制造单元的子系统被合并成一个控制器硬件

如果一个制造单元需要4个独立的控制器来操作每个子系统,控制器的硬件成本将增加4倍,并在整个工厂和多个站点的50到100个这些单元中复制。为了降低硬件成本和节省空间,制造商将所有四个系统的控制器整合到一个硬件中。第一个挑战:多团队开发机器人控制子系统由一个分包商开发,环境控制由另一个世界的团队开发,质量控制和供应库存子系统控制器由两个独立的团队在本地开发。每个开发团队都独立运行子系统测试。每个开发团队的控制器聚集在一个单独的硬件设备中。那么,第一个挑战是确保每个子系统在与其他子系统共享一个物理盒时仍然按照预期运行。第二个挑战:信任由于多团队发展,不同的团队可以使用不同的发展方法。通常,嵌入式开发是在C中完成的,但是一支团队可以从开源拍摄大量内容,甚至可以为某些分区使用Java。这意味着在需要与关键内容中运行的系统中运行的不受信任的代码。第三个挑战:可重用性制造工厂决定修改20%的细胞以接受不同的配置。新细胞使用相同的环境控制和供应库存控制,但机器人控制和质量控制由激光切割机和由另一个供应商开发的传送带分拣系统替换。实际上,稍后,制造单元的另一个变型组合了预先存在的系统的各种子系统来创建新的单元。第三个挑战是创建可以集成在不同组合中的子系统以创建多个系统配置。VxPOD如何应对这些挑战所有VxPOD子系统在单个调度程序的控制下一起运行在单个操作系统中。通过分配内存、时间窗口、系统对象、文件系统和系统调用给特定的进程组,VxWorks隔离了操作系统中的每个子系统。除了隔离之外,VxPOD还为子系统提供了一个通用的操作环境。通过在所有子系统之间使用相同的分离机制,每个子系统可以重新组合,形成一个新的系统。为了说明制造单元中的VxPOD,各子系统的软件组成如图2所示。

kakay博客3

图2- 子系​​统软件组件

在本例中,每个子系统由2到4个进程组成。在子系统之间没有对资源定义严格的限制。所有子系统都将文件保存到文件系统中。一些子系统使用多进程内存区域、多进程信号量和多进程消息队列。高临界度机器人控制系统和供应库存系统都连接到网络——一个连接到隔离的私有传感器网络,另一个连接到公共云。

最终的系统可以是一个单核处理器,所有子系统共享这个单核,也可以是一个多核系统,子系统分别位于多个核之上。在这个场景中,单个子系统可以使用多个核。

最终系统可能由C编程的机器人控制组成,用户界面可以使用加速图形和高级人机界面中的C ++,可以在Java中完成供应库存,质量控制可以使用一些开源图像分析内容。当系统集成器将所有这些组件带到一个微控制器中时,存在干扰的可能性。下表介绍了VxPod技术如何将共享资源限制为子系统以防止干扰。

kakay博客4

所有这些技术都用于将子系统包含到相干单元中,具有VxWorks作为其常见操作环境。在多站点和多供应商开发的情况下,每个开发团队创建基于VxWorks及其vxpod技术的包含子系统。多个团队可以为包含VxWorks子系统的库进行贡献。积分器选择并选择多个子系统组合以创建整个系统的变体。VxPOD与虚拟化有时在整合多个工作负载时,他们自己的操作系统在同一MCU上是首选,值得虚拟机管理程序解决方案的复杂性和成本。vxpod提供更简单的替代方案。以下是将选择vxpod作为虚拟化的设计时:

  • 需要为工作负载进行单独的操作系统。在vxpod中,所有工作负载在同一OS实例中运行,虚拟化每个虚拟机获取自己的操作系统实例。
  • 该硅没有虚拟化的硬件支持。虽然虚拟化在这种情况下仍然是可能的,但它需要对工作负载进行侵入性更改。
  • 虚拟化开销是不可容忍的。虽然很小,但虚拟化确实给管理程序或芯片中的某些操作系统增加了一些额外的开销。VxPOD避免了这种开销。
  • 部分密封重量更轻。在某些情况下,几个非关键子系统可能需要共享一个网络堆栈,或者共享一些时间和资源。使用VxPOD,系统集成商可以选择跨子系统边界的系统资源。

您可以在VxWorks产品说明中了解更多关于VxPOD的信息http://www.windriver.com/products/product-notes/pn_vxworks/.对于那些您谁有访问风河联机帮助,VxPOD技术被记录在安全Profile设施的RTP应用控制在VxWorks程序员的指南可从风河知识图书馆https://knowledge.windriver.com.

以前的工业物联网中的软件定义基础设施:它是如何工作的
下一个路线图规划:选择正确的Linux构建块