资讯详情

【Jailhouse 文章】A Novel Software Architecture for Mixed Criticality Systems(2020)

文章目录

    • 1. Abstract
    • 2. Introduction
    • 3. Architecture
    • 4. Jailhouse Multicopter Platform
    • 5. Requirements on Partitioning Hardware
      • 5.1 Memory-Mapped I/O
      • 5.2 Indivisible Hardware Resources
      • 5.3 Erroneous Hardware Behaviour
    • 6. Conclusion

本论文集涵盖 2018 年 11 月 29 日在德国齐陶和 2019 年 4 月 4 在意大利米兰举行的第一届和第二届欧洲数字大利米兰举行 (EADTC)。EADTC 它是一个国际和跨学科会议,涵盖了欧洲工业和社会数字化转型背景下的研发,重点关注半导体产业,代表欧洲研究项目综合发展 4.0 (iDev成果40)。A Novel Software Architecture for Mixed Criticality Systems(2020) 是论文集中的一篇文章。

1. Abstract

多核 CPU 本文在单个硬件平台上结合安全关键系统和非关键系统,提出了新的基础 Linux 将关键和非关键部分整合到单个硬件平台上的混合关键系统架构,CPU 虚拟化扩展支持可以通过直接分配资源实现严格的静态分区,启动额外的操作系统并行运行,Hypervisor 的核心是 Jailhouse,确保创建的域能够服务于不同关键的工作负荷,不会干扰域内的工作,同时保留 Linux 在非关键部分运行时,关键领域运行了丰富的功能、安全性和实时关键应用程序。本文提出的结构相对简单,是可靠性和认证工作的先决条件。

2. Introduction

安全关键系统的软件需要严格认证,非关键部件不得干扰关键部件。软件的可靠性非常重要,代码行 (LoC) 测量的软件尺寸是认证工作的考虑因素。让 Linux 通过安全认证是一项百万行代码的核心是一项具有挑战性的任务,但不能为了通过安全认证而放弃 Linux 本文提供了一种新颖的架构方法 —— Jailhouse,能同时满足关键部分的安全性、实时性和功能丰富性。

Jailhouse 通过向系统和 I/O 将虚拟屏障插入总线,对称多处理 (SMP) 系统转换为非对称多处理 (AMP) 系统。从硬件的角度来看,系统总线仍然是共享的,软件只允许访问其范围内的资源。Jailhouse 需要启动 Linux 指导(见图)控制系统配置文件中描述的所有硬件资源,重新分配回来 Linux 并将 Linux 提升到虚拟机 (VM) 的状态。Jailhouse 管理程序的核心是虚拟机监视器 (VMM)。Jailhouse 不适用于虚拟机管理程序的一般分类,可视为 Type-1 和 Type-2 虚拟机管理程序的混合:它是一虚拟机管理程序,可以直接在没有底层系统的硬件平台上运行,但需要 Linux 在全局控制整个系统之前初始化硬件。

请添加图片描述

与其他实时分区方法不同, Hypervisor 的 XtratuM 分区嵌入式架构或 PikeOS 微内核的 PikeOS Evolution。Jailhouse 只支持直接硬件访问,Jailhouse 不使用复杂耗时的(半)虚拟化技术模拟设备驱动程序,只使用虚拟化扩展进行隔离,既不提供调度程序也不提供虚拟化 CPU。它是一个信号箱,用于将硬件设备直接通过隔离域,称为单元,只虚拟化硬件平台中不可分割的必要资源。

创建新的隔离域,Jailhouse 从 Linux删除硬件资源,并将其重新分配到隔离域,称为非根单元。虚拟化扩展 ARM 架构参考手册安全虚拟机架构参考手册英特尔虚拟化技术确保严格隔离:任何访问违规行为,如禁止访问某些内存区域、唤醒(陷阱正式要求虚拟第三代架构)管理程序,将导致管理程序停止执行,Guest 执行的指令会导致陷阱,必须是 Jailhouse 处理管理程序。

由于 Jailhouse 它将重新映射和分配资源,因此在理想情况下设置和启动所有单元后,不会激活管理程序。以下情况需要管理程序干预:

? 单元管理(如创建、启动、停止或销毁单元)

? 访问冲突(内存,I/O 端口)

? 非硬件可虚拟化资源的拦截(例如,ARM 通用中断控制器的一部分)

? 捕获某些 CPU 指令(例如 x86 cpuid)

在常见的裸机管理程序中,管理程序被中断并重新注入 Guest。在 Intel x86 在此基础上,我们使用中断重映射支持,直接将硬件中断映射到域(单元),而不是由管理程序重新分发:中断直接到达分配的域(单元),导致较低的中断到达时间和中断延迟,有利于硬实时设备。

通过这种方式,可以与安全认证的操作系统或裸机应用程序一起使用 Linux 单个多核系统并行运行,Jailhouse 极简主义导致核心部分只有几千行代码,简化了任何认证过程。

3. Architecture

在将虚拟机管理程序二进制文件加载到此内存区域的目标位置后,应激活管理程序(见图) CPU 输入虚拟机管理程序启动代码并初始化 VMM。

非根单元可以在初始化管理程序后创建。至少有一个非根单元 CPU 辅助操作系统可以由一定数量的内存组成。Linux 关闭选定的 CPU 并调用 Hypervisor 通过提供单元配置来创建新单元。VMM 这个新的隔离域是通过从根单元中删除资源并重新分配给新创建的域来创建的。其它资源,如 PCI 设备、内存映射设备或 I/O 端口可专门分配给单位。单元启动后,可以拒绝任何进一步修改其状态的尝试。这确保了对关键域的无意修改。

如有必要,这允许我们从多个领域访问硬件资源,但这种并发访问不是由于 Jailhouse 仲裁,需要由 Guest 适当解决。

图显示了三个单元可能分区系统的布局:Linux 根单元,一个单元 Linux 非根单元和裸机实时操作系统。 Jailhouse 不模拟任何驱动程序功能,但设备驱动程序可以。例如,使用这些方法在两个单元之间建立虚拟高性能以太网连接。根据硬件支持,信号通过信息信号中断 (MSI-X) 基于虚拟的传统中断 PCI 没有实现设备 PCI 在支持系统上,Jailhouse 模拟一个通用而简单的模拟 PCI 主机控制器。

Jailhouse 目前支持 64 位 x86(Intel 和 AMD)、ARMv7 和 ARMv8 架构。几个操作系统已经成功移植 Jailhouse Guest 运行。Linux 它可以作为所有支持的架构 Guest,根文件系统作为内存的初始内存 ramdisk 让我们注意到,我们将以有限的努力成功 RTEMS 实时操作系统移植到 ARM 另外,架构已经存在了 FreeRTOS 端口。

4. Jailhouse Multicopter Platform

为了证明 Jailhouse 本文实现了一个功能齐全的多旋翼平台来演示工业用例的适用性。我们之所以选择这个平台,是因为它的要求类似于工业设备。例如,在半导体制造中或需要执行机器和人类之间的合作任务时,负责平衡和导航飞机。传感器值必须以高数据速率采样、处理,最终用于控制转子。控制电路由不同的飞行模式控制,如手动模式、稳定模式或位置维护。控制回路必须对安全可靠的任务做出确定性响应。系统崩溃可能会导致真正的崩溃和严重的后果。

这显然需要一个具有实时能力的操作系统。我们将整个关键植到 Jailhouse cell 在中间,非关键任务仍然受益 Linux 生态系统不会以不可接受的方式干扰飞行堆栈,其余单元可以服务于任何非关键的有效载荷,如跟踪地面站的通信或摄像头。

在关键领域,执行第二个定制的极简主义 Linux 该操作系统具有操作系统 RT_Patch 实时内核扩展 PREEMPT_RT Internals。作为飞行堆栈,我们选择了 Ardupilot 项目不需要修改(除了板支持和缺乏硬件驱动程序),这强调现有应用程序可以毫不费力地部署 Jailhouse 中。

陀螺仪、罗盘、GPS、RC 控制接收器和电机控制需要从关键单元访问 SPI、I2C、UART 和 GPIO 分区系统的硬件设备简化结构概述如图所示。

作为硬件平台,我们选择了虚拟扩展四核 CortexA15 ARMv7 CPU 的 NVIDIA Jetson TK15,TK1 连接到 Emlid Navio26 传感器护罩。系统分为两部分:两个核心分配给非关键部分,另外两个分配给关键部分。

我们从根单元中删除控制平台所需的资源,并将它们重新分配给关键域。飞行堆栈始终控制机器,即使非关键单元行为不端。非关键单元的崩溃不会导致关键设备崩溃。该架构的运行充分证明了 Jailhouse 适用于实施在很大程度上基于现有组件的实时安全关键系统。

5. Requirements on Partitioning Hardware

尽管我们的方法在现实世界中具有实用性,但我们发现了由硬件设计造成的不足,虽然这些不足都可以在软件中解决,但这些问题应该由硬件制造商在未来解决,以便为混合关键性系统提供最佳的基础组件。

5.1 Memory-Mapped I/O

通常通过读取或写入专用物理内存地址来访问外围设备,这些地址由特定设备的寄存器支持,几乎所有现代架构的典型页面大小都是 4 KiB 或更大,代表了可以分配给单元的最精细的内存粒度,无需管理程序介入。

虽然 32 位或更多位的物理地址提供了足够的空间来将不同的设备放置在不同的页面上,但硬件制造商经常将多个设备放置在一个页面上,甚至是不同类型的设备。

这对于硬件分区是有问题的,因为只有整个内存页面可以分配给一个单元,而不需要在内存访问时进行捕获和分派,Jailhouse 实现了分页,这是一种管理程序允许将内存区域映射到小于页面大小的客户机的技术,当为某个内存区域启用子页面时,Jailhouse 将捕获对该页面的任何访问,并允许访问或由于访问冲突而使单元崩溃。这会导致明显的和不希望的性能损失。

5.2 Indivisible Hardware Resources

将不同的设备放在不同的物理内存页面上并不总是足以进行硬件分区:单个设备的功能可能需要在两个单元中。多个单元中所需的典型设备是 DMA 控制器、系统时钟和复位控制器或 GPIO 设备。Jailhouse 支持物理内存页面的共享,但它既不适度访问也不了解底层硬件访问协议:Jailhouse 不会确保参数不被其他单元覆盖。

大多数设备在没有 DMA 传输的情况下提供完整的功能,在实时环境中,I/O 响应时间比 I/O 吞吐量更重要,DMA 控制器应该专门分配给单个单元,或者尽可能不使用,来自不同单元的共享 DMA 访问需要可分区的 DMA 控制器。

GPIO 设备也应该专门分配给单个单元,只要它们不可分区,就必须由管理程序分派访问。

一种基于软件的解决方案是对所有设备进行初始化,然后禁止对时钟和复位控制器的任何进一步访问。虽然这个解决方案实际上是直截了当的,但许多现有驱动程序假设时钟和复位控制器始终存在,并且在运行时(取消)断言复位。其他设备驱动程序,如 SPI、UART 或 I2C 驱动程序需要在运行时更改它们的速度或波特率,这也需要它们访问时钟和重置控制器。

只要所有设备的时钟和复位寄存器都绑定到一个公共时钟和复位控制器设备,就不可能在没有半虚拟化或在管理程序中分派的情况下对它们进行分区。这种解决方案对于实际目的是有效的,因为与设备的常规访问相比,时钟和复位控制器通常很少被访问。缺点是时钟和复位控制器的多样性及其不同的协议。

即使允许共享访问时钟和复位控制器,现有时钟驱动程序代码通常不准备在分​​区硬件上运行:可用资源通常在驱动程序代码中硬编码,并且时钟驱动程序通常在启动期间重置或禁用所有现有系统时钟。

5.3 Erroneous Hardware Behaviour

在我们的演示平台实施过程中,我们观察到使用非门控时钟访问设备的寄存器会导致整个系统立即冻结。这种不当行为发生在直到 tegra186 的所有基于 Tegra 的平台中,并且是由硬件设计中的缺陷引起的。这个问题可以在软件中解决,方法是在受影响的内存区域的时钟被解时捕获,以保证系统其余部分的稳定性。

6. Conclusion

分区管理程序技术很有前景,可用于混合关键性场景。通过使用标准操作系统,我们最大限度地减少了移植现有遗留有效负载应用程序所需的工作量,极简的虚拟机管理程序核心简化了认证工作。

我们成功地展示了硬件分区的可用性,然而,硬件制造商需要根据硬件可以分区的需求来改变设计方面,任何基于软件的变通方法都会导致更可预防的管理程序代码和更多的管理程序逻辑。

这种需求要求软件工程师和硬件制造商加强对硬件-软件协同设计的关注,特别是在构建混合关键性系统时,这将在许多制造领域变得越来越重要。

标签: 加速度传感器必不可少tk7480传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台