闲谈智能汽车软件开发流程︱汽车软件开发
会议推荐
1
2
3
4
2026第五届中国项目经理大会
5
2026第三届中国医药企业项目管理大会

本 文 目 录
1
需求管理与可追溯 | 如何降低软件定义汽车(SDV)开发风险与召回成本?
2
智能座舱软件架构平台大总结
3
智能汽车车机系统软件开发的前景
4
车载基础软件——国产基础软件开发平台:架构设计
5
高效开发下一代智能汽车所需的不同软件开发流程、语言和工具
一、需求管理与可追溯 | 如何降低软件定义汽车(SDV)开发风险与召回成本?
(原创 Jama合作伙伴 龙智DevSecOps)
通过使用能够提高需求管理效率和准确性的工具,可以降低产品返工和召回的风险,同时帮助满足UL 4600(自动驾驶评估安全标准)的合规性要求。
向软件定义汽车(SDV)的转型标志着汽车行业迈向完全自动化的关键转折。最初,行业热衷于开发全自动驾驶汽车,但其复杂性迫使行业转向更加渐进、分阶段的方法。这一市场转变催生了软件定义汽车,与传统车辆(购买后基本保持不变且基于过时的架构拓扑)不同,汽车OEM(原始设备制造商)现在可以扩大软件投资,同时简化和优化车辆架构。这不仅对开发者有好处,例如降低总拥有成本、加速开发并提高安全性和可靠性,还为消费者提供了更多选择、新的商业模式以及售后更新和修复的可能性。
通过改进产品和软件开发流程及其支持工具,可以更有效地提高安全标准,同时降低代价高昂的中期返工和售后召回的风险。




过去十年,汽车行业取得了显著进步。曾经的基础功能(如触屏导航)已经发展为复杂的互联选项、语音助手、应用生态系统等。然而,这些变化也带来了若干的开发挑战。
1、管理日益复杂的软件
随着车辆越来越多地采用软件定义,管理来自不同供应商的多个软件组件变得更加复杂。这些组件功能各异,例如电子控制单元可以操作防抱死制动系统,而驾驶舱域控制器则负责完全不同的任务。在软件定义汽车中,这些不同的软件系统必须在整个车辆上无缝运行,给本就充满挑战的开发周期增添了更多复杂性。
2、确保功能安全和合规性
随着复杂性的增加,汽车企业在满足安全和合规标准方面面临着更多挑战。多年来,开发届一直将ISO 26262作为所需的功能安全标准。虽然该标准在历史上是一个很好的基准,但却未能涵盖软件定义汽车、自动驾驶汽车以及许多新的使用案例。
为了跟上行业步伐,标准也在不断演变,新的标准(如针对自动驾驶车辆的UL 4600)已经诞生。不过,这些标准仍然要求企业构建需求、测试需求,并证明他们已竭尽全力打造安全可靠的产品。
使用软件定义汽车的过程非常复杂,尤其是考虑到其中涉及到数亿行代码。企业必须证明代码不存在缺陷,并且没有在无意中引入可能造成安全问题或可能违反安全目标的情况。因此,企业必须重新审视传统的需求管理流程和工具,以适应当前的开发环境,降低潜在风险。
3、难以满足加速的开发周期
快速交付产品和软件是一项巨大的挑战。随着技术的迅速发展,车辆刚刚完成开发,消费者的需求和市场机会就已出现,迫使企业不得不重新设计,以跟上市场的步伐、实现差异化并脱颖而出。
然而,满足加速的开发周期往往与保持质量和合规性产生冲突,因此找到适当的平衡点至关重要。采用支持自动化和更快流程的工具,可以帮助满足这些要求,同时符合安全要求和标准。随着越来越多的企业采用敏捷开发方法,开发工具能否充分支持敏捷开发变得越来越重要。一个很好的例子是 “可追溯敏捷” 的概念,它为敏捷开发团队提供了覆盖范围内的即时、周期内洞察。
4、管理激增的第三方软件
汽车开发的进步促使OEM从多个供应商处采购软件。要集成如此多样化的软件,同时要避免安全和可靠性问题,是一项艰巨的挑战。现如今,企业不仅要整合来自不同供应商的硬件,还需要管理来自多个供应商的大量软件物料清单(BOM),确保所有系统能够无缝协作。
此外,还需要确保系统之间的兼容不会引发漏洞,以避免出现意外故障、安全漏洞和安全问题。这些问题都是代价高昂的,可能会影响产品发布,并对品牌造成负面影响。
通常,数百甚至数千个软件组件整合在一起,可能会达到数千万行代码。在保证所有这些组件协同工作的同时,还需确保安全性和可靠性,并满足消费者对现代车辆的期望,这是一项至关重要的任务。

如何优化开发流程并应对挑战
可靠的工程实践包括明确需求、定义需求、构建需求并对其进行测试。这一开发生命周期围绕需求管理展开,确保解决的是正确的问题。
但是,许多组织仍然在使用 Excel表或Word文档来存储需求。起初,这种方法可能看似无碍,但随着产品越来越复杂,需求越来越多,这种方式逐渐变得难以管理。跨文档复制和粘贴需求容易出错,并且缺乏单一的事实来源,也缺乏可追溯性,从而导致代价高昂的产品或软件问题的风险。
您可以通过将涉及电子表格和其他解决方案的旧流程替换为专为需求管理设计的更强大的自动化工具来应对这一挑战。此更改消除了容易出错的手动流程,提高了效率,并降低了错过需求的风险,从而可能节省数百万美元。
对此,企业可以采用专门为需求管理而设计的更强大、更自动化的工具,来取代传统的手动流程。这种改进不仅能消除手动错误,还能够提高效率、降低遗漏需求的风险,从而节省潜在的巨额成本。

2022年,福特选择Jama Connect作为需求管理工具并开始部署,以用于开发未来的软件定义汽车架构。
-
工程师通常缺乏编写需求的正式培训。 -
非限制性的自然语言通常包含大量复杂规范(非原子规范)。 -
不良的需求规格是常态,工程师无法自动接收反馈。 -
供应商收到数千份PDF格式的需求规格,但有些并不适用。 -
产品签核过程是手动的,工程师经常不得不追踪测试结果。
-
需求管理成为一门学科,培训资源触手可及。 -
工程师可以即时且自动地获得有关需求质量的反馈。 -
产品线工程会自动确定哪些内容适用于产品的不同变体。 -
仪表板实时、透明地显示产品签核的进展情况。

Jama Connect通过解决软件和硬件两方面的需求管理,帮助应对软件定义汽车(SDV)开发过程中的独特挑战。
许多提供需求管理的解决方案通常还为产品和软件生命周期管理提供全面的解决方案。虽然这听起来很理想,但使用专注于需求管理的专业解决方案,能够与其他领先的工具(如Jira)无缝集成,可提供更多的功能和灵活性,确保项目保持正轨,并以更快、更高效、更少出错的方式开发产品和软件。

Jama Connect 的优势:
-
简化合规性。通过自动化跟踪和管理,满足合规性和安全标准。
-
提高可追溯性。Jama Connect中的实时可追溯功能(Live Traceability™)允许您在需求、风险测试和其他工件之间进行追溯,确保项目的所有元素都相互关联。允许用户跟踪变更的影响,并验证所有需求都得到满足,从而降低错误和需求遗漏的风险。 -
高效协作。为所有项目需求提供单一的事实来源,使团队能够轻松访问、审查和协作处理需求。集中式管理减少了沟通不畅,确保每个人都使用最新的信息。 -
与您喜爱的工具轻松集成。Jama Connect可与其他工具(如Jira)轻松集成,您无需“推倒重来”,可以继续使用喜爱的工具(如Jira),从而避免中断团队工作。 -
简单易用。Jama Connect简单易用,具有直观的基于Web的界面,可以让您的团队快速上手。
软件定义汽车的发展不太可能会放缓,反而会加速发展。跟上市场步伐并应对SDV的复杂性,需要采取不同的方法。升级用于支持开发的工具可以帮助您保持合规,减少昂贵的返工和召回风险,并为下一个市场变化做好准备。
使用Jama Connect,您将始终清楚自己的开发进展。您可以查看开发流程,并随时了解当前的需求覆盖率。这有助于避免中期返工和额外的开支,并减少遗漏需求的错误(这种错误可能导致车辆上市后面临数百万美元的昂贵召回)。
平均而言,Jama Connect可将需求管理的返工减少40%–60%。

使用Jama Connect简化合规性并加速开发
汽车行业的产品开发要求汽车软件符合合规性。Jama Connect for Automotive 专为符合关键框架而设计,支持汽车产品开发中的安全关键标准和法规,已通过ISO 26262认证,能够满足复杂的需求管理需求。
-
ISO 26262: 2018(功能安全)
-
ISO/SAE 21434 / SAE J3061(网络安全)
-
汽车ASPICE
-
ISO/PAS 21448: 2019(预期功能安全性(SOTIF))
-
IEC(国际电工委员会)关键法规
-
IEC 60812 – 故障模式与影响分析(FMEA)及故障模式、影响与危害分析(FMECA)
-
MISRA(汽车工业可靠性协会)
二、智能座舱软件架构平台大总结
(来源 知乎 作者Rick)
一、智能汽车基础软件平台分类
汽车软件主要分为应用软件和基础软件。应用软件和业务形态高度关联,不同控制器的应用软件之间差异较大。基础软件介于应用软件和硬件之间,用于屏蔽硬件特性、支撑应用软件。可有效地实现应用软件与硬件之间解耦,非常适合平台化最终形成基础软件平台。根据中国汽车基础软件发展白皮书3.0所描述,车用基础软件平台分为车用基础软件开发平台和车用基础软件验证平台。其中,基础软件开发平台包含内核、虚拟化模块,中间件,功能软件以及与之相配套的开发工具链,用于支撑应用软件的快速迭代开发。基础软件验证平台通过调试、分析、仿真、测试等手段验证设计和实现的一致性。
1.1 安全车控基础软件平台
安全车控基础软件开发平台主要面向车辆经典控制领域,如动力系统、底盘系统和车身系统等,该类基础软件开发平台对实时性和安全性的要求极高。目前,主流的安全车控基础软件开发平台兼容 OSEK/ VDX 或 Classic AUTOSAR 标准,其功能安全等级需要达到 ASIL-D。
1.2 自动驾驶基础软件平台
自动驾驶基础软件开发平台主要面向智能驾驶领域,用于智能驾驶辅助,以及全自动驾驶功能的控制器上。目前智能驾驶控制器主要使用的底层操作系统有 QNX 以及 Linux。与安全车控基础软件开发平台相比,对智能驾驶基础软件开发平台的要求主要体现在:
-
强大的计算能力,以满足图像识别和决策计算的要求;
-
强大的数据吞吐能力,以满足多传感器数据的实时接入和处理要求;
-
高度的灵活性、扩展性、可编程性,以满足多种算法模型的需要;
-
易用性,以满足 ADAS 和自动驾驶算法所需调试、调优、调测的需要
当前异构分布硬件各单元所要求的功能安全等级有所不同,AI 单元需要达到 QM 至 ASIL-B,计算单元需要达到 QM 至 ASIL-D。
1.3 信息娱乐基础软件平台
车载信息娱乐基础软件开发平台主要为车载信息娱乐服务以及车内人机交互提供控制平台,是汽车实现座舱智能化与多源信息交互的必要运行环境。
车载信息娱乐基础软件开发平台对于实时性、安全性、可靠性的要求处于中等水平,既可以使用 Android、Linux 等非实时操作系统,也可以使用 QNX、VxWorks 等实时操作系统。为便于应用程序移植,当 前越来越多的车载信息娱乐基础软件开发平台采用 Android Automotive OS 或其他类 Linux 系统。
随着车辆由单纯的交通工具向智能移动终端转变,车载信息娱乐基础软件开发平台需要满足如下要求:
-
支持多样化应用,满足支付、娱乐、导航、信息服务等多样化功能需求
-
支持多生态资源,将手机端庞大的信息娱乐服务生态资源,通过采用相同或类似的操作系统,快速移植到车辆智能终端,避免重复开发
-
安全,通过深度定制达到车辆信息安全和功能安全的标准
1.4 智能座舱软件全景
随着新能源汽车的快速普及,智能座舱成为了一个重要的研发方向。智能座舱是汽车内部的控制中心,可以提供多种信息和服务,包括车辆状态、导航、娱乐等功能。为了实现这些功能,智能座舱需要一个可靠、高效的软件平台来支持。
对于智能座舱软件来说,主要的功能定义就是上述信息娱乐基础软件平台。
在智能座舱的软件平台中,操作系统内核、中间件和虚拟化技术都是非常重要的组成部分。其中,操作系统内核是整个软件平台的基础,它负责管理硬件资源、提供系统调用和进程管理等功能。常见的操作系统内核有Linux、QNX、RTOS等。
在智能座舱的软件平台中,中间件是连接不同组件的重要工具。中间件可以提供消息传递、进程通信、远程调用等服务,从而方便系统的开发和维护。优化中间件可以提高系统的可靠性和性能。
虚拟化技术是将物理资源虚拟化为多个逻辑实例的技术。在智能座舱中,虚拟化技术可以用于隔离不同的系统组件,提高整个系统的可靠性和安全性。常见的虚拟化技术包括Hypervisor和容器技术。Hypervisor是一种虚拟化技术,它可以将物理服务器虚拟化为多个虚拟机,从而提高整个系统的可扩展性和灵活性。而容器技术则是将操作系统层面进行虚拟化,从而提高系统的性能和资源利用率。
二、车用操作系统
2.1 AutoSAR CP
AUTOSAR CP 是 Classical Platform AUTOSAR 的简称,广泛用于对实时性、安全性要求高的动力域控、底盘域控、车身域控等方面,以达到软硬件解耦、提高开发效率、提升软件复用性等目的。在智能汽车软件平台领域方面,AUTOSAR CP一般不用于信息娱乐域。本文只简要介绍AutoSAR CP的基本概念,不做详细解读。
-
AutoSAR CP的软件分层架构
在 AUTOSAR CP 分层架构中,自上而下分别为应用软件层(Application Layer)、运行时环境 (Runtime Environment)、基础软件层(Basic Software Layer)
应用软件层:
包含若干个软件组件,软件组件间通过端口进行交互。每个软件组件可以包含一个或者多个运行实体,运行实体中封装了相关控制算法,其运行可由 RTE 事件触发。
运行时环境:
作为应用软件层与基础软件层交互的桥梁,为软硬件分离提供了可能,是 VFB 的具体实现。RTE 可以实现软件组件间、基础软件间以及应用软件组件与基础软件之间的通信。RTE 封装了基础软件层的服务、提供了标准化接口,使得应用软件层可以通过 RTE 接口调用基础软件服务。此外 RTE 抽象了 ECU 之间的通信,即 RTE 使用标准化接口将 ECU 之间的通信抽象为软件组件之间的通信。
基础软件层:
又可分为四层,包括服务层、ECU 抽象层、微控制器抽象层和复杂驱动。各层又由一系列基础软件组件构成,包括系统服务、存储服务、通信服务等,它们主要用于提供标准化的基础软件服务。
-
服务层提供了汽车嵌入式系统软件常用的一些服务,包括系统服务、存储服务以及通信服务三大部分。还提供包括网络管理、存储管理、模式管理和实时操作系统等服务。
-
ECU 抽象层与 ECU 平台相关,但与 微控制器无关,包括板级硬件抽象、存储硬件抽象、通信硬件抽象和 I/O 硬件抽象。该层将 ECU 结构进 行了抽象,负责提供统一的访问接口,实现对通信、存储器或者 I/O 的访问,从而不需要考虑这些资源是由微控制器片内还是片外提供的。
-
微控制器抽象层是实现不同硬件接口统一化的特殊层,包括微控制器驱动、存储驱动、通信驱动以及 I/O 驱动。通过微控制器抽象层可将硬件封装起来,避免上层软件直接对微控制器的寄存器进行操作。
-
最后,由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题, 难以抽象,所以在 AUTOSAR CP 规范中没有被标准化,统称为复杂驱动。
如上所述,AUTOSAR CP 良好的分层架构为软硬件之间解耦、软件模块之间解耦提供了坚实的保障。
-
AutoSAR CP的发展历程
对于传统汽车电子开发领域,早期使用的OS是OSEK OS, 其中OSEK是德文“Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug”的缩写,译为汽车电子开放系统及接口。OSEK OS是一个为满足汽车电子可靠性、实时性、成本敏感性等需求而打造的实时单核操作系统(RTAOS)。
AUTOSAR CP 与 OSEK OS联系 :
首先,AUTOSAR CP是基于OSEK OS继承发展而来,所以上述的OSEK OS的基本特点在AUTOSAR CP都能够得到满足,所以AUTOSAR CP是向后兼容的,也就意味着在OSEK OS上能够运行的应用程序同样也可以在AUTOSAR CP上运行。
除此之外,AUTOSAR CP也存在自身的一些独特的基本特点,下面将从基本属性与系统基本服务两个方面对比OSEKOS 与AutoSAR CP:
-
AutoSAR CP 的优缺点
-
架构充分解耦导致标准和接口规范繁多。AUTOSAR CP 的规范文档非常详尽,但正是两百多个多达几万页的标准文档让一些传统的嵌入式工程师望而止步。同时 AUTOSAR CP 提出了很多新概念,比如标定量通过描述文件进行描述;应用接口不通过传统全局变量的方式与底层软件交互,而是 对接口进行描述定义通过 RTE 统一接口进行匹配等。AUTOSAR CP 的软件开发理念和传统嵌入式工程师的认知偏差也是其普及率不高的原因之一。
-
工具链价格昂贵。目前AutoSAR CP的工具链都是老牌经典的AutoSAR OS公司所有,软件授权和开发费用非常高。
-
工具链之间兼容性差影响合作开发的灵活性。由于各厂商对 AUTOSAR CP 规范的理解并不完全一致,而且各厂商的工具也并不完全兼容,导致 OEM 集成各家供应商开发的软件模块需要花费大量的精力和时间。
-
自动化程度低导致开发和集成效率偏低。基础软件与应用软件的接口集成需要大量的手动配置工 作,不仅操作上低效出错率高,而且在错误检查方面也不如传统软件集成方便。
-
代码可读性差导致调试困难。这是代码生成工具普遍存在的问题,和 MATLAB 的 AUTOSAR 工 具箱生成的代码一样,一些 AUTOSAR 工具链的 RTE 代码生成工具生成的代码可读性也较差,这给软件 调试带来了不少麻烦。
2.2 AutoSAR AP
在基于域的EEA架构体系中,智能座舱域通常使用Linux 或者Android作为操作系统;车身控制域一般使用AutoSAR CP;自动驾驶域通常使用Linux或者QNX。
新能源汽车在由分布式EE架构向中央计算-区域控制EE架构发展的过程中,一些厂商认为,需要在中央计算平台中提供一个高灵活,高性能且支持SOA的新软件平台– Adaptive Platform AutoSAR,简称AutoSAR AP。
-
什么是AutoSAR AP
AUTOSAR 组织在 2017 年推出了新的 AUTOSAR 平台—— AUTOSAR AP。AUTOSAR AP 的出现是为了填补高性能计算平台上缺乏好用中间件的空白,采用面向对象的 SOA 架构,旨在为上层应用提供灵活的软件开发平台;同时利用汽车行业经验和优势,让所有汽车软件能持续迭代,更快更好地量产上车。
不同于传统的AutoSAR CP,它们的主要区别在于:
AUTOSAR经典平台(CP)标准满足了深度嵌入式ECU的需求,而智能ECU的需求却无法满足。传统ECU的设计目的是专为目标车辆而设计,在车辆使用寿命期间不会有特别大的改动。智能ECU则适应新型EE架构的发展,引入了以太网,高性能计算平台,以及OTA软件升级等。因此,AUTOSAR主持修订了第二个软件平台规范,AUTOSAR自适应平台(AP)。AP主要提供高性能的计算和通信机制,并提供灵活的软件配置,例如支持空中软件更新。专门为CP定义的功能,如访问电信号和汽车专用总线系统,可以集成到AP中,但不在标准化的重点中。
-
AutoSAR AP的分层架构
AutoSAR AP的基本构成包括应用程序层、运行时层、操作系统和硬件抽象层。这些组件通过标准化的接口进行通信和协作,以实现整个AUTOSAR Adaptive Platform的功能。
1.应用程序层(Application Layer):
应用程序层是AUTOSAR Adaptive Platform中的最高层,它包括了所有的应用程序组件。应用程序层通过服务层和运行时层与其他组件进行通信和协作,以实现整个应用程序的功能。User Application 通过原子服务接口(Atomic Service)获取服务:Atomic Service 原子服务提供了一系列的标准化服务,例如通信服务、诊断服务、存储服务等。这些服务为应用程序组件提供了一些基本的功能和接口,以便它们能够相互通信和协作。
2.运行时层(Runtime Layer):
运行时层提供了一些基本的软件组件和操作系统服务,例如操作系统抽象层、内存管理、进程管理等。这些组件和服务为应用程序组件提供了一个运行环境,以便它们能够在AUTOSAR AP中运行。
3.操作系统和硬件抽象层(Operating System Layer):
AUTOSAR Adaptive Platform使用基于POSIX标准的操作系统,例如Linux。操作系统层提供了一些基本的操作系统服务和驱动程序,例如文件系统、网络协议栈、设备驱动程序等。这些服务和驱动程序为运行时层和应用程序层提供了底层的支持。硬件抽象层则提供了一个通用的硬件接口,以便AUTOSAR Adaptive Platform可以在不同的硬件平台上运行。硬件抽象层将硬件平台与操作系统层和运行时层分开,以便AUTOSAR Adaptive Platform可以在不同的硬件平台上进行移植和扩展。
-
AutoSAR AP的应用场景
根据上述软件架构图可见,AutoSAR AP主要作为中间件而存在,它支持POSIX操作系统,通过服务和API为上层服务提供功能。
在向中央集中式的计算平台发展过程中,目前还按自动驾驶域,车身和底盘域,智能座舱域等进行功能划分。这些域控制器均需得到高性能 MPU 芯片的支撑。基于 POSIX 系统之上的 AUTOSAR AP 平台及相关工具链,为应用开发过程中的效率带来显著提高,而智能座舱域控制器从生态的角度考虑,一般在 Linux 基础之上搭载安卓系统。而诸如 SOA 通信、整车诊断、健康管理的方面则可以参考 AUTOSAR AP 平台标准进行实现。如果考虑到多域融合的发展,在舱驾一体化的道路上,AutoSAR AP和Android将有很大的可能在Hypervisor的基础上实现统一。
-
AutoSAR AP的案例
基于AutoSAR AP的应用场景,可以以一个OTA升级的案例来进行讲述。
本节主要介绍基于 AP 的智能域控制器(后续简称 IDC)OTA 升级场景及其实现方案。
IDC 的 OTA 功能可以进行自身应用软件及系统软件、关联器件固件的升级,并在数据管理、软件升级、可追溯性、安全验证方面满足 AP 的相关要求。
在OTA的功能实现过程中,IDC与外界的数据交互如图所示。
云端OTA云服务器向车端HUT(终端信息展现单元 Head Unit & Telematics)推送升级任务,用户确认升级后,HUT 会通过网关向 IDC 及 其他 ECU 以 UDS 的形式发送升级指令及升级数据,IDC 接收升级指令与数据后,在确保安全的情况下 完成软件升级并向 HUT 反馈安装进度及安装结果。
1. 数据传输与管理
a. IDC 内部分为 OTA 进程和 UDS Server 进程,UDS Server 进程与 HUT 端交互,负责处理、转发 指令和接收软件包,OTA 进程处理软件包进行升级。b. OTA 使用专用的磁盘分区保证有足够的资源来存储软件包及相关数据,从而保证数据的安全性。c. IDC 会进行完整性校验以保证软件包的完整性。d. OTA 结束后,IDC 会删除临时数据,最大限度节省空间。
2. 软件升级
a. OTA 采用双分区机制,通过活跃分区去升级备份分区,升级成功后重启备份分区,完成备份分区 和活跃分区的互相切换,轻松实现 IDC 上的应用软件、中间件、操作系统、配置数据的安装、更新、删除。b. OTA 采用双分区机制,通过切换启动分区,可以实现 IDC 上所有软件及数据的快速回滚功能。c. OTA 支持周边器件的升级,如 MCU、相机等。d. OTA 内部维护状态机,状态变化实时落盘,可以支持在异常中断后恢复升级。
3. 可追溯性
a. OTA 提供获取当前软件版本号、安装进度、安装结果的接口。b. OTA 会记录升级过程中的日志,供 HUT 获取。
4. 安全性
a. OTA 在软件升级前会使用强加密算法校验证书链与软件包签名,保证软件包的真实性及完整性。b. OTA 在软件升级前会检查当前车速、IDC 的温度、供电情况,保证在安全的情况下进行 IDC 软件 升级。c. OTA 时会激活 IDC 心跳监控机制及分区损坏回滚机制,当切换到备份分区启动失败后,IDC 不会 给 MCU 发送心跳报文,MCU 会认为 IDC 在 OTA 后变砖,会给 IDC 断电重启,切回原分区启动,保证车机可用。
2.3 虚拟化Hypervisor
-
为什么需要虚拟化
随着汽车电子电气架构从分布式架构到Domain域架构,再到中央计算-区域控制架构的演变,分散的ECU 功能集成到车载中央计算机,这就是多域融合的趋势。汽车电子底层硬件不再是由单一芯片提供简单的逻辑计算,而是需要复杂的多核 SoC 芯片提供更为复杂控制逻辑以及强大的算力支持。但是多域业务具有不同的技术需求,比如座舱域业务强调交互体验、应用生态丰富,比较适合的操作系统是 Android;车控域有实时性、可靠性要求,操作系统倾向于 RTLinux、RTOS;智驾域强调大算力融合感知、推演规划,也有实时性、可靠性要求,也会选择RTLinux、RTOS。
在未来,多域融合技术集成到一颗SOC之上时,需要考虑关键业务的安全可靠和实时性技术要求,又要考虑到丰富的生态应用,这些需要不同的操作系统才能支持。如何在一颗SOC上划分资源,并发运行多种操作系统,保证多域融合的可靠性,需要有资源隔离技术的支持。
资源隔离技术有多种,从硬件底层逐层向上包括硬件隔离、虚拟化隔离、容器隔离、进程隔离等。硬件隔离的隔离性最好,性能、安全、可靠性都有保证;但灵活性、可配置性差,不能实现硬件共享, 导致整个系统的资源利用率差,不能充分达到软件定义汽车的目标。容器隔离、进程隔离可以更轻量级地实现业务隔离,但还是在同一个操作系统内,存在着资源干扰、相互安全攻击的隐患,并且无法支持异构操作系统业务域融合,影响传统业务继承,不利于生态发展。
目前,在智能座舱域的实际应用中,硬件隔离和虚拟化隔离都有实际的使用范例。
-
Hypervisor
在新能源汽车智能座舱中,虚拟化技术也被广泛应用,以提高系统的资源利用率、可靠性和安全性。虚拟化技术可以将一台物理服务器划分成多个虚拟机,每个虚拟机都可以独立运行不同的应用程序和操作系统。
虚拟化技术可以分为两种类型,一种是基于Type1类型的Hypervisor的虚拟化技术,另一种是基于Type2类型的虚拟化技术。
Type1类型的Hypervisor是一种直接运行在物理服务器硬件上的虚拟化软件,也被称为裸机Hypervisor。Type1类型的Hypervisor能够直接访问服务器的硬件资源,包括处理器、内存、网络和存储等,能够提供更高的性能和稳定性。在智能座舱中,Type1类型的Hypervisor可以被用来运行多个虚拟机,每个虚拟机可以运行不同的操作系统和应用程序。同时,Type1类型的Hypervisor还可以提供强大的安全隔离功能,确保不同的虚拟机之间互不干扰,从而提高整个系统的可靠性和安全性。
相比之下,基于Type2的虚拟化技术则是运行在操作系统之上的虚拟化技术。虚拟机OS可以与主机OS共享同一个操作系统内核,这样可以减少虚拟化层的开销和系统资源的占用。虚拟机OS位于主操作系统之上,可以将应用程序及其依赖项封装成一个完整的软件单元,从而实现应用程序的快速部署和扩展。在智能座舱中,基于Type2的虚拟化技术可以用于隔离不同的应用程序和服务。
Type 1类型的Hypervisor直接运行在物理硬件之上,直接访问物理硬件并管理所有硬件资源,在延时、安全性和效率上更胜一筹。但此类型Hypervisor需要硬件支持,移植难度大,开发成本也较高,在互联网领域常用于数据计算中心。
Type 2类型的Hypervisor运行在某个操作系统之上,利用操作系统访问物理硬件,因此在延时方面具有不可避免的劣势。且底层操作系统的任何Bug都将危及其上的虚拟机,因此安全性方面相对较弱。但是移植难度小,开发成本低。在互联网领域常用于客户端系统。
Hypervisor可以将一台物理服务器划分成多个虚拟机,每个虚拟机可以独立运行不同的操作系统和应用程序。Hypervisor能够提供强大的安全隔离功能,确保不同的虚拟机之间互不干扰,从而提高整个系统的可靠性和安全性。同时,Hypervisor还能够动态调整虚拟机的资源分配,以满足系统运行的需求。在智能座舱中,使用Hypervisor可以实现多个应用程序之间的隔离,从而提高系统的可靠性和安全性。
Hypervisor具有如下功能:
(1)设备模拟。Hypervisor可以创建客户操作系统可以访问的一些虚拟硬件组件,是否需要取决于客户操作系统上运行的应用程序;
(2)内存管理。Hypervisor负责为自身和客户操作系统管理和分配硬件内存资源;
(3)设备分配和访问。Hypervisor通常可以将硬件组件分配给客户操作系统,并控制客户操作系统实际可以访问哪些硬件组件;
(4)上下文切换。当Hypervisor需要在内核上安排新的客户操作系统时,Hypervisor必须通过将在该处理器内核上运行的现有客户操作系统的“上下文”(即操作条件)保存到内存中来“切换上下文”。然后进行加载新的客户操作系统时,可以从内存中访问新的客户操作系统,而不会中断执行环境;
(5)捕获指令。客户操作系统可能会根据其访问权限级别执行技术上不应执行的指令。Hypervisor可以分析客户操作系统尝试发送到硬件的指令,并模拟硬件对客户操作系统指令的响应;
(6)异常处理。发生异常(即异常行为)时,可以将某些异常路由到Hypervisor进行处理;
(7)虚拟机管理。如前所述,Hypervisor最终负责启动和停止客户操作系统在其上运行的虚拟机。
-
区域硬隔离
与Hypervisor虚拟化相对应的一种多操作系统应用方式,是区域硬隔离。
它是通过物理隔离来保障不同系统组件之间的安全。比如说,在智能座舱SOC规划与设计的时候,根据功能划分的不同,在同一颗SOC内部划分出不同的CPU内核,以及其他物理硬件资源,并分配给不同的功能来使用。比如,仪表盘就可以使用独立的CPU核和独立的显示模块,并运行独立的RTOS操作系统。
区域硬隔离能够提供更高的安全性和隔离性,避免不同的系统组件之间的相互干扰。在智能座舱中,区域硬隔离可以被用于对关键系统组件的保护,从而提高整个系统的可靠性和安全性。在智能座舱中,使用Hypervisor和使用区域硬隔离都有其优势和不足。实际上,二者的选择取决于智能座舱芯片供应商的所选择的技术路线,也取决于主机厂对可靠性和芯片性能的判断。
-
Hypervisor与区域硬隔离的优缺点
以仪表盘的实现为例,现代智能座舱的发展,要求支持“一芯多屏”的功能。顾名思义,就是要求在一颗智能座舱SOC芯片上,同时支持实现液晶仪表盘功能和娱乐中控大屏功能,甚至还有其他的屏幕。
由于液晶仪表盘属于高安全性和高可靠性领域,一般需要使用RTOS操作系统。娱乐中控大屏需要有丰富的生态应用,一般需要使用Android系统来支持。
区域硬隔离和Hypervisor都可以用于实现仪表盘功能,但它们有各自的优缺点。
综上所述,使用区域硬隔离和Hypervisor都可以实现仪表盘功能,需要根据具体的场景和需求进行选择。如果对可靠性和安全性要求较高,可以选择区域硬隔离;如果需要灵活性和可扩展性,可以选择Hypervisor。
三、智能汽车车机系统软件开发的前景
(原创 星睿创客实验室 星睿创客实验室)
在科技飞速发展的今天,智能汽车领域正掀起一场前所未有的变革,而智能汽车车机系统软件开发作为其中的关键环节,展现出了令人瞩目的发展前景。它不仅是汽车智能化转型的核心驱动力,更在市场需求、技术进步、产业协同和商业模式创新等方面蕴含着巨大潜力。
智能汽车车机系统软件开发前景广阔,主要体现在以下几个方面:

1.汽车保有量与销量的基础支撑:随着全球汽车保有量的不断增加以及新车销量的持续增长,为智能车机系统软件开发提供了庞大的潜在市场。消费者对汽车的智能化、舒适性和安全性要求不断提高,车机系统作为汽车智能化的核心部件,需求也在日益增长。
2.智能汽车发展的推动:智能汽车是未来汽车行业的发展趋势,而车机系统是实现智能汽车功能的关键。无论是自动驾驶辅助、智能导航、远程控制,还是车辆状态监测等功能,都需要强大的车机系统软件支持。例如,自动驾驶功能需要车机系统实时处理大量的传感器数据,并与车辆的控制系统进行高效通信,这对车机系统软件的开发提出了更高的要求。

1.芯片性能提升:车规级芯片的性能不断提升,为车机系统软件的开发提供了更强大的计算能力和处理能力。更高性能的芯片可以支持更复杂的算法和功能,如人工智能、机器学习等技术在车机系统中的应用,实现更智能的语音识别、图像识别、驾驶行为分析等功能。
2.通信技术发展:5G 通信技术的普及以及车联网技术的不断发展,使得车辆与车辆(V2V)、车辆与基础设施(V2I)之间的通信更加快速、稳定。这为车机系统软件的开发带来了新的机遇,例如实现实时交通信息获取、远程车辆控制、在线软件升级等功能。
3.操作系统的优化:目前车机系统的操作系统主要有 QNX、Linux、Android 等,这些操作系统在不断优化和改进,为开发者提供了更好的开发环境和更多的功能接口。同时,一些车企也在开发自己的车机系统操作系统,以提高系统的安全性、稳定性和个性化程度。

1.车企与科技公司合作:汽车企业和科技公司之间的合作越来越紧密,共同推动车机系统软件开发。汽车企业具有丰富的汽车制造经验和车辆工程技术,而科技公司在软件开发、人工智能、大数据等领域具有技术优势。双方合作可以充分发挥各自的优势,开发出更具竞争力的车机系统软件。
2.产业链上下游合作:车机系统软件开发涉及到芯片供应商、软件开发商、零部件供应商等产业链上下游企业。这些企业之间的合作可以实现资源共享、技术协同,提高车机系统软件的开发效率和质量。例如,芯片供应商可以为软件开发商提供优化的芯片驱动程序,软件开发商可以根据芯片的性能特点进行软件优化,从而提高车机系统的整体性能。

1.软件订阅服务:车企可以通过车机系统软件为用户提供订阅服务,如在线音乐、视频、导航等功能的订阅。用户可以根据自己的需求选择订阅不同的服务,车企可以获得持续的收入。这种商业模式不仅可以提高用户的满意度,还可以为车企带来新的盈利增长点。
2.数据增值服务:车机系统可以收集大量的车辆数据和用户行为数据,通过对这些数据的分析和挖掘,可以为用户提供个性化的服务,如智能推荐、驾驶习惯分析等。同时,车企也可以将这些数据出售给第三方公司,如保险公司、广告公司等,实现数据的增值。

四、车载基础软件——国产基础软件开发平台:架构设计
(原创 穿拖鞋的汉子 车载诊断技术)
“
人生中最大的谎言就是不活在“此时此刻”。纠结过去、关注未来,把微弱而模糊的光打向人生整体,自认为看到了些什么。你之前就一直忽略“此时此刻”,只关注根本不存在的过去和未来。对自己的人生和无可替代的刹那撒了一个大大的谎言。
”
本文主要介绍了智能汽车车用基础软件开发平台的架构设计。
自动驾驶操作系统是车载智能计算基础平台的核心部分,如图所示。自动驾驶操作系统使用并包含了车控操作系统,其基于异构分布硬件 / 芯片组合,是车控操作系统的异构分布扩展。车控操作系统是指传统车控 ECU 中主控芯片 MCU 装载运行的嵌入式操作系统,如 AUTOSAR(OSEK) 操作系统,可参考 Classic AUTOSAR 软件架构,吸收其模块化和分层思想。

自动驾驶操作系统,除具有车控操作系统的功能和特点外,还能够提供高性能、高可靠的传感器、分布式通信、自动驾驶通用框架等模块,以支持自动驾驶感知、规划、决策、控制等功能的共性实现。自动驾驶操作系统将车控操作系统纳入整体系统软件和功能软件框架。车控操作系统运行在 MCU 上,一般以功能安全 ASIL-D 等级保障车载智能计算基础平台安全可靠,并根据自动驾驶需求进行一定程度上的扩展。

系统软件和功能软件是车载智能计算基础平台安全、实时、高效的核心和基础。自动驾驶操作系统包含系统软件和功能软件两部分。系统软件创建复杂嵌入式系统运行环境。功能软件根据自动驾驶核心共性需求,明确定义自动驾驶各共性子模块。系统软件可参考借鉴 AUTOSAR 软件架构分层思想,可以实现与 Classic 和 Adaptive 两个平台的兼容和交互。功能软件根据自动驾驶共性需求,进行通用模块定义和实现,可补充 AUTOSAR 架构在自动驾驶方面的不足和缺失。
目前应用在汽车或嵌入式系统中的 RTOS(实时操作系统),如 OSEK OS,VxWorks,RT-Linux 等,均可作为计算单元内核的选择,但要考虑其汽车功能安全等级以及市场成熟度。另外,车载智能计算基础平台的复杂性也要求内核系统对系统软件、功能软件及应用软件的库支持和编程性。

国内相关 ICT 企业如华为、中兴等也推出了自研实时内核系统,并开始商用和计划通过汽车功能安全评估。Linux 内核紧凑高效,开源灵活,广泛支持芯片和硬件环境及应用层程序。目前技术路线也有对 Linux 系统进行定制优化,实现部分 CPU 和内存资源保护并高效实时的混合系统,达到功能安全等级要求。QNX 是目前广泛应用的汽车嵌入式 RTOS 内核系统,其建立在微内核和完全地址空间保护基础之上,硬实时、稳定、可靠、安全,满足 ASIL-D 功能安全等级。
目前自动驾驶算法大多在基于 Linux 内核的中间件环境 ROS(机器人操作系统)中进行搭建和验证。ROS 主要提供 “节点” 之间数据传输服务。为了增强 “节点” 之间数据的实时性、持续性和可靠性,近期发布的 ROS2 通讯系统基于分布式系统数据分发服务设计。ROS 依托于 Linux 系统,无法满足车规级和嵌入式系统要求,其效率、安全等方面的问题也限制了其商业产品化。
搁笔分享完毕!
愿你我相信时间的力量
做一个长期主义者!
五、高效开发下一代智能汽车所需的不同软件开发流程、语言和工具
(原创 TechApe 猿力部落)


01.简介


02.现状



在图2中,右侧说明了使用开放标准开发算法和软件的好处。由于硬件和工具的接口由开放标准指定,因此即使在切换一级供应商和底层硬件时,软件IP也可以保留并受益于新一代车辆的增强。这降低了开发成本、缩短了上市时间并保护了重要的公司资产。
由于汽车数量众多,与此类系统的物料清单(BOM)相比,开发工作(和成本)不那么重要。这迫使传统的原始设备制造商通过使用专有方法、硬件和工具来从系统中挤出每一点。这与OEM执行集成的传统关键能力同步,而底层一级供应商及其二级合作伙伴则专注于创新。我们看到标准使集成自动化成为可能。由于许多以前只为高级车辆保留的功能现在甚至在低端(高产量)车辆中也成为强制性功能,因此重新发明轮子的负担和重大创新以及风险成为一个新的因素。对于环绕和座舱内感应(驾驶员监控)而言都是如此,例如受欧洲新车安全评鉴协会(Euro NCAP)需求的推动。
2.2.2 软件开发流程
到目前为止,汽车领域软件开发流程的主要重点是从开发到主力车型开始生产(SOP)的短时间窗口。初始SOP之后,开始进入推广阶段,主要任务是将最终系统集成到其他即将推出的生产线和变体中。一旦汽车到了客户手中,就不再关注,也没有技术可能性来更新某些功能以修复错误或添加创新。虽然远程更新OTA很常见,但很少有汽车可以做到这一点。此外,传统车辆架构及其分散的ECU拓扑不允许进行OTA更新,并且缺少所需的适当网络安全措施,以及任何车辆通信能力。
在车间安装新软件在技术上是可行的,但是来自相应一级供应商的开发资源通常已经专注于下一个项目/下一代,用于可能不同的程序或OEM(关键或立法错误修复除外)。
软件驱动型公司展示了一种不同的方法,其中CD是基本要素。例如,特斯拉汽车都支持无线系统软件更新,无需将汽车送到车库即可安装。这使得整车软件能够快速频繁地改进,从而不断增强运行和用户体验。消费者和智能手机设备的更新周期推动了对集中式软件管理和网络连接的需求,以便访问云。这种转变可能会继续朝着区域和领域导向架构的混合方向发展,其中基于功能或区域的部分更新正在成为一种服务,将使用来自车载传感和车外信息的信息分发给车辆本身的可用设备。汽车的一个关键挑战是功能需要满足车辆寿命长、高质量、功能安全和网络安全的期望。软件和系统失效可能会造成危急状态,最终可能危及人们的生命并造成严重损害。这可能会导致一种两全其美的局面:汽车行业传统的安全和质量导向传统,与对快速发展的复杂软件的新需求相结合。在图3中,生态系统参与者的角色根据他们对持续发展的认识进行分类(因此他们属于图1右侧的“未来方法”类别)。新兴的非传统公司显然不需要进行这样的转变,而是从一开始就从绿色区域开始。

2.3 分布式异构系统
雷达、激光雷达、摄像头、超声波、GPS和地图数据——需要处理、融合和解释如此多的数据源,以生成一组供汽车执行的控件。当包括数据检查、具有冗余的故障安全系统和计算需求时,复杂性的规模将远远超出当前系统所能支持的程度。此外,从高端车辆到系统精简的经济型车辆,都需要一个模块化和灵活的系统架构来应对未来的市场需求。传感器分布在汽车周围,其特性、性能、功能和接口协议各不相同。大多数传感器都集成了分析系统,以减少在车辆周围发送的原始未处理数据量。而是使用经过处理和精简的数据,例如图像或3D变换坐标,以免因所有处理而使集中式网络和计算系统过载。大多数传感器单元都包含一个集成处理单元,该单元本身需要在汽车的整个使用寿命期间进行更新、改进和维护。处理后的数据和警报随后被输入到传感器融合单元,该单元必须理解其输入,使用新数据和先前的历史记录构建运行场景,以建立附近物体类型和意图的模型,然后执行安全的行动方案。“意图”本身是一个极其复杂的主题。仅仅识别物体和位置是没有用的,还需要知道它接下来可能做什么。从基于动物历史运动的行为(指向你的路径或指向你,快或慢,不安或平静,受惊时的行为等),到人、车辆、物体(在风中飘扬的购物袋或固体物体),它们都需要被解释以确定向汽车提出哪种操作。
系统中所有这些不同阶段都有不同的处理需求,需要非常不同的处理器类型,因此需求集成许多不同处理架构的异构系统现在通常用于实现ADAS功能。
最常用和最常理解的ECU组件是CPU,例如ARM或RISC-V提供的CPU。它们擅长按顺序处理简单的数据和不规则的控制功能。许多公司都能够支持将CPU投入生产。它们是可预测的,并且通常可以用汇编语言、C或最近的C++进行编程。
对于使用更复杂算法的实时数据处理,通常使用数字信号处理器(DSP)。这开始给编程带来问题,因为大多数DSP都要求开发人员了解其微架构。这是程序员面临的第一个障碍,同时也是车辆整个生命周期内更新和维护DSP功能的问题。
图形处理单元(GPU)经常用于为汽车仪表板提供图形,多年来一直被人们很好地理解如何可靠地实现这一点。虽然GPU已经用于非汽车产品以提供视觉和人工智能功能,但由于其类似矢量的处理架构,它们尚未在车辆的预期图形功能之外得到广泛使用。然而,由于OpenGLTM(图形)和OpenCLTM(计算)开放标准接口以及CUDA(一种成熟的Nvidia GPU专有接口),这些设备的编程很受欢迎。
另一种流行的处理器是矢量处理单元(VPU),它通常是计算机视觉的核心,因为它能够同时处理图像中的像素阵列。与DSP一样,这些设备的编程并不标准化,需要特别注意微架构和汇编指令才能实现高效的算法实现。通常,这些处理器以黑盒形式提供,即系统开发人员只接受半导体公司提供的产品,无法提供自己的功能或增值。
当前一代处理器和加速器特别适合计算机视觉、人工智能和机器学习。这些是需要满足ADAS处理需求的新技术。它们非常异构,提供不同的加速器和编程接口。
特斯拉的FSD芯片就是这种集成了各种不同处理单元的异构系统的一个例子。它将12核 CPU(分为三个集群,每个集群有四个核)、GPU、图像信号处理器(ISP)和专用神经网络加速器(NNA)集成在一个片上系统(SoC)中。
由于没有针对不同处理器架构的编程模型的开放标准,接口和工具要求制造商完全致力于一种解决方案。这违背了每家制造商实现CD、拥有灵活的供应链和针对每辆车SKU提供最佳解决方案的愿望。
对于所有可用的处理器类型以及ADAS管道内的不同应用程序,它们都存在一个非常常见的问题——软件开发人员如何以一致的方式对ADAS系统进行编程,避免每一代都进行大量重写,以及如何在车辆的整个使用寿命期间不断更新它们?
2.4 什么是持续集成和持续开发?
CI是一种定期将所有开发人员的工作软件集成到共享代码存储库并进行测试的做法。软件的合并包括任何新功能或改进。除了软件之外,数据集、测试单元、配置参数或构建脚本的修改以及支持文档更改也将被集成。随着敏捷软件开发的广泛采用,较长的集成周期正变得过时甚至成为阻碍。1991年,Grady Booch首次使用“持续集成”一词来描述一种有效的、迭代的软件构建方式。该技术很快被纳入极限编程中使用的一组技术中,Fowler于2006年总结了详细的指导方针。
成熟的CI流程通过最大限度地减少构建、测试和发布新功能所需的时间来最大限度地提高效率,同时确保保持质量标准。
CD描述了迭代软件开发的流程,是CI、持续测试、持续交付和持续部署等其他几个流程的总称。
CI周期在每次对正在开发的软件堆栈进行更改时重复。CI管道会立即按顺序开始代码分析、编译、单元和集成测试。应用程序可以包含许多层。堆栈中的每一层都可以包含许多对库的依赖,这些库用于数学、调度或通信协议等功能。对任何一层的任何更改都可能触发新的CI周期。CI管道以对硬件进行集成测试结束,通常是现场车辆中的单个ECU,也称为硬件在环或开环测试台。
请注意这里增加的挑战。纯软件公司的CI/CD是在一台服务器上的一个地方执行(理想化),因此可以在几分钟或几小时内了解最近的提交是否成功。然而,对于汽车而言,CI/CD可能会部署和分布在不同位置的多个物理系统中。在现场的另一个额外挑战是测试数据的使用和生成及其传输。由于传感器带宽可以达到或超过40 GBit/s(≈19 TB/h),测试车辆可以消耗和产生PB级数据。
CD旨在自动化和简化在实时或暂存环境中构建、测试和部署新代码的流程。
CD承诺什么?
• 更快地交付新功能
• 更高质量的产品
• 规避风险
• 降低资源需求
• 提高生产力
汽车开发商面临的主要挑战是汽车被视为安全关键系统,这意味着在部署到生产环境之前必须进行功能安全检查。通常,使用FMEA(失效模式和影响分析)或STPA(系统理论过程分析)等分析方法。这些方法用于进行安全分析,识别可能的危害场景并针对候选发布版本进行测试。
由于ADAS AI计算堆栈中的许多部件来自多个供应商,因此开放标准提供了理想的解决方案。对于汽车中的大多数零部件而言,供应商有责任将任何改进或变更通知OEM,从而确定更新发布周期。
2.5 标准化
与ISO 26262同步发展的是AUTOSAR的进步,它致力于开发系统架构的全球标准,以便汽车ECU的基本软件功能可以标准化。AUTOSAR(汽车开放系统架构)是汽车行业领先的原始设备制造商和一级供应商之间的开发合作伙伴关系。共同目标是为基本功能的行业合作创造一个发展基础,同时提供一个仍然鼓励创新功能竞争的平台。发展伙伴关系的目标是:
• 汽车ECU基本软件功能的标准化
• 可扩展至不同的车辆及其平台变体
• 软件的传输能力
• 支持不同的功能域
• 定义开放式架构
• 各个合作伙伴之间的协作
• 开发高度可靠的系统
• 支持适用的汽车国际标准和最先进的技术。
掌握未来ADAS日益增加的复杂性需要抽象和标准化、开放的接口,以实现对变化的稳健性,尤其是对单个模块、组件、一级、二级、具有多代相邻系统不同组合(“碎片化”)甚至系统本身的目标汽车系列所做的更改。
因此,标准对于实现这一努力至关重要。

2.5.1 旧标准需要更新
ISO 26262是源自IEC61508的汽车安全标准,于2011年发布,其推动力是软件失效导致的悲惨车辆事故。这包括丰田2005年发生的事故,据称该事故是由于电子油门控制系统故障导致意外加速。ISO 26262的发布旨在提供一个框架,以便识别软件和硬件失效的潜在风险,并应用标准来确保汽车电子和电气系统的功能安全。该标准可用于安全相关系统开发生命周期内的所有活动,包括:
• 管理、开发、生产、运营、服务和退役
• 概述基于风险的方法(通过汽车安全完整性等级- ASIL)
• 识别不合理的剩余风险
• 验证和确认安全目标
• 管理供应商的需求
ISO 26262在欧洲、美国、日本和韩国市场已经很常见了。一些汽车行业层级遵守旧的代码质量标准,这阻碍了当今车辆应用程序的开发,以方便获得公认的基准质量水平。ISO 26262 标准不要求软件开发遵循任何特定的质量标准。它要求根据功能关键性水平来遵循软件需求,而功能关键性水平由车辆乘员受伤的风险决定。功能安全标准在发布时落后于最先进的水平,第二版ISO 26262:2018也不例外。它提出了一个困难的平衡点,即既定的、受欢迎的工作基准与当今新兴的复杂ADAS解决方案之间的平衡。汽车行业已经认识到安全标准中的这些差距,例如:
• 网络安全
• 编程并行性和不确定行为
• 人工智能系统的机器学习和训练
• 人与自主系统的交互
有许多机构和团体制定标准来解决这些差距,并向公众和政府监管机构表明他们正在自我监管和管理自主系统当前和未来的安全问题。其中一些标准列在下面。
已建立的质量标准:
• AUTOSAR(自适应)C++编码指南
• ISO24772避免代码漏洞的指南
• 日本(代码)ESCR指南
• MISRA代码指南
• MISRA汽车安全论证指南
当前功能安全标准:
• ISO 26262:2018
• DO-178C航空电子功能安全标准
• IEC 61508功能安全标准
• ISO 29119软件测试标准
• ISO DTR 4804道路车辆——自动驾驶系统的功能安全和网络安全——设计、验证和确认方法
• PAS 1881确保自动驾驶汽车试验和测试的安全
• SAEJ 3061网络安全
新兴安全标准:
• UL4600草案标准
• PAS/CD 21448预期功能的安全性– SOTIF
• ISO 21434汽车网络安全标准
• IEEE P2864 –自动驾驶汽车决策中安全考虑的形式化模型
• IEEE P1228 –自动驾驶软件安全标准
• IEEE P2851 – IP、SoC和混合信号IC的安全分析和安全验证的交换/互操作性格式。
2.6 经典计算机视觉开发
计算机视觉或机器视觉自20世纪60年代开始被研究。几十年来,计算机科学家一直在尝试让计算机理解图像。这项研究主要采用反复试验的方法。算法开发人员手动确定哪些类型的特征(例如颜色、线条和渐变)对特定问题至关重要。然后将检测到的特征组用作经典机器学习算法(例如支持向量机、Adaboost和随机森林)的输入,以尝试识别图像中的对象。Viola和Jones在2001年根据这些原则发表了一种算法,该算法多年来被广泛用于执行面部检测等。Dalal和Triggs在2005年发表了一种行人检测算法,该算法在该领域领先多年。定义算法应在图像中寻找的特征类型的过程在很大程度上已被基于AI的方法所取代,这些方法使这项工作自动化。我们将在下一节中更详细地描述其中一些。
不过,一些经典计算机视觉领域仍在广泛使用,尚未被人工智能取代。例如,在估算相机自身精确位置以及从图像序列中提取深度信息或3D信息(如点云)的应用中。这些同步定位和地图构建(SLAM)算法逐帧跟踪特征,并根据其位移使用三角测量提取结构。这是一个可以使用可预测、易于理解的数学技术有效解决问题的例子,这些技术比现代技术使用的神经网络消耗的计算资源更少。
2.6.1 专有移植
由于大多数计算机视觉算法主要是手工设计的,而不是像基于机器学习的方法那样经过训练,因此它们以C等编程语言表达,而不是在更高的抽象级别上表达。然后需要手动映射这些程序并进行大量优化以适应复杂的异构计算机架构。算法通常需要在异构处理器之间进行分区。除了标准CPU内核之外,目标架构通常还包括采用VLIW(超长指令字)和SIMD(单指令多数据)处理的多核视觉处理器以及复杂的内存层次结构。优化任务需要深入了解底层计算机架构。必须满足诸如以实时帧速率(例如每秒30帧)运行算法等约束,这进一步使这项任务复杂化。这是一项非常耗费人力、容易出错的工作,并且最终的实现特定于所选的处理器微架构,每个半导体供应商都有自己专有且独特的微架构。此外,还经常使用特定于供应商的编程工具链,这进一步增加了任务的复杂性。因此,花费大量精力开发的计算机视觉软件无法轻松地在一种架构和另一种架构之间移植和重用。
2.7 基于AI的软件开发
Alex Krizhevsky和他的团队将三种新技术结合在一起,AI研究取得了重大突破。首先,ImageNet图像数据库已经发布,提供了数百万张手工描述的图像集合。对于每张图像,相应的文件会标记图像中存在的对象。其次,Krizhevsky使用最近上市的强大可编程GPU来运行他的算法。这提供了数量级的计算能力,为使用更多计算密集型算法开辟了道路。
第三,他们开发了一种具有多层的新型卷积神经网络,他们称之为AlexNet。与传统计算机视觉不同,计算机科学家无需手动找出在图像中寻找哪些特征,AlexNet可以自己找出要寻找的特征。AlexNet参加了领先的ImageNet大规模视觉识别挑战赛(ILSVRC)图像识别竞赛,并以41%的巨大优势击败了整个领域。
这种方法遵循两个步骤:神经网络的设计和训练,然后是推理,其中网络执行识别视野中物体的实际任务。我们将在下面详细介绍每个步骤。
2.7.1 网络设计和训练
此步骤从收集车辆中的大量传感器数据开始。拥有数千公里的驾驶数据是很常见的。可以使用来自模拟的合成数据或通过处理原始传感器数据本身来扩充数据集。下一步是标记数据。在此劳动密集型步骤中,收集的数据被手动分类和注释,通常借助部分自动化任务的工具。由于单个摄像头每小时拍摄约100000张照片,因此标记几个小时的驾驶数据需要大量标记人员。然后,神经网络工程师设计网络架构:神经网络层及其配置、它们的连接方式、层数、要使用的激活函数、计算精度等。然后,汽车应用程序将这些网络中的几个组合起来以实现所需的完整顶级功能。在训练期间,数据集在神经网络中运行几次,每次调整系数,直到神经网络的检测性能不再提高。由于计算要求非常高,因此这种训练是在数据中心使用高性能服务器离线进行的。训练一个网络很容易就需要几个小时甚至几天的时间。这个过程的输出是一个经过训练的神经网络,其中包括神经网络配置以及定义网络运行的网络系数。这个经过训练的网络可以很容易地部署在车辆中。由于人工智能算法仍在深入研究和改进中,而且一直在收集额外的传感器数据,因此调整网络架构和用新数据重新训练的过程应该是连续的,而不是停止的。数据管理的任务也变得很重要。收集的数据远远多于网络在合理时间内可以训练的数据,因此必须选择正确的数据子集。此外,需要用训练过的神经网络还没有见过的数据来验证训练过的网络,以确保网络能够充分推广到道路上车辆的新实时传感器数据。数据集会不断用道路上车辆的新数据进行修订,更好地了解训练算法失败的地方,并根据具有不同要求的新算法进行修订。
一个相对较新的研究和开发主题是自监督算法。这是一种无监督学习,其中数据本身提供监督。一般来说,这种方法会保留部分数据,并让网络对其进行预测。例如,如果在帧中检测到车辆,那么该车辆可能也应该出现在先前捕获的帧中。这有可能大大减少甚至消除对标记数据的依赖,从而产生具有更高准确性的算法,并减少标记数据的劳动密集型任务。此外,生成对抗网络(GANs)正在兴起,其中两个并发网络以竞争方式运行:生成网络生成候选者,而判别网络对其进行评估。
2.7.2 推理
一旦算法设计完成并离线训练,它们就可以部署到车辆中。这要求算法能够快速、实时地运行,并且成本比训练低得多。由于将图像从车辆传输到数据中心需要太多带宽和延迟,因此每辆车都必须在边缘(车辆内部的处理器上)运行算法。尽管算法需要大量计算能力才能实时运行,但对低成本、低功耗的需求导致了专门用于运行神经网络推理的新型处理器的设计。
对开发人员来说,一个很大的好处是神经网络算法以高抽象级别表达。网络配置基本上为每个神经网络层定义了一组过滤器,并将它们之间的数据流定义为图形。运行网络的计算原语仅包含几个简单的运行,主要是乘法累加(MAC),这些运行可以无限重复,并且可以轻松并行化。
将这些AI算法映射到专用目标硬件上通常是一种高度自动化的方法。大多数AI处理器供应商都提供软件工具,这些工具可以读取神经网络描述且并行化和优化网络以在加速器上运行。最终效果是最终用户无需编写一行代码即可在目标设备上运行经过训练的网络。作为额外的好处,这也意味着将在一个架构上运行的更复杂的神经网络添加到下一个架构要容易得多。
图5说明了AI开发流程(训练)的第一阶段,这显然需要传感器系统(传感器/镜头/ISP/软件/…)的可用性和成熟度。

2.7.3 量化计算(效率映射)
图6描述了使用非标准/专有工具向专有目标的转移。首先,工具链覆盖范围有限,通常包括手动和容易出错的步骤。安全上下文丢失。此外,移植到目标隐式地需要某些近似值(例如转换为定点、减少位深度),由于现代(判别性)深度神经网络(DNN)的非连续性,其影响往往是不可预见的。工具开发与项目特定任务之间没有脱钩。相反,必须在此流程中解决挑战。
近似计算是一种主要的研究趋势,旨在以科学和结构化的方式实现这一目标。

图6. 顶部:传输间隙。底部:安全上下文得到保留

03.当前汽车应用软件开发面临的挑战
随着软件复杂性呈指数级增长,理想的目标是缩短开发时间。随着OTA软件更新的预期增加,应用程序的软件开发最近已成为汽车生产线中最具挑战性和最昂贵的部分之一。由于传统的汽车约束仍然必不可少,因此仍需要广泛的安全性、质量和可靠性需求。这会影响创新和成本的速度,给开发团队带来交付压力。此外,软件数量的增加伴随着复杂性的增加,架构受到特定汽车需求的影响,例如硬实时、高可靠性和安全性、有限的资源、成本压力、短开发周期和领域知识的异构性。
3.1 开发流程:V模型
就图7中的ASPICE V模型而言,汽车开发和生产的标准流程,软件应用程序开发只是SWE.3“软件详细设计和单元构建”的一个框,但移植是在SWE.4“软件单元验证”中完成的,涉及整个生产流程。还有许多其他组件需要满足,包括系统、硬件需求、质量保证、测试和验证。整个周期可能需要长达三年的开发时间。实际上,软件解决方案的进步更新迅速,其复杂性显著增加。这意味着在软件技术的快速发展中没有可用且固定的解决方案。这需要一种新的发展策略来赶上快速而复杂的变化。

事实上,多年来,敏捷开发已成为汽车行业的热门话题。然而,在目前的开发流程(V模型)中,敏捷开发只能应对解决方案路径的微小变化或偏差,但这对于解决方案切换或升级来说效率不高。对于一个复杂的问题,如果解决方案没有固定下来,那么在开发周期中必须进行更多迭代,其中软件在环(SIL)和硬件在环(HIL)必须与软件修改和更新一起持续执行。实际上,典型的SIL和HIL活动可能需要数年时间才能使用大型数据集完成,同时可能已经需要升级最先进的解决方案。这加强了高级开发和生产开发之间的共同开发或非常密切的合作。图8展示了V-Model+(或改进的V-Model)的一个示例,该示例更加灵活,符合敏捷开发理念。在这个新流程中,设计了两个循环用于软件的可能更新或升级:
1)第一个循环是不断更新解决方案以满足SIL中给定的KPI;
2)在目标硬件中验证更新的解决方案。
高级开发预计将在小规模数据集上部分加入第一个循环和第二个循环。生产开发将负责对比平常大得多的数据集进行修改和验证。

3.2 人力资源需求和运营挑战
实现非常高的质量保证和安全目标使汽车世界成为一个相当封闭的社区,新手很难加入。此外,许多开发方面只有经验丰富的成员(10到20年的实践经验)才能涵盖,因此寻找训练有素的人员始终是一个挑战。这个传统问题来自各种高度定制和优化的汽车系统,这些系统需要在生产层面拥有非常多的实践经验。解决这个问题的一个明确途径是采用更先进的标准和先进技术,这些标准和技术足够通用,并且为最新一代程序员所熟悉。
3.2.1 需要一种新型的程序员
精通标准现代C++的开发人员可以非常快速地使用SYCL。开发人员面临的挑战是转变思维,在高度并行的编程范式中概念化编程。它需要实践和熟悉新的编程和设计方法,以便创建高效的程序。还有一些并行库正在出现,以减少程序员所需的编码工作量,如并行STL(C++标准模板库)。并行编程带来了新的编程设计模式,这些模式在HPC领域已经存在多年。多年来,人们一直在设计各种模式,例如缩减模式,以最大限度地提高超级计算机等并行计算机系统的性能和效率。这些模式需要高效编码,以降低功耗并缩短任何计算应用程序的执行时间。开发人员可以自由地向其应用程序添加其他库,甚至可以添加非C++库(如Python),而且几乎没有任何限制。这里使用Python来表达Google的TensorFlow库(用C++编写)使用的张量模型。
仅精通 C++ ’11之前的C++的开发人员必须学习使用SYCL编写代码所需的一些现代C++功能。这种类型的开发人员的一个例子是一直按照汽车行业事实上的编码标准MISRA C++编写C++的开发人员。他们还需要学习使用C++模板和一些更通用的良好实践,如RAII(模式资源获取即初始化),或熟悉支持的STL资源管理功能。
仅精通使用全局变量和戳寄存器的接近硬件的“C”编程的开发人员将面临更陡峭的学习曲线。他们需要熟悉面向对象编程(OOP)并练习使用其所有功能(如类继承和模板)编写C++,同时注意不要继续编写“C”风格的代码。此外,还需要在现有的“C”编程复杂性之上学习所有额外的C++编程复杂性。
图9显示了不同级别的标准及其与硬件、软件和库的解耦/适用性的比较。

根据Khronos Group的说法:“SYCL是一个基于C++的标准异构并行编程框架,用于在各种处理器架构(包括CPU、GPU、FPGA和AI处理器)上加速高性能计算(HPC)、机器学习、嵌入式计算和计算密集型桌面应用程序。”
3.3 芯片依赖性
由于成本和性能限制,汽车硬件高度专业化并针对某些特定用例进行了优化。它通常不灵活,有时甚至不可编程,开发人员只能使用一些可配置参数调用现有函数。这严重限制了可扩展性以及新创新解决方案的适用性。事实上,由于许多硬件限制,大多数最先进的技术无法移植到部署的平台上。例如:
• 有些(如深度学习)需要太多的吞吐量,超出了当前硬件的范围。
• 有些(如SLAM)不需要强大的处理单元,但需要CPU和GPU之间的快速内存复制,而大多数汽车硬件并不支持这一点。
• 有些(像素处理,例如光流)由硬件加速执行,但精度有所降低,这不允许开发人员实现他们想要的/更新的/创新的算法。此外,低级像素处理需要硬件加速单元的支持,而硬件加速单元是由不同的公司异构设计的。开发人员甚至可能需要学习一种针对特定硬件的新型低级编程语言,例如EVE、FPGA等。
• 有些(如传感器融合或优化求解器)需要高精度分辨率,而硬件对分辨率有很强的限制。
从所有硬件依赖性的例子来看,很明显,切换到新硬件几乎总是需要从头开始软件开发。在这种硬件受限的依赖性下,重用或CD是不可能的。
3.4 处理软件错误
最近,OEM因错误修复问题而召回的次数增加可能是由于生产前开发时间的减少,而系统的复杂性却显著增加。事实上,异构集成设计解决方案可能会解释更多问题,例如,一些部分继承自SoC库,一些来自一级开发。此外,许多可用的解决方案都是在许多狭隘的假设下设计的,这些假设在现实生活中很容易失败,例如完全平坦的道路、结构化环境等。设计问题没有简单的修复方法,通常会导致产品失效。或者,大多数小错误可以通过应用新的软件更新来更轻松地修复。这个问题的主要原因应该是质量保证、测试和验证不足。由于成本和时间压力,没有多少一级/二级甚至OEM能够严格应用A-SPICE 3标准或没有完全执行功能安全。后一种问题类型的现代方法是进行OTA软件更新。这在一定程度上存在争议,并且经常被认为在未经完全验证的情况下可能会影响车辆的安全性。

04.新软件从何而来?
最近观察到的一个重要趋势是转向强大的集中式控制器。过去的车辆使用数百个小型ECU,每个ECU通常专用于一项任务,而现代车辆则使用数量较少、功能更强大的集中式域控制器。例如,特斯拉使用单个域控制器,大众ID.3使用两个控制器。
由于它们使用集中式域控制器,它们现在主要负责执行同时执行的任务,并且还需要满足具有此类需求的任务的实时约束。这些控制器需要提供大量的计算能力,这通常不仅通过扩大处理器核心的数量来实现,而且还通过部署异构系统来实现,将CPU与各种专用处理器和加速器相结合。
此类加速器的示例包括GPU、FPGA或用于图像处理或AI任务的定制处理器。对具有各种不同功能单元的异构系统进行编程对汽车行业提出了新的挑战,因为迄今为止,汽车行业主要依赖于固有的顺序编程模型。为了充分利用平台提供的计算能力,汽车行业需要采用能够充分利用此类平台上的并行性和各种专用加速器的编程模型。然而,没有必要重新发明轮子,智能手机、个人电脑和高性能计算(HPC)等其他领域已经研究和建立了并行和异构编程模型,其中许多模型是汽车软件开发的良好起点。然而,选择一种或多种编程模型,再加上专有标准还是开放标准,是一个至关重要的决定。
4.1 专有标准
最流行的专有编程模型之一是CUDA编程语言,由Nvidia开发和维护。CUDA允许使用基于C/C++的编程语言在异构系统中高效地编程GPU。调查发现CUDA生态系统非常丰富,包括编译器、分析器和用于AI训练和推理等任务的专用库。与开放标准OpenCL及其多样化的硬件支持相比,CUDA的重点完全是使用Nvidia GPU的官方支持的Nvidia设备。然而,这确实允许更一致的开发环境和良好的性能。CUDA程序仍然需要重组才能实现并行性并快速卸载计算。
然而,与任何其他专有标准一样,CUDA有一个主要缺点,即潜在的供应商锁定的危险。生产就绪的编译器仅由Nvidia提供,并且仅适用于Nvidia设备(目前仅限GPU)。这使得汽车公司最重要的资产之一,即其生产软件代码面临高风险,因为转向Nvidia以外的供应商可能会使整个现有CUDA代码库几乎毫无用处。除此之外,专有编程模型通常仅在非常有限的一组设备上可用。就CUDA而言,编程模型和API只能用于Nvidia GPU,而不能用于异构系统的其他重要组件,例如多核CPU、FPGA或专门用于AI的定制加速器。
4.2 开放标准
开放标准的一个关键优势在于其多样性:它需要来自许多不同公司和领域的许多专家(每个人都有不同的经验)来设计API的规范。因此,在如此多的利益相关方共同努力实现互利的情况下,可以快速进行改进以解决问题并扭转修订后的规范。不同的供应商提供开放标准实现。软件API为他们的产品提供了适用于各种设备和架构的通用编程接口。OpenCL就是此类已建立的标准之一,该标准可在多种设备上使用。OpenCL不仅被大多数GPU供应商使用,还可用于对多核CPU、FPGA(英特尔和赛灵思)和更专业的处理器(例如瑞萨R-Car)进行编程。
OpenMP是并行编程的另一个成熟且成功的标准。尽管OpenMP最初主要设计为同质多核CPU的共享内存编程模型,但在该标准的最新版本中,它已扩展到异构加速器。如今,OpenMP设备卸载支持可用于许多不同供应商的GPU,包括AMD、Nvidia和英特尔,以及其他专业加速器(如矢量引擎)。
SYCL成为使用现代标准C++和单一源编程模型的开放式并行编程模型主体的新成员。SYCL的设计初衷是作为OpenCL的精神继承者,它避免了早期研究中发现的OpenCL的许多缺陷,例如需要在不同的编译单元之间分配主机和设备代码,或者使用极其冗长的主机API。SYCL还被设计为与C++(作为底层编程语言及其机制)进行极好的互操作。这允许开发人员重用现有顺序实现的重要部分,这已被证明非常有用,可以避免在OpenMP环境中并行化时将错误引入代码中。
尽管SYCL是一个相对较新的标准,但它已受到越来越多的关注,各种供应商都已宣布或已经发布了对SYCL的支持,包括CPU和GPU供应商(AMD ROCm、Intel)、FPGA供应商(Xilinx、Intel)和其他供应商,例如,Renesas/Codeplay为R-Car提供支持。这种广泛的采用以及适用于许多不同平台和架构的特性,使SYCL成为未来汽车软件开发的一个非常有趣的候选者。第6节将更详细地讨论SYCL。
本节中提到的所有开放标准的共同点是,它们都由多党派机构维护,例如架构审查委员会(ARB)或SYCL和OpenCL的Khronos工作组。这些开发和维护开放标准的机构为利益相关者提供了一个参与这些标准开发的合适平台,并为汽车行业提供了一个提高对其特定需求的认识的机会。
4.3 开源安全问题
计算堆栈不断发展,一些软件成为“遗留”,算法得到改进,新的算法被发现来取代不再适用的算法。在动态世界中,对安全需求的考虑很少,技术及其软件将发展得非常快,这是一件好事,因为它推动了创新。更快的创新和迭代开发是汽车行业视为开发消费者想要和法规规定的下一代汽车功能的方法。研究人员使用的许多开源项目并不是按照功能安全标准开发的,但它们很可能也会发展到可用于安全关键环境。一旦这项技术被引入汽车领域,推动快速技术研究的发展速度就会停滞不前,因为它必须遵循安全流程并满足特定的运行安全需求。在开源社区工作的开发人员不一定对安全应用有既得利益,虽然他们帮助开发软件,但他们可能没有考虑支持安全目的的软件。现在,工作负担落在了安全应用程序开发人员身上,他们需要开发工具和软件,而通常只需要更少的人员。

05.软件复杂性不断增加
众所周知,汽车是人类最复杂的大众产品,创新呈指数级增长。汽车系列和汽车系列变体的数量不断增加,带来了额外的复杂性。几十年前,OEM专注于三条汽车系列(例如梅赛德斯C级/宝马3系、E级/5系、S级/7系),而现在,可供选择的车型种类越来越多。每条汽车系列中的选项变体也是如此。同一车辆实例与其他系统的连接性和交互性不断增加,进一步增加了复杂性。此外,子系统/组件的设计周期也不同,因此组合集进一步加剧了复杂性的自由度,从而导致“不受控制的增长”和碎片化。根据康威规则,最终产生的ADAS受到公司给定的组织/沟通结构的限制:“任何设计系统(广义定义)的组织都会产生一个设计,其结构是该组织沟通结构的副本”。
5.1 如何管理
汽车行业正在应用多种质量措施来控制软件复杂性和管理软件开发。
5.2 CI/CD挑战
5.2.1 它们是什么?
• 破坏软件API(不遵循商定的开放立场)
• 破坏库的应用程序二进制接口(不遵守C++指南以防止出现问题)
• 大量应用程序数据的存档、管理和传输
• 汽车CI/CD的手动元素
• 应用程序开发中的多个供应商
• 开源和开发方向以支持汽车的需求
CI意味着对ADAS应用程序计算堆栈的所有部分进行高频率的更新。
开放标准和API规范的吸引力之一是它们确保应用程序可以使用已证明符合要求的任何实现。对于开发人员来说,这意味着他们的应用程序不需要为不同的目标重写。但是,新版本的库需要在堆栈内进行测试,以确保应用程序仍按预期运行。支持性开发计划可能会要求使用综合测试套件。
对于一些开发人员来说,跟上堆栈中其他地方的最新变化所涉及的工作可能太多了,因此他们可能会选择推迟升级。这样做的缺点是,开发人员越是推迟,他们在采用更高版本时需要进行的更改就越多。车辆中的OTA更新等技术可以提高更新频率。这非常有吸引力,因为它允许安全更新或错误修复快速到达车辆,而无需召回、增加成本和延迟,但这确实引发了人们对如何在短时间内验证如此复杂的软件的担忧。
虽然开放标准确保了主要版本之间的一致性,但这并不意味着实施者的次要版本始终兼容。如果应用程序升级,第三方软件库可能会通过两种方式破坏应用程序:
1)库对面向应用程序的API(应用程序编程接口)进行更改
2)库内隐藏的ABI(应用程序二进制接口)更改
在大型C++代码库中,组件之间有许多内部接口,无论是内部开发还是由开源社区开发,版本之间破坏二进制兼容性的机会都很高。这些不兼容性更改的根源在于C++语言的使用以及C++编译器编译代码的方式。许多破坏C++的代码更改可以很容易地识别出来,并且通过使用良好的编码开发策略,开发人员可以避免ABI不兼容性更改。
应用程序开发人员投入时间并对他们选择使用的库充满信心。当API或ABI更改破坏他们的应用程序时,他们必须转移资源来调查问题,如果这种情况发生得太频繁,就会削弱信心。库更改和修复的频率意味着有更多新版本的应用程序进入该领域。支持语义版本控制的实现将允许从业者追踪车辆的变化。

06.SYCL
SYCL是未来应对并行和异构系统编程挑战的有希望的候选者。它旨在支持从HPC和嵌入式应用程序到强大的机器学习框架的各种应用程序。该开放标准得到了许多公司在各种平台上的支持,例如CPU、GPU和FPGA,旨在为C++带来并行和异构编程功能,并最终与ISO融合。
SYCL不需要任何额外的语言结构(例如编译指示),并且依赖于纯C++。这还允许重新使用现有的串行代码库作为并行实现的起点,并且不需要对代码进行广泛的重构,这两个编程模型的属性在研究中被证明是非常有益的。SYCL运行时将根据数据访问规范将不同的内核组织成一个任务图,并自动处理调度、同步和数据管理。内核本身使用数据并行执行模型,类似于OpenCL或CUDA内核。
6.1 SYCL培训和使用
正如所强调的,SYCL正在发展成为异构编程的行业标准。有大量的培训材料可用。作为主要信息来源,SYCL生态系统网站可用。在这里,可以找到最新的更新、研究活动和代码。对于程序员,可以在Codeplay的SYCL指南中找到更多信息。
图10说明了具有标准化接口的通用流程。

6.2 SYCL现状
尽管SYCL开放标准规范于2014年首次亮相,但它仍在稳步发展以满足其Khronos工作组成员的需求。SYCL正在引起汽车、HPC等许多行业的关注。英特尔最近将SYCL作为其oneAPI计划(英特尔的SYCL实现和支持工具)的核心,为该标准提供了额外的要求。该行业的主要关注点之一,尤其是在汽车领域,是功率和硅效率。如前所述,这迄今为止一直是新芯片和底层硅加速器IP的关键决策标准之一。有不同的实现可用,如图11所示。它们都遵循开放和公共标准,不同的层在不同的硬件上运行,如图12所示。此外,SYCL内核可以同时在CPU以及多个目标分立设备(如GPU、DSP或FPGA)上运行,这进一步提高了其性能和可移植性。SYCL规范在其设计中解决的另一个因素是能够以一种对开发人员不具侵入性的方式管理主机和目标设备之间的数据移动,并证明其成功。SYCL管理主机和设备之间的多个数据依赖关系,并在开发人员提交内核以供执行后同步数据。对于SYCL采用者来说,一个有趣的点是,虽然存在SYCL规范,但采用者或SYCL实现开发人员不必完全遵循该规范。可以根据客户的需求定制实现,这意味着在必要时可以采用更轻量的实现。如果产品要通过认证并作为具有SYCL实现进行销售,则SYCL实现必须遵循Khronos规范。


有多种性能数据和基准测试活动可供使用,它们侧重于特定用例和场景。有研究显示了SYCL和CUDA之间非常相似的性能结果。它展示了高度参数化的SYCL内核如何比手动调整的库(如clBLAST等)具有竞争优势。对OpenCL和OpenMP进行了比较。在这里,结论表明SYCL的性能差距仍然存在,但强调了进一步缩小的潜力。使用SYCL编写内核程序以通过使用并行性来加速计算密集型任务的ADAS或AI应用程序,开发人员可以在图12中所示的任何目标设备上执行他们的代码(在每个不同的实现下方),而无需重写内核程序。借助SYCL的单一源应用程序开发模型(内核和主机代码并排),可移植性是关键。所有SYCL内核程序都将计算相同的结果,无论它在哪个设备上执行,尽管它们的执行速度可能会有所不同,这是预期的。到目前为止,CUDA的表现也优于SYCL,但跨平台SYCL应用程序的优化才刚刚开始。公开数据源得出的明确结论表明,SYCL的性能非常接近专有和硬件特定的实现。汽车行业对高度优化的实现有着明确的需求,这将进一步加速这条道路上的进展。

07.汽车开放标准的关键技术需求
在开发周期中,需要各种KPI来评估、量化和评定汽车软件项目的能力。这种多维KPI需要分数权重来汇总为一个分数。权重可能取决于项目目标、供应链角色和用户范围。然而,人们强烈地感觉到,以下项目与该领域的大多数用户相关,其中人工智能、计算机视觉和可维护性的重要性权重越来越大。图13描绘了主要相关KPI领域的高级概述。

不仅这些技术方面,而且组织、法律和商业方面也需要考虑和衡量。越来越短的开发周期最终将导致对持续开发的需求,并且至关重要的是优化开发时间。虽然库的可用性至关重要,但它们的底层成熟度才是关键。使用此类流程的人越多,开发流程的成熟度就越高。相应的汽车KPI与组件/子系统级别相关,也与系统级别相关,如图14中的仪表所示,其中每个组件都经过测量并且对整体系统性能有很大贡献。



08.差距讨论开放标准与汽车需求


09.结论和建议

END

1、如您转载本公众号原创内容必须注明出处。
2、本公众号转载的内容是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请作者或发布单位与我们联系,我们将及时进行修改或删除处理。
3、本公众号文中部分图片来源于网络,版权归原作者所有,如果侵犯到您的权益,请联系我们删除。
4、本公众号发布的所有内容,并不意味着本公众号赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本公众号证实,对本文全部或者部分内容的真实性、完整性、及时性我们不作任何保证或承诺,请浏览者仅作参考,并请自行核实。
夜雨聆风

