我们都看过很多汽车广告,展示了一辆汽车猛烈撞击障碍物,以及它的安全特性如何挽救车内碰撞测试假人的生命。这些演示仅展示了汽车进行的测试的一部分,尤其是在其开发结束时。早在一辆全新的汽车撞上障碍物之前,就必须对机器的每一个部件进行全面测试。随着汽车技术的进步和车辆架构变得越来越复杂,这只会变得更具挑战性。
汽车开发商在过去 100 年中取得了显着进步。从机械改进到电子进步,再到最近的软件创新,一切都推动了从系统到芯片的颠覆。这也增加了能够验证、测试和模拟真实驾驶舱行为的软件平台的重要性。随着我们越来越接近自动驾驶汽车,软件定义车辆的成功正以惊人的速度增长,其功能和特性从根本上由软件实现。
这导致汽车原始设备制造商及其供应商在试图跟上已经竞争激烈的市场环境中的进步时变得越来越复杂。对于芯片设计人员和验证团队来说,现代汽车几乎每一个部件的组件都需要经过严格的测试和验证,以确保安全性、可靠性和质量,并确保软件在每个组件上都能按预期正常运行——复合挑战。结果是工程师的测试时间延长,开发人员在整个开发周期中的反馈时间更长。
电子控制单元:具有局限性的核心组件
电子控制单元 (ECU) 是半导体芯片上的嵌入式系统,运行软件以实现各种功能。它们提供多种功能,从发动机控制和刹车灯等必需品,到用于展开安全气囊和锁门的安全和安保功能,再到让您自定义汽车座椅角度和温度的舒适功能。
传统上,直到今天,汽车软件开发都遇到了几个瓶颈。除了处理正在进行的软件改进之外,使用基于硬件的开发方法意味着在您拥有可用于测试的更新的 .hex 文件、传输以十六进制格式保存且通常由微控制器单元使用的数据之前,几个团队之间的软件循环和如果您在循环中有其他供应商,则需要更多天或数周。一旦更新的文件上传到电子控制单元,就需要进一步的工具来运行、测量和校准软件。
可能有 100 多个这样的单元控制您驾驶的汽车,最常见于以下系统:
· 动力总成
· 稳定性控制
· 车身控制
· 刹车
· 操舵
· 高级驾驶辅助系统(ADAS)
随着汽车制造商不断创新车辆设计和功能,必须开发新的 ECU。随着每一次新的开发,测试这些 ECU 及其功能变得越来越困难。昂贵设备的资源成本和紧迫的工程师工作量是制造商的主要障碍(更不用说测试过程中发现的错误导致硬件损坏的后果)。工程师受限于他们可以通过原型运行测试来实现什么,并且硬件在环仿真 (HiL) 的结果是不确定的,从而导致多个测试产生不同的结果。缺乏确认的测试结果会导致更多的测试、时间损失和更多的成本。考虑到车辆拥有的数百个 ECU 以及传统的开发方法,是不可行的。
通过虚拟化使代码栩栩如生
解决方案?构建称为虚拟 ECU 的基于软件的测试环境,允许工程师将他们的开发任务从道路和测试台转移到 PC 环境。
将此开发虚拟化可显着减少测试时间和成本。在不冒硬件暴露风险的情况下,开发人员可以在几分钟内进行测试并收到反馈。这遵循左移方法,这是一种通过更快地优先考虑软件开发并排除功能硬件模型开发和验证软件所需的等待时间来加速开发的实践。这种策略促使开发人员在设计完成之前更早地发现问题——允许更快地修复错误(在将它们安装到硬件中之前)以加快交付速度。
传统汽车开发过程的连续性意味着需要先开发 ECU,然后再开发软件,这对严格的上市时间安排造成压力。使用Triple Shift Left方法,团队可以实施仿真和共享模型,以便及早在虚拟平台上开发软件,从而促进整个汽车供应链的协作。根据最终用例和源代码的可用性,可以将 ECU 软件的不同部分移植到 PC 上,并在多个工作台上同时进行测试(并行)。
当今的先进车辆通常包含超过 1 亿行代码,需要 100 多个 ECU 来实现功能。通过利用 Triple Shift Left 方法,团队可以在硬件可用之前通过虚拟化 ECU 显着加快开发和设计周期,所有这些都不会影响功能安全性、可靠性和质量。
使用虚拟 ECU 在几分钟内获得反馈
借助 Synopsys Silver虚拟 ECU 平台,开发人员可以通过启动虚拟化环境来构建 ECU,以测试 ECU 软件堆栈的各个方面。只需在 PC 上,您就可以使用物理 ECU 的应用程序代码来构建虚拟 ECU,从而缩短开发过程的多个方面。Silver 还作为一个强大的平台,通过仿真测试和验证联网 ECU、变速器、汽车部件和发动机的交互。
在构建虚拟 ECU 时,开发人员有多种选择。大多数情况下,它们从 C 代码库生成虚拟 ECU,但它们可以从其他来源派生,包括模拟模型。负责一项任务(例如芯片模拟项目)的开发人员通常无法完全访问应用程序代码,但仍可以使用 Silver 从编译的二进制代码创建虚拟 ECU 并将其闪存到目标上。构建过程甚至可以自动化。
让我们看一个 C 代码项目虚拟 ECU 的示例。上图左侧是用户编写的示例配置文件,指定编译器(即 Visual Studio)和目录、任务和输入/输出。用户将其插入 Silver 中的 SBS 工具以及任何附加文件,例如 A2L 和 DBC 的规范,具体取决于 ECU。Silver 平台然后从配置文件创建一个虚拟 ECU,并从物理 ECU 克隆应用层,提供操作系统仿真、虚拟内存、A2L 转换、XCP 连接和闪存。
一旦构建完成,虚拟 ECU 就会在整个开发过程中为工程师提供各种功能,例如:
· 通过手动测试和调试在系统环境中即时反馈
· 从模块级到虚拟系统级的自动化测试
· 大覆盖测试和验证
· 优化设计参数
· PC预校准(与车内校准界面相同)
· 应用程序的实时运行:快速控制原型、混合虚拟和真实组件等。
为了克服软件密集型车辆系统的复杂性,我们认为通过将软件开发步骤从原型车、测试台和 HiL(硬件在环)转移到功能开发人员的 PC 来实现开发过程的虚拟化至关重要. 持续集成也是虚拟 ECU 的一个关键方面。与多个持续集成工具(即 Jenkins)集成后,开发人员可以持续测试代码更改,并立即反馈更新是否有效。对于等待软件更新完成后再安装到车辆上的工程团队来说,这可以节省大量时间——防止硬件风险并加快测试过程。
展望未来
在软件定义汽车时代,汽车行业有望在 ADAS 技术方面取得更多进步,几乎无限可能。每年,看到全自动驾驶汽车在我们身边行驶的承诺似乎都可以实现。
为了让社会信任自动驾驶汽车,它们必须尽可能接近完美。防止错误和系统故障的很大一部分责任落在了设计支持这些技术的底层软件的开发人员身上。虚拟 ECU 帮助他们做到这一点——更快、更便宜。通过虚拟化测试环境,工程师可以通过持续集成和最大部署效率来减少他们的开发时间(和成本)。
作为汽车向自动驾驶汽车发展的未来,虚拟 ECU 将成为团队在无需额外硬件的情况下进行验证和测试并加速汽车软件开发的关键推动力。