阅读之前强烈建议参考之前系列文章:
01 | 芯片: 解密汽车嵌入式芯片CPU、MCU、SBC
02 | 芯片: GPU怎么就成了科技界的“新宠”?
03 | 芯片: 长文详解智能汽车的心脏SoC与安全岛(Safety Island)设计
04 | 芯片: 从裸机到智驾操作系统OS - 关于汽车OS必须知道的事
05 | 芯片: 万字详解不同的E/E架构下,我们需要什么的汽车操作系统OS?
在前几篇文章,我们聊到了不同类型的汽车芯片(CPU,MCU,GPU),以及随着汽车电子电气架构的集中化带来的汽车操作系统的演变和趋势等,相信看完这些文章,朋友们应该也算是汽车芯片和操作系统小半个专家了。
今天我们接着上次的话题,深入探讨在软件定义汽车(Software-Defined Vehicle, SDV)的大趋势下,尤其是智能座舱和自动驾驶领域,与汽车操作系统密切相关的关键技术—中间件(Middleware)。近年来,随着汽车智能化进程的加速,中间件已成为各大OEM(整车制造商)、软件供应商,乃至芯片厂商激烈角逐的技术高地,热度之高可谓“战火连天”。
汽车软件中间件是一种在车辆电子控制系统中位于操作系统与应用软件之间的抽象层,为不同电子控制单元(ECU)和软件模块提供标准化的接口和服务。它的主要功能是屏蔽底层硬件的复杂性,帮助各种应用在不同硬件平台上运行时无需针对特定硬件进行调整。
图片来源: Apex.AI
在当今汽车产业的变革中,中间件已不再是幕后默默运作的“配角”,而是推动智能汽车功能落地的“核心引擎”之一。它的作用不仅是将底层硬件与上层应用软件无缝连接,更在复杂的智能座舱体验和自动驾驶技术中起到承上启下的关键作用。
那么问题来了:
- 在当下汽车电子电气架构集中化的大背景下,中间件的意义有什么变化?
- 为什么突然感觉大家都在卷中间件?
带着这些问题,我们开始今天的文章。顺便文章最后给朋友们分享一个笑话,记得坚持看到最后哦。
第一个问题,在当下汽车电子电气架构集中化的大背景下,中间件的意义有什么变化?
这个话题其实比较大,涉及内容也比较多,我试图从以下几个方面给朋友一个直观的感受。
传统的汽车电子电气架构是分布式的,每个ECU负责特定的功能,这时候我们的控制系统软件基本上都是采用AUTOSAR Classic这种硬实时软件架构系统,中间件也不是什么新的概念,就是我们熟知的RTE。
那么RTE有什么作用? 其实主要就两个:
- 提供ECU内部及跨ECU之间的通信功能
具体怎么理解呢?
你可以把它想象为一个电话接线员,不管从哪里打来的电话,先经过它给你转接,统一进行寻址,然后再转到你要打的对象那里。如果电话线路繁忙,它就是让你先等等。如果你要打的是急救电话,那么它就对你的电话进行优先转接。
这也是为什么AUTOSAR Classic中定义了三种基本的接口,AUTOSAR接口,标准接口,AUTOSAR标准接口,其中最常用的就是AUTOSAR接口,它就是通过TRE提供的标准接口,用于对硬件进行抽象。
- 调度任务管理功能
也就是给Runnable提供相应的数据和资源,并实现任务触发,映射到OS Task上去。
但是,随着架构集中化的发展,多个功能模块被集成到中央计算平台或域控制器中,这要求中间件能够实现更复杂的功能,性能要求也更高,具体包括以下几个方面:
1. 高性能计算和虚拟化支持
在集中式的电子电气架构下,中间件需要适应更复杂的多核处理器和虚拟化环境。中间件不仅需要在单一的ECU上运行,还必须能够跨域控制器或中央计算平台统一协调多个子系统,提升资源调度和任务管理的效率。
例如:
- 高性能计算支持:中间件需要优化调度算法,以处理多个复杂功能集成在一个或多个域控制器中的情况,特别是在自动驾驶系统、智能座舱等高计算负载场景下。
- 虚拟化支持:为了隔离不同功能域(如动力总成和信息娱乐系统),中间件需要支持虚拟化技术,允许多个操作系统和应用程序在同一硬件上运行。
2. 跨域通信的优化
随着电子电气架构从分布式向集中式过渡,跨域通信成为关键。
中间件必须能够支持多个域控制器之间的高速、低延迟通信,例如通过以太网(Ethernet)实现高带宽数据传输,或使用TSN(时间敏感网络)技术保证实时性。
具体可以从两个方面来看:
- 统一的通信协议支持:中间件需要支持不同的通信协议(如CAN、LIN、以太网)之间的无缝交互,同时保证数据的可靠性和实时性。这种“桥梁”功能变得更加复杂,因为数据流量增加,系统间通信更加密集。
- 服务化架构(SOA):在SDV中,功能被抽象为服务,中间件需要支持服务化架构,将传统的信号传输模式转变为面向服务的通信,允许不同软件模块按需访问功能或数据。
3. 异构计算和多核处理优化
未来汽车的计算需求日益复杂,异构计算成为趋势。中间件需要支持异构计算环境,例如多核CPU、GPU、专用加速器等,并且能够有效分配计算资源,保证系统的实时性和能效。
例如:
- 多核调度与任务并行处理:中间件需要支持高效的多核任务调度,确保在复杂计算场景下合理分配计算负载,提升整体性能。
- 加速器调度与优化:对于自动驾驶的感知和决策功能,GPU和专用加速器的使用越来越多。中间件需要管理这些异构硬件的资源调用,确保计算任务能够充分利用硬件加速能力。
4. 动态软件更新与生命周期管理
随着SDV的出现,软件的动态更新和管理成为汽车开发的核心能力。中间件需要支持车辆在运行期间进行OTA(Over-the-Air)更新,确保软件能够在不影响系统安全和稳定性的情况下进行更新和维护。
例如:
- 差异化更新:中间件能够支持只更新特定模块或功能,而不需要整个系统重新编译和部署,减少停机时间和更新风险。
- 版本管理与回滚功能:中间件必须具备版本控制和回滚功能,确保在更新过程中出现问题时,系统能够自动恢复到以前的稳定版本,保障系统安全性。
5. 更高的实时性和安全性需求
在自动驾驶、车联网等场景下,系统对实时性和安全性的要求极高。中间件需要进行优化,以满足更严格的延迟和安全标准。
例如:
- 实时调度与任务优先级管理:为了满足自动驾驶或其他安全关键功能的严格实时性要求,中间件必须提供实时任务调度和优化机制,确保关键任务得到优先处理,减少延迟和上下文切换的影响。
- 安全架构增强:SDV的开放性使汽车面临更多的网络安全威胁。中间件需要实现增强的安全管理机制,如访问控制、数据加密、认证与防护机制等,以应对潜在的黑客攻击或数据泄露风险。
第二个问题,中间件这些年为什么又火了? 为什么大家都在卷中间件?
不知道朋友们有没有注意到,这两年中间件突然火起来了,并且大多都是和自动驾驶放,智能驾舱联系在一起。突然间,不管是芯片制造商,还是基础软件供应商,甚至OEM,都在强调中间件有多么重要,纷纷开始自研中间件,中间件突然就成了香饽饽,为什么会这样呢? 在集中式电子电气架构下,中间件有什么新的意义吗?
个人觉得,主要原因还是在于,汽车智能化以及电子电气架构集中化,导致的中间件作用的突显,以及各家对新兴领域的争夺。
具体来讲,我们可以从以下几个方面谈起:
1. 集中式电子电气架构下硬件的异构(SoC)
- 在集中式的电子电气架构下,为了实现不同的软件需求,控制器硬件异构SoC成为趋势,不同的硬件组件(例如,CPU, GPU, DSP, AI加速器等)被集成到一起,而这些硬件组件大多基于不同的协议或标准,这时候就需要中间件的存在,作为一个抽象层,统一不同组件的接口,促进异构系统的集成,从而降低开发难度和成本。
- 中间件通过抽象不同的异构硬件,使得在控器内部及跨控制器之间的数据传输、协议的转换和消息的分发成为可能,确保各个软件模块都能够高效地互相沟通。
2. 基于服务的架构(SOA)实现需求
- 在汽车智能化背景下,汽车软件复杂骤增,软件组件之间交互也更加复杂。基于服务的架构SOA通过将功能模块化为独立的服务,并通过标准化的服务接口来进行相互通信,使得每个服务可以独立开发、测试和部署,从而降低了系统的复杂性,并简化了软件的开发和维护。
- 汽车智能化,尤其是自动驾驶系统集成了大量的传感器、摄像头、雷达和通信设备,以及复杂的算法,如感知、规划、控制等,这些算法对计算资源,尤其是数据吞吐量和通信效率的要求非常高,传统的中间件无法满足这一需求,需要开发新的通讯中间件,实现更高效的通讯。
- 自动驾驶系统对实时性和安全性有极高的要求,中间件能够提供必要的支持。例如,通过优先级管理来确保关键任务的实时执行,或者通过数据加密和访问控制来保障系统安全。
3. 快速升级和扩展的需求
- 为了保持竞争力和降低成本,汽车OEM需要保持软件平台化,模块化,不断更新,以提升车辆的性能和功能。中间件的存在使得软件和硬件松解耦,使得这一需求成为可能。
- 汽车软件动态更新成为常态,以自动驾驶系统为例,其技术一直处于不断演进的过程,需要频繁的软件功能更新和扩展。中间件能够帮助汽车厂商更轻松地部署软件更新,支持模块化设计,使得新功能可以在不影响其他部分的情况下进行集成和测试。
4. 打破垄断的新希望
- 在分布式架构下,汽车嵌入式解决方案很唯一,说白了就是Classic AUTOSAR,由不同的软件供应商,例如Vector,ETAS等国外供应商,根据Classic AUTOSAR标准,开发相应的基础软件并配以完整的开发工具链,基本上一条龙服务,所以这块内容非常成熟,对实时性,安全性的要求很高,所以基本上被外国的大的软件供应商垄断。
- 在汽车智能化背景下,域集中或中央电子电气架构成为发展趋势,车辆软件复杂性,数据吞吐量骤然提升,基于服务的架构成为主流,虽然Adaptive AUTOSAR的推出,在一定程度上弥补了Classic AUTOSAR的不足,但是这块内容相对比较空白,行业内还没有形成统一的软件架构标准和技术解决方案,各家都处于积极尝试的阶段,在满足自身产品需求的同时,也在试图占领更多市场。
- 目前国内汽车智能化发展速度较快,在一定程度上,站在了技术发展的最前沿,各家都在致力新的汽车软件架构的发展,这也是打破国外垄断的新机遇。
5. 开发不了内核OS,只能在中间件上做文章
- 虽然目前汽车智能化软件架构相对处于百花齐放的状态,没有统一的行业标准和生态系统,但是内核操作系统,例如ROTS, Linux, ROS等,相对还是比较稳定,目前都是基于这些内核OS,这些内核OS已经经过很多时间的验证,生态及开发工具相对完善,完整开发的难度也非常大,所以内核OS上做文章的空间非常有限,难度较大,也没有太多的必要。
- 而作为广义操作系统组成的中间件,技术开发难度相对低,也和各家OEM应用层软件紧密相关,所以就成为了争逐之地,所以目前所谓自称自研汽车操作系统,实质上都是中间件的自研,毕竟在这么内卷的环境下,各家为了宣传都是用尽解数,说的天花乱坠。
最后,这里顺便分享一个知乎看到的笑话!
问: 操作系统怎么开发?
答: 可以把git clone把Linux下载下来,find找到所有文件,用sed命令,把Linux替换成Mimemg,然后运行编译以下,然后写个PPT,开发发布会,咪蒙操作系统就开发完成了。
一个字,绝!
但是,朋友们千万不要太当真!!!
写在最后:
芯片系列,中间件第一篇内容我们就聊完了,接下来会进一步给朋友介绍到底什么是中间件,如何工作,如何开发,希望能够给朋友们对其带来更多理解
END
来源:汽车MCU软件设计
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。)