白皮书

软件定义汽车与基于模型的设计

简介

向软件定义汽车 (SDV) 的转型将使汽车制造商在车辆的整个生命周期内均可添加新功能。为了支持频繁更新,团队正在采用新方法,包括具有高性能计算机 (HPC) 的中央/区域 E/E 架构、具有面向服务的架构的嵌入式软件、具有持续集成和持续交付的自动化以及使用仿真的虚拟验证。

向 SDV 的转型并非易事。本白皮书共享了 MathWorks 在与全球汽车公司的合作中获得的深度见解和最佳实践。它涵盖基于模型的设计支持软件定义汽车开发的以下方式:

  • 跨平台重用软件:基于模型的设计有助于在 HPC、区域控制器和电子控制单元 (ECU) 之间重用软件。
  • 通过自动化缩短开发时间:模型的使用,以及自动化和持续验证、一致性检查和可追溯性分析,有助于在满足安全性和质量需求的同时缩短开发时间。
  • 实现集成前置:物理系统模型和虚拟化软件堆栈的集成支持软件集成测试流程前置,从而能够加速缺陷检测并提高测试覆盖率。
  • 赋能领域专家:基于模型的设计使领域专家能够采用现代软件开发实践并创建高质量软件。
章节

软件功能和客户价值

品牌特色功能和客户价值将通过软件来传递。客户期望车辆不仅要保障安全,更要成为一个承载其无缝数字生活的平台,提供超越驾驶本身的丰富交互与体验。这些期望推动着车辆技术的进步,如电气化和自主性。

SDV 价值循环图,包括客户期望、技术与创新以及商机。

软件提供满足客户需求并支持业务目标的功能。随着客户期望的演进,此循环会持续进行。

充满信心地快速交付软件

快速且可靠地交付汽车级软件具有挑战性,原因有很多,包括:

  • 软件复杂性增加及由此带来的验证挑战
  • 功能安全性需求
  • 车辆系统和软件团队的思维方式不同

本白皮书探讨用于 SDV 开发的技术以及相关团队如何协作。

审视软件定义汽车的要素

MathWorks 与全球各地的汽车公司均有合作,并在此过程中观察到了功能实现与功能失常的普遍模式。

交付软件定义汽车需要车辆开发和软件创建方面的能力,以及车辆团队和软件开发团队之间的密切协作。然而,这些团队通常各自为政,因为他们遵循不同流程,并且历来使用不同工具。

开发软件定义产品的能力(现代软件实践、数据驱动功能和云技术)以及车辆工程能力(可靠性、功能安全和物理组件)。

“软件定义”和“汽车”的要素。

汽车是多域系统,其中可靠性、功能安全以及许多物理组件的集成至关重要。

构建软件定义产品所需的能力,在于掌握以快速开发、频繁发布和高度自动化为特点的现代敏捷软件开发实践。软件定义产品还需要数据驱动功能,数据通过云由车队提供。

将这些能力结合起来时,各个团队、工具、流程、思维方式和偏见会相互交织碰撞,从而出现很多风险和复杂性。

SDV 开发过程的基础部分是车辆。二十年前,汽车系统开发工程师采用孤立的方法,工作由不同小组各自完成。他们使用文档作为交流手段。这种情况随着基于模型的设计而更改。

开发部分示意图:需求、算法设计、架构、仿真、嵌入式软件和代码生成,这些通常是彼此孤立的。

传统的孤立式系统开发方法。

章节

应用基于模型的设计

基于模型的设计围绕模型(而不是文档)协调开发活动。模型可作为一组可执行需求,用来驱动验证、确认和测试活动。这种方法使您能够及早发现并解决需求、架构和算法方面的问题。然后,您可以从算法模型自动生成嵌入式代码,例如 C 或 C++ 代码,以在微控制器上运行。

示意图:基于模型的设计如何将以前孤立的开发部分(仿真、算法设计、代码生成、需求和架构)集成到嵌入式软件中。

基于模型的设计简化系统开发。

使用基于模型的设计,各个团队还能够解决人们认为的 V 形开发周期的僵化问题。严格遵循 V 形开发周期会导致一系列串行的开发步骤。这意味着,必须先有明确且固定的系统需求,然后才能进行系统分解;同时,也必须等所有组件都开发完成并就位后,才能开始进行集成测试。这种模式会大大地降低开发的敏捷性和效率。

在使用 Simulink® 的基于模型的设计中,您可以对整个系统(包括电池和转向等物理组件的模型,以及整车架构)进行建模和仿真,同时还能表示在车辆中运行的各种软件算法。使用这样的系统模型,您可以开始新软件功能的虚拟开发,并从一开始就进行虚拟集成测试,测试新功能与其他软件功能的对接,所有些都在虚拟车辆中运行。

此外,使用 Simulink,步骤可以比 V 形开发周期所表达的更加紧凑,并且步骤的执行能够以符合现代软件开发实践的方式实现自动化。

最后,对于软件定义汽车,车辆 E/E 架构正在发生变化,相关的开发过程也在变化。实现基于模型的设计的工作流也在相应地发展。

通过仿真和虚拟化实现流程前置

工作流变化的一部分是芯片、基础软件和中间件的虚拟化,这种虚拟化支持早期软件集成(流程前置集成)。例如,Simulink 可以通过集成 Infineon® AURIX™ 处理器的虚拟表示(使用 Synopsys 的技术)来实现集成和测试的流程前置。您可以在仿真环境中快速迭代,然后使用 Infineon 库自动生成针对该处理器优化的代码。Simulink 还支持使用其他公司(如高通)的虚拟化技术。

流程图:基于模型的设计与 Synopsis 和高通的第三方技术集成,以支持为下一代处理器生成优化代码和早期集成。

通过流程前置,您可以及早快速迭代、测试并验证。接下来,您可以为处理器生成优化代码。

支持面向服务的架构

SOA 是构建可单独更新的模块化软件的重要组成部分。当今,借助基于模型的设计和 Simulink,您能够为涉及 HPC 和区域控制器的新型 E/E 架构创建基于信号和面向服务的应用程序。您可以对 SOA(包括 AUTOSAR Adaptive 应用程序)进行建模、仿真,并在将其部署为模块化服务之前生成 C++ 代码。

运行在高性能硬件上的示例 SOA 软件堆栈,按层级自上而下分为应用软件、中间件和基础软件。

中国电动汽车制造商极氪公司成功将基于模型的设计用于 SOA 软件的开发,这使开发团队能够快速迭代和发布软件。

了解更多

与开源和第三方平台集成

生产开发环境必须集成许多工具和平台。基于模型的设计对此提供良好支持,因为 Simulink 可对接许多其他工具,包括开源工具和代码。

示意图:第三方软件技术如何与 Simulink 集成,包括 C++、DDS、Python、FMI 和 ROS。

对整个系统和组件进行建模。您也可以集成多个来源的组件。

复杂场景仿真

创建用于仿真的道路和非道路场景有助于您微调系统需求,并针对逼真场景进行测试。

创建道路或施工场景用于仿真和测试。

提高速度和质量

接下来让我们看看软件方面。现代软件开发实践强调敏捷性。

实现基于模型的设计的工作流已获得发展,车辆系统和软件开发团队能够使用共享工具和目标来保持一致,让整个流程变得敏捷。整个系统、组件、虚拟处理器和场景的虚拟化提供了逼真的测试环境。

工程工具越来越需要与 IT 基础架构集成。在汽车行业,工程和 IT 之间的密切协作并不常见。MathWorks 与组织通力合作,将这些团队整合在一起,并使用软件团队和平台团队使用的开发运营一体化工具来帮助自动化基于模型的和系统工程的方法。其目标是统一流程执行方式和管道运行方式,并通过仪表板和性能基准实现透明度。

软件工厂图,包含基于代码的开发和开发运营一体化以及 CI 平台的方框。

将软件开发和开发运营一体化与共享工具和目标结合起来。

无论您的软件是自动生成的、手动编写的,还是混合使用这两种方法,车辆系统、组件、处理器、软件堆栈和场景的虚拟化均可提供逼真的测试环境,该环境可以使用持续集成 (CI) 管道进行连接和自动化。

例如,吉利汽车的工程师认为,持续集成和持续测试 (CICT) 是从快速软件开发转向快速开发高质量软件的关键方面。他们认为,通过将 Simulink、Simulink Test™ 和 Polyspace® 等工程工具与 CICT 平台进行集成,可以加速价值流动并确保以更低成本持续、高质量、快速、稳定且可控地交付软件。结果就是,他们报告的首次软件集成测试的成功率高达 90%

吉利汽车的流程图:涵盖访问控制检查到自动测试的整个范围,可加速 CICT 以提高软件质量,并展示了流程前置的价值。

吉利汽车通过开发运营一体化提高质量和速度(来自 MathWorks Automotive Conference 中国汽车年会)。(图片所有权:吉利汽车)

大陆集团将基于模型的方法与其软件工厂集成已经有一段时间了,其中包括与 GitHub®、Jenkins® 和 Artifactory 的集成。该公司将其 CI/CD 系统的速度提高了一倍,并将维护工作量减少了一半。

大陆集团的流程图:其软件工厂中的开发阶段。

截图:大陆集团在 MathWorks 汽车大会上发表关于其软件工厂的演讲。(图片所有权:大陆集团汽车)

这两个示例强调了将系统和现代软件实践结合起来的重要性。

在系统中纳入 AI 设计

数据驱动功能的一种关键类型是 AI。这包括用于嵌入式系统的 AI 算法,通常称为嵌入式 AI。MATLAB® 和 Simulink 提供参考示例库,说明如何将支持 AI 的软件功能集成到系统中,然后为推断模型生成代码。借助这些示例,您可以开始设计、仿真、测试、验证和部署 AI 算法来增强复杂嵌入式系统性能和功能。嵌入式 AI 的一个示例是虚拟传感器。

虚拟传感器的 AI 工作流:数据准备、AI 建模、系统仿真和部署。

AI 可能是在 PyTorch® 等开源框架中创建的。通过联合执行、模型转换器和 MATLAB 深度学习模型中心,MATLAB 与这些环境以及 Python® 和 TensorFlow™ 可进行互操作。Simulink 模块可以引入这些推断模型,以便您进行仿真并了解 AI 在系统上下文中各种场景下的运行方式。

扩展到云

云提供了一个平台,用于扩展仿真和软件开发,以进行原型构建、开发以及向车辆分发功能和更新。Simulink 与云的集成使您能够将仿真和开发工作流扩展到 Amazon Web Services (AWS®) 和 Microsoft® Azure® 等云平台。

章节

结束语

向软件定义汽车的转型之旅涉及集成软件和系统思维方式、工具和流程。MathWorks 通过支持 AI、云技术和现代软件实践的工具随时提供帮助。

SDV 设计流程图。

采用基于模型的设计进行软件定义汽车开发。