Linux在车载HPC安全方面的工作原理

描述

随着汽车智能化和自动驾驶技术的飞速发展,车载高性能计算(High-Performance Computing, HPC)系统已成为推动汽车产业革新的核心力量。在此背景下,Linux作为开源操作系统领域的佼佼者,正以其高度灵活性、强大生态系统以及不断发展的安全特性,在车载HPC安全领域发挥着至关重要的作用。

我们很高兴地宣布,经过深入研究与实践探索,Elektrobit正式发布《Linux在提升车载HPC安全方面的应用:综合概述》白皮书。本白皮书主要内容为面向功能安全应用的EB corbos Linux for Safety Applications的架构、开发阶段和概念,以便大家更加了解Linux在车载HPC安全方面的工作原理。

1.引言

功能安全至关重要

自20世纪90年代以来,由于系统复杂性不断增加,汽车上的电子控制单元 (ECU) 越来越多。防抱死制动系统、牵引力控制和高级驾驶辅助系统(ADAS) 等功能需要专用的ECU,以便进行优化,并确保高效的性能和可靠性。

这种ECU模块化设计方法便于在不对整个系统进行检修的情况下集成新功能,在采购、装配和维护方面具有灵活性和成本效益。此外,用于制动和安全气囊展开等关键功能的专用ECU通过隔离这些功能和降低系统故障风险,大大提高了车辆的安全性和可靠性。

监管要求和行业标准进一步推动了多个ECU在汽车中的应用。排放控制、功能安全和网络安全方面的规定往往要求使用专用的ECU来实现特定功能。此外,行业标准和协议促进了不同ECU和车辆系统之间的互操作性和兼容性,确保了无缝集成和操作。随着软件功能的增加,高性能计算 (HPC) 系统当前的目标是将许多ECU的功能整合到单个片上系统 (SoC) 或ECU数量更少但更大的SoC集群中。

高性能计算 (HPC) 系统对管理安全关键和非安全关键应用不可或缺,因此功能安全在车载HPC系统中至关重要。HPC系统必须遵守功能安全方面的适用标准和法规,如ISO 26262,以实现所需的可靠性、功能安全、信息安全,特别是网络安全、隐私和数据保护。

自动驾驶增加了对安全相关软件的需求

自动驾驶,又称(部分)无人驾驶或自动驾驶技术,大幅增加了车辆中与安全相关的软件数量,主要有以下几个原因:

控制系统的复杂性。复杂的传感器(摄像头或雷达)和控制单元等组件之间错综复杂的相互作用,使自动驾驶系统变得越来越复杂。复杂传感器产生的海量数据需要经过先进且密集的数据处理。各种复杂传感器的集成和先进的数据处理需要许多技术娴熟的跨学科团队合作。确保复杂控制系统的功能安全本身也是一项复杂的任务。

物体识别和情境解读。AD/ADAS系统首先需要建立一个不确定且不断变化的环境模型(道路、其他车辆、行人、车辆本身......)。这反过来又需要收集和处理来自不同传感器的信息,并将其汇总到该模型中,然后利用该模型就如何驾驶车辆做出决策。这一过程需要大量密集的数据采集和处理,包括图像和信号。

冗余和失效可操作机制。自动驾驶汽车中的安全关键系统通常采用冗余和故障检测与排除机制,以确保系统可用性和功能安全。

例如,采用冗余传感器阵列和冗余处理单元来交叉验证数据并检测/消除/缓解潜在故障。先进的故障检测、隔离和恢复算法通常用于检测异常情况,从而确保安全运行。

在SAE L2级别及以下的ADAS系统中,驾驶员始终是最终的监督者,对车辆负最终责任,即使系统出现故障也是如此。从SAE L3级别开始,系统对车辆的安全承担全部责任,而驾驶员则无需监督其运行。因此,要求系统在发生故障后仍能执行紧急功能,至少在有限的时间内(例如,直到车辆停稳)。对于失效安全系统,冗余可用于检测故障;而对于失效可操作系统,冗余还能在发生故障或失效时提供执行紧急功能所需的可用性。当然,这也适用于我们的数字座舱示例,我们还需要设定安全状态和/或回退机制。

实时决策。自动驾驶系统必须在动态和不可预测的驾驶环境中迅速做出决策,以确保安全驾驶。这要求软件具有高度的响应性和准确性,能够通过复杂的算法实时处理大量数据。软件必须考虑道路状况、交通模式、天气条件和其他道路使用者的行为等因素,以做出适当的驾驶决策,避免事故发生。

验证和校验。开发自动驾驶安全关键软件需要进行适当的验证和校验,以确保剩余误差的风险符合适用的规范和法规。这包括在模拟和真实环境中进行测试,涉及许多不同场景的虚拟和真实驾驶数据。

自动驾驶技术为车辆带来了各种与安全相关的软件组件。这些组件包括从感知算法到失效可操作机制的所有内容。此外,还有验证/校验流程来确保所有这些组件正常工作。随着汽车行业向自动驾驶方向发展,确保这些软件系统的安全性和可靠性至关重要。

高性能计算与对AD/ADAS和座舱的适用性 

HPC系统支持自动驾驶和防撞等安全关键功能,而作为HPC用例的座舱/车载信息娱乐 (IVI) 系统主要侧重于娱乐和GPS导航等非安全关键功能,但也执行与安全相关的功能。无论其关键程度如何,这两种情况都面临与系统复杂性、互连性和潜在故障模式有关的挑战,因此必须采取强有力的功能安全措施,以确保可靠运行。

图 1 2024年国际消费类电子产品展览会 (CES) 上展示的边缘到边缘数字座舱

2.Linux在汽车系统中的作用

理解和定义Automotive OS

Automotive OS(汽车操作系统)是汽车制造商目前最常用的术语之一。它让人联想到汽车就像您的手机或电脑一样拥有一个单一的操作系统,并且体现了“软件定义汽车”的概念——这也是目前汽车界广泛使用的另一个术语。然而,我们都知道,一辆汽车实际上包含几十个独立的ECU,它们都运行各自的软件,通过CAN或以太网等多个网络,使用主要由AUTOSAR定义的通用通信标准进行连接。这一系列ECU该如何形成一个单一的汽车操作系统?这种分散的基础设施又该如何保证功能安全和信息安全?

要解决这些问题,我们需要从术语“Automotive OS”的定义入手。Elektrobit 使用三个陈述来定义Automotive OS的属性:

“Automotive OS是一个软件平台,它能够将复杂的ECU车辆网络抽象简化为单一设备。”

这意味着,对于Automotive OS而言,我们谈论的不是一个单一的操作系统。事实上,它是一个软件层,利用定义的接口隐藏复杂的ECU集合及其通信矩阵。这样,信息娱乐系统和集群系统等应用程序就能与驾驶员和乘客进行交互,同时还能通过云连接访问汽车功能,而无需了解汽车的网络结构。这有助于提高不同车型和不同代软件平台之间的可移植性。

“Automotive OS管理、监督和更新设备。”

当然,组成Automotive OS的软件平台了解汽车的内部网络。它确保各个组件配置正确,以适当状态运行,并充当与外部世界的接口。它还确保所有组件都是最新的,并在兼容的软件版本上运行。

“Automotive OS通过协调用于开发功能的API来构建生态系统。”

虽然前两个陈述已经大大提高了汽车制造商软件平台的可维护性,但这句话却概括了Automotive OS概念的全部意义:“我们需要为应用程序提供一个开放且明确的接口,使其能够在不同车型、品牌,甚至不同代的汽车上运行,就像您的手机应用可以在多个操作系统版本和各种设备上运行一样”。

在汽车系统中使用Linux的优势

GNU/Linux作为一种开源操作系统,可为汽车系统提供众多优势。它可在服务器环境、云计算、HPC和Android设备等各种使用情况下提供可定制的特性和功能、可靠性和稳定性。

庞大的开发人员库。GNU/Linux的一大优势是其庞大的开发人员库。大量的用户和用户组织有助于不断改进和提供宝贵的资源、文档和支持。众所周知的API简化了开发和集成,节省了时间和工作量。此外,开源特性可避免供应商锁定,使组织能够从多个供应商中进行选择,即使原来的供应商无法提供服务,也能确保灵活性。

创新周期快。GNU/Linux创新周期快,经常更新、修复错误并增加新功能,使操作系统处于最新状态。

兼容性。GNU/Linux与多种硬件架构兼容,汽车制造商可根据具体要求选择组件,而不会立即出现软件兼容性问题。

源代码透明。此外,GNU/Linux的源代码完全透明,有助于高效调试和故障排除,从而加快错误修复速度,提高系统稳定性。这种透明度提高了基于GNU/Linux构建的汽车系统的整体可维护性。

在汽车中使用专门的Linux发行版相较于使用企业发行版或嵌入式Linux构建系统的优势

在汽车应用中选择Linux发行版而不是Yocto等嵌入式Linux构建系统,需要考虑几个关键因素,其中维护是一个重要的考虑因素。虽然Yocto为嵌入式系统提供了灵活性和定制选项,但它需要大量的专业知识和资源才能进行有效的维护和更新。相比之下,专为汽车定制的Linux发行版通过提供预配置组件和对汽车特定功能的支持,简化了维护流程,减轻了开发团队的负担,并确保了系统在汽车生命周期内的安全性。

还需要考虑的是,由于通用Linux发行版对存储和内存的要求过高,无法满足汽车领域的特定需求。到目前为止,这一直是通过简单地减少软件包的数量来解决的,但这并不是一个有效的解决方案,因为它会对功能产生不利影响。

此外,专用的汽车Linux发行版可针对汽车用例和车规级安全功能进行有针对性的优化和增强,并应符合ISO 26262等适用标准和法规。EB corbos Linux for Safety Applications配备了专为汽车开发定制的软件堆栈和工具,可加快产品上市速度并降低开发成本。

3.汽车行业的功能安全标准和法规

相关安全标准和法规概述

相关的汽车安全标准和法规在确保道路车辆的安全和可靠性方面发挥着至关重要的作用。最突出的标准之一是 ISO 26262,该标准概述了道路车辆电气和电子系统的功能安全要求。ISO 26262为整个汽车供应链的安全关键系统的开发、实施和验证提供了一个全面的框架。它涵盖多个方面,包括危害分析和风险评估、安全目标定义、硬件和软件开发流程以及验证和校验,所有这些都旨在最大限度地降低系统故障风险,确保车辆安全。

在软件源代码层面,对于汽车而言,这通常包括遵守MISRA-C及其衍生标准。虽然有GNU/Linux编码指南,但这些指南并不针对嵌入式系统,更不用说与功能安全相关的系统。

除ISO 26262之外,汽车制造商还必须遵守针对其目标市场的地区安全法规和标准。如果公司希望在道路上使用电子或软件系统,就必须将功能安全考虑在内。即使产品责任法没有明确要求遵守某些功能安全标准,汽车制造商也有责任确保其系统采用最先进的技术开发,包括验证和校验。

功能安全标准对基于Linux的汽车系统的影响

“Linux内核作为一个重要的开源组件,吸引了安全研究人员和广大开发人员的极大关注。其透明的特性使得可以进行深入分析,相比闭源软件,安全漏洞报告率更高。”

这可确保较好的网络安全性能,但并未涉及功能安全。功能安全是另一个需要考虑的问题。Linux内核并非为车辆系统设计,即使在出现故障或错误的情况下,也无法可靠、安全地运行,以防止事故并保护乘客和道路使用者。此外,围绕内核的GNU系统更不是为此目的而设计的。这可确保较好的网络安全性能,但却无法实现所需的功能安全。Linux内核的设计并不是为了可靠、安全地运行,更不是为了处理故障或错误。围绕内核的GNU系统更不是为安全关键和关键任务应用而设计的。因此,使用通常用于实现和证明符合适用功能安全规范和标准的方法、技术和程序来指定和证明GNU/Linux的功能安全是不现实的。

要使GNU/Linux适用于与功能安全相关的应用,需要采用非常创新的方法和“打破常规”的思维。

4.汽车领域的Linux安全解决方案

面向功能安全应用的EB corbos Linux for Safety Applications是基于开源软件的安全相关系统车载HPC系统的解决方案。

经过TÜV评估的安全架构,适用于带有Linux系统的汽车应用HPC系统

功能安全概念包括在ECU软件中集成安全措施,以确保汽车应用中关键系统的有效性。

为了展示其解决方案的潜力和优势,Elektrobit开发了一个示例系统。该示例系统可显示由车辆传感器或摄像头生成的视频流,提供有关车辆周围环境的视觉信息。视频流和其他相关数据显示在显示屏上,显示软件行为和系统响应,使观看者能够了解系统的行为。该软件包括一个安全监控系统,可持续分析视频流中的错误或异常。如果检测到任何问题,系统会采取适当的措施,例如关闭系统以防止潜在的安全隐患。该演示包括一种通过向视频流或Linux内核注入故障来诱导错误场景的机制,以模拟系统必须检测和应对异常情况的实际情况。

系统示例架构如图2所示。在此示例中,HPC中集成了另一个操作系统分区,使用Android框架为OEM可能希望使用现有软件模块的特殊显示用例提供服务。阴影区域显示了正在开发和运行的组件的安全完整性等级。

HPC

图 2 集成座舱 + IVI示例

示例数字座舱架构图显示了不同的硬件和软件层。从下到上,片上系统 (SoC) 使用一个或多个RTC核,如ARM Cortex M、R或外部MCU。HPC核通常包括ARM Cortex A核,例如Cortex A78AE。RTC和HPC核各有自己的Bootloader。

在本例中,RTC部分在Bootloader上安装了支持功能安全的Classic  AUTOSAR操作系统EB tresos Safety OS [25] 及其Safety MCAL,但也可以在下面安装专用的实时EB tresos Embedded Hypervisor,以备需要多个Classic AUTOSAR实例时使用。

专用HPC虚拟机监控程序EB corbos Hypervisor具有特定的SoC支持功能和操作系统安全监控功能,可作为多个HPC操作系统实例的基础。虚拟机监控程序和操作系统安全监视器是安全组件,完全按照相关质量和安全标准开发。非安全(质量管理 (QM)) Linux分区运行所有常规的非安全相关功能,例如在容器化环境中作为性能应用。在数字座舱的示例中,Android框架也作为非安全相关分区运行,用于上述用例。最后,EB corbos Linux for Safety Applications内核是虚拟机监控程序上的独立虚拟机,带有安全中间件API,如EB corbos Adaptive或ROS,作为启用ISO 26262 ASIL-A/B的性能安全应用的基础。

这一概念包含几个关键方面:

错误监控:系统持续监控错误,尤其是示例视频流中的错误,这对各种汽车功能至关重要。

高完整性分区:ECU内的高完整性分区负责生成和监控视频流。它能确保视频流及时发现任何错误或异常。

操作系统安全监视器:操作系统安全监视器,又称进程管理程序,负责监督高完整性分区的功能,确保其正常运行。它还监控分区内的故障,并在必要时触发关机程序。

总之,这一安全概念旨在创建一个强大的系统,能够检测和应对潜在的危险或故障,从而提高汽车系统的安全和可靠性。通过功能分解或多通道方法可以实现更高的完整性等级(ASIL)。在ISO 26262标准中,功能分解包括将安全要求最高的ASIL-D功能分解为冗余的ASIL-B(D) 要求。[37Ch. 5].这些ASIL-B(D) 要求可以在ASIL-B组件中实现,并不受干扰。[37Ch.6–7]

面向功能安全应用的EB corbos Linux for Safety Applications受专利保护,因为其技术方法将OSS从进程管理程序中分离出来。

与功能安全相关的故障场景

上文介绍的示例系统所演示的故障场景包括在视频流中或直接在监视器中产生错误。

典型用例:在我们的Linux发行版上运行一个性能应用程序并处理图像数据。安全关键应用程序在Linux发行版的安全衍生版上运行,位于第二个hypervisor虚拟机中,负责监控性能应用程序。进程管理程序保护安全关键应用的数据完整性。

性能应用程序内部故障:在第一个场景中,视频流中出现错误,导致视频流生成器向安全应用程序传输无效图像。系统检测到视频流中的错误,显示红色指示灯并随后关闭系统。

内核故障损坏安全关键应用程序:例如,当启用安全功能的Linux分区内核访问未经授权的内存区域时,我们的操作系统解决方案的专用安全层(称为进程管理程序)会检测到这一情况,并通过GPIO通知在PC上运行的外部用户界面。需要指出的是,功能安全是一种系统属性,而不是任何组件的固有特征。每个功能的本质决定了整个系统中该功能影响链的具体功能安全要求,从而对系统架构产生要求,进而对硬件、软件和软件架构产生要求。

如上所述,在传统的ECU领域,这导致许多功能需要专用硬件,以满足特定的功能安全需求等。然而,对于减少变体、增加集中化以及降低硬件复杂性的强烈需求和愿望,推动了E/E架构的演进,使其朝着能够支持各种功能安全概念的架构方向发展。

这两种场景都强调了系统检测错误和启动关机程序的能力,突出了集成在系统中的安全措施的稳健性。

将安全措施集成到基于Linux的汽车软件栈中

我们的目标是使安全应用程序正确执行,并在必要时提供适当的通知。面向功能安全应用的EB corbos Linux for Safety Applications中的安全扩展包含了确保系统安全的各个方面:

监督用户空间初始化及其过程并使其合法化。Linux系统启动时,需要初始化各种用户空间组件,以使系统正常运行。初始化过程包括加载必要的库,设置环境变量,以及执行启动脚本或二进制文件。这里的“合法化”是指初始化过程遵循既定惯例、尊重安全机制并遵守最佳实践。特别是,专门的启动和服务初始化模块,如crinit和cominit,取代了非自动就绪的基于脚本的解决方案。

在内核和应用程序之间分离内存区域的读/写/执行权限。在Linux中,内核对分配给应用程序的内存没有写或执行权限,这意味着分配给应用程序的内存及其内容不能被Linux内核修改,从而保护应用程序。

监督应用程序内存的任何读取/写入/执行尝试并使其合法化。这意味着,除了上述不同的写入和执行权限外,任何访问分配给应用程序的内存的尝试都会受到监督,只有在合法的情况下才会被允许。这样做的目的是检测对分配给应用程序的内存的任何不当或不正当访问,并在发生此类尝试时发出通知。

在整个上下文切换过程中,监督并允许或阻止对处理器状态寄存器的更新。这可确保正确处理进程切换并防止未经授权的修改,从而增强系统的稳定性和安全性。

通过这些扩展,EB corbos Linux for Safety Applications可确保Linux内核不会对属于安全应用程序的内存部分进行不当访问,也不会通过与其他分区共享的内存对属于安全应用程序的内存部分进行不受控制的访问。

经过安全评估的虚拟机监控程序会为安全和非安全工作负载划分资源分区。虚拟机监控程序的操作系统安全监控器负责对EB corbos Linux for Safety Applications内核进行外部监控。

5.最佳实践和建议

与早几十年的ECU设计不同,车辆投产后,ECU软件几乎不再更新,而HPC系统设计则需要持续不断的长期开发。

面向功能安全应用的EB corbos Linux for Safety Applications虚拟机分区的所有软件开发都必须遵守《安全手册》。这不适用于非安全型EB corbos Linux,因为它没有任何限制。监管概念可以扩展;在即将推出的版本中还将增加更多允许的功能。

汽车行业采用开源软件既带来了机遇,也带来了挑战。在本节中,我们将根据本文的讨论得出结论,强调在评估汽车系统中使用GNU/Linux和开源软件时应考虑的要点。

必须承认的是,开源软件并不能直接替代专有软件,尤其是在考虑到长期维护的影响时。虽然开源软件具有许多优势,如灵活性、透明度和庞大的开发人员库,但也需要仔细评估和考虑特定的应用程序需求。

在选择专有软件还是GNU/Linux时,没有简单的答案或“一刀切”的解决方案。需要对每种应用进行全面分析,考虑采用GNU/Linux的利弊,特别是要考虑长期影响。必须考虑功能需求、合规条例和行业标准等因素,以确定开源软件是否适合特定应用。

虽然开源软件通常与节约成本联系在一起,但必须考虑到总拥有成本可能因应用需求而异。直接从开源项目获取的免费软件可能缺乏保证和担保,这会影响其在关键汽车系统中的适用性。因此,选择专注于GNU/Linux产品的组织作为合作伙伴,可以提供更多支持并确保长期维护,从而节省大量资源并降低风险。Elektrobit等在汽车软件和Linux领域拥有丰富经验的公司可以提供帮助,提供基于Canonical Ubuntu的EB corbos Linux。

在考虑采用GNU/Linux时,要全面评估每种应用的需求和优先级。考虑长期影响、与现有系统的兼容性以及是否有专门的GNU/Linux供应商。与在提供适合汽车行业的长期维护GNU/ Linux系统方面有良好记录的供应商合作,如Elektrobit。这将有助于确保持续得到支持、漏洞修复和安全更新。

6.结论

保证HPC系统的功能安全绝非易事,不容小觑。作为HPC操作系统的GNU/Linux也是如此。实际上,EB corbos Linux for Safety Applications可在不依赖Linux内核本身的情况下实现所需的功能安全等级,因此可以使用最新的内核。这样就可以在车辆和车辆平台的架构中实现面向未来的架构和性能。

在使用HPC时,您需要尽早认真考虑功能安全方面的问题。面向功能安全应用的EB corbos Linux for Safety Applications是您的不二之选。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分