Py学习  »  Git

软件定义汽车时代必备虚拟ECU与Digital Twin

阿宝1990 • 2 年前 • 252 次点击  

欢迎关注下方公众号阿宝1990,本公众号专注于自动驾驶和智能座舱,每天给你一篇汽车干货,我们始于车,但不止于车。


SDV时代汽车软件的开发模式即CI/CD

图片来源:Scaled Agile, Inc.


软件定义汽车(SDV)不仅牵涉到软件开发、E/E架构,还与芯片厂家密切相关。SDV时代,软件系统异常复杂且庞大,特别是智能驾驶需要频繁测试算法或软件,车辆出厂以后还需频繁OTA软件升级,传统的软件开发模式完全无法适应,必须采用IT工业的CI/CD开发模式,这就需要云端虚拟ECU,这就要求运算芯片厂家提供Digital Twin,包括了所有的SoC芯片和高端MCU。高通在这方面做得最好,成效也在慢慢地展现。


Synopsys的虚拟ECU抽象层层级

图片来源: Synopsys


     上图是Synopsys的虚拟ECU抽象层层级,要达到原生云,CI/CD开发必须达到4b级别,即全二进制,它是物理ECU的数字孪生兄弟即Digital Twin。Synopsys是CAD厂家,提供芯片所需要的虚拟开发套件(VDK),它可以已有的芯片提供VDK,如果是Synopsys辅助设计的芯片,那VDK就更加简单易得。


图片来源: Synopsys


Synopsys为上述厂家提供了或正在提供虚拟开发套件VDK。


即使不考虑SDV,基于虚拟ECU的汽车开发也是非常有价值的。


汽车系统模型测试现状

图片来源:迪捷软件


虚拟化技术使得在Windows PC上对汽车ECU(电子控制器单元)进行闭环仿真成为可能,能有效改善ECU开发过程。一些开发任务得以从道路、测试平台和HIL(硬件在环)转移到PC上,缩短开发时间和成本。虚拟ECU系统的复制比真实硬件系统容易得多,其配置可快速复制拓展,成本较低,每个工程师都可拥有一个开发环境,避免占用稀缺资源(如HIL台架测试),更多的工程师可从中受益,项目研发周期亦可大幅缩短。


传统ECU开发vs虚拟ECU开发

图片来源:迪捷软件


传统汽车软件开发的流程一般为:功能开发团队使用基于模型的工具链开发ECU模型,生成C代码,然后针对目标处理器进行代码编译,并使用测试平台,HIL系统和道路测试来测试和验证生成的ECU,进而将结果反馈至开发人员,结束开发周期。该过程存在的主要缺点有:1、迭代时间长;2、受原型车和测试设备的限制——硬件资源昂贵且稀缺,HiL设备百万元起跳,原型ECU肯定也是很少。


目标编译和主机编译

图片来源:VECTOR


在PC上设置虚拟ECU(以下简称vECU)主要有两种选择:

1

使用芯片模拟重新托管本机二进制代码。基于模拟ECU处理器的指令集,本机ECU代码(二进制)在PC上执行,无需访问C代码。即要有4b级虚拟ECU。这种也叫目标编译,目标编译的vECU使用详细的硬件仿真模型来表示ECU硬件。这允许生产软件在不进行任何修改的情况下运行。该软件的编译方式与实际车辆中的物理ECU完全相同。这需要对整个ECU、其SoC和/或MCU及其内部CPU内核、组件甚至板级设备进行详细的硬件建模。随着 Arm 主机现在随时可用,并且 Arm 架构越来越多地被汽车指令集架构(ISA)采用,主机和目标正在接近一致,并为 vECU 虚拟化开辟了新的机会。这也是为什么云端服务器厂家越来越多喜欢用ARM服务器的原因之一。


2

重新定位C代码。编译ECU的C代码,以便在Windows PC上执行——需要访问C代码来构建Windows可执行文件或DLL(Dynamic Link Library,动态链接文件)。大致是1-3级虚拟ECU。这种也叫主机编译,在主机编译的vECU中,ECU软件被交叉编译到仿真主机(通常是Intel x86服务器或桌面)。例如,如果主机是基于 x86 的机器,则使用 x86 编译器,而不是将在物理 ECU 中运行软件的 MCU 的编译器。目标编译的 vECU 使用特定目标汽车 MCU 或 SoC 的编译器,其中包含 Arm、瑞萨RH850 或英飞凌 TriCore 等 CPU。主机编译的vECU不包含ECU硬件模型。取而代之的是,在软件堆栈中的各个切点使用软件 API 的仿真,以删除较低的、依赖于硬件的软件层。因此,vECU没有运行完整的产品级代码,并且某些层需要修改软件。每个修改都是用模拟等效项对不属于被测系统(或 SUT)的特定软件层进行集中替换。


主机编译速度更快但准确性较低,而目标编译如果不依赖原生云开发会速度较慢但更准确,需要仰赖ARM服务器的云服务厂家。这些特征决定了它们的主要用途,其中主机编译适合复杂低的传统汽车开发,目标编译对应SDV和原生云开发,专门应对复杂的座舱和智能驾驶软件。


图片来源:Synopsys


级别 0 侧重于算法或(控制)模型的设计。程序员可以使用基于模型的设计,例如使用 MathWorks MATLAB 环境,也可以手动开发,例如 C/C++ 代码,甚至是用于 ADAS 或自动驾驶 (AD) 应用程序的机器学习模型。代码在主机上作为主机编译的代码或通过解释器进行模拟。第 1 级到第 3 级是在较低软件层添加越来越多的产品级代码的逻辑过程。在上图中,绿色代表生产软件,深蓝色代表仿真替换。在目标编译的vECU中,Level 4a和Level 4b运行实际的目标二进制文件,通过详细的硬件模型启用。级别 4a 与级别 4b 的不同之处在于,某些软件驱动程序或完整层在目标上被绕过并作为主机函数执行,而不是使用详细的硬件模型。

虚拟ECU只是Digital Twin的最底层表现形式,Digital Twin可以车队级、单车级、系统级、ECU级。虚拟ECU一般是对应Tier1,整车级对应整车厂,整车级实际上就是底盘系统级。底盘系统的标定使用Digital Twin会非常快捷,当然也需要整车厂大量的数据积累,目前来说还是虚拟ECU最为常见,开发成本最低。


宝马自动驾驶虚拟ECU开发,包含了数据标定、模型和算法

图片来源:BMW


使用虚拟ECU和原生云开发这种,宝马称之为虚拟工作台。


宝马VEW

图片来源:BMW


Stellantis紧急刹车辅助的虚拟ECU部署与在环测试

图片来源:Stellantis


宝马原生云开发

图片来源:BMW


宝马2024年底推向市场的OS9操作系统就使用这种开发模式

图片来源:BMW


雷诺确认采用Digital Twin和原生云开发模式,使用高通的数字底盘

图片来源:雷诺


高通SA8295、黑莓IVY基于QNX虚拟机的云端Digital  Twin开发

图片来源:AWS


松下的SkipGen原生云虚拟ECU开发平台

图片来源:松下


德国大陆汽车在2023年11月与新思科技合作(见下图),虚拟ECU和车辆Digital Twin助力SDV。

图片来源:Continental


目前,中国的汽车电子系统是全球最先进的,特别是软件系统。不过这是靠充足的软件人才和股市募集了足够多的资金,进而实现短期领先的。现阶段欧美厂家落后很多,但欧美厂家更多从底层系统级层面入手,不靠人才和资金堆砌,这个初期建设的过程比较慢,一旦建设成功,就能高效率运作,而且成本低,对人才依赖程度低。未来,欧美的汽车电子系统超过中国也不是不可能。

免责说明:本文观点和数据仅供参考,和实际情况可能存在偏差。本文不构成投资建议,文中所有观点、数据仅代表笔者立场,不具有任何指导、投资和决策意见。




为什么墙裂推荐大家加入阿宝说车 知识星球


加入《阿宝说车》知识星球,可获得这些模块的相关学习资料(目前有研究报告,线上大咖分享、线下闭门会),包括16大板块,详细清单如下:


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168174