网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在纯电和智能座舱、自动驾驶浪潮后,域控制器、中央计算单元、SOC引入汽车行业,再加上AUTOSAR标准越来越被行业接受,基础软件的叫法也越来越多。
汽车基础软件是啥呢?从定义来看,是用于实现汽车系统软硬件解耦,与用户应用功能无关,但提供汽车系统服务的一系列支撑的软件集合。通俗点讲就是板级芯片驱动、车载操作系统、Hypervisor和中间件。
操作系统的概念大家多少有点了解,常用的就是ISO、Andriod系统,其主要提供任务管理、进程访问、中断处理、内存管理、文件系统等功能,满足用于实时性、安全性等需求。现在车载中常用的操作系统就是QNX、Linux和Android。
**QNX是一个微内核、非开源、安全实时的操作系统。**QNX系统是由加拿大QSSL公司开发,后在2004年被哈曼国际收购,2010年又转手到黑莓。由于QNX是微内核架构,所以内核就很小,只有几十KB。驱动程序、文件系统、网络协议栈、应用程序都在微内核之外的受保护的内存中运行,这样可以实现组件间的相互独立,避免踩内存导致的内核崩溃。这也是其安全性高、稳定性好、不易受病毒破坏的原因。另外QNX也是首款通过ISO26262 ASIL-D安全认证的实时操作系统。
但是由于其封闭性,导致应用生态比较弱,而且开发难度很大,还有就是授权费很高昂,举个例子,当你在使用QNX系统做开发时,遇到一些疑问时,想问一下技术支持,这个都是按小时收费的,而且费用很贵。
因此其常用在仪表、自动驾驶等对安全性要求很高的控制器上,下图是QNX系统的软件架构。
**Linux是一款开源、功能强大的操作系统。**Linux具有内核紧凑高效等特点,可以充分发挥硬件的性能。它相较于QNX的最大优势就是开源,具有很强的定制开发的灵活度,而且功能强大,但是其稳定性和安全性就比QNX要差不少,因此常用在信息娱乐、智能座舱中,不过也有实力比较强的,将其应用在自动驾驶等安全领域,比如特斯拉。
**Android是发行版本的Linux,系统复杂,功能强大。**由Google和开发手机联盟基于Linux开发的操作系统,其特点是开源、应用生态丰富、可移植性强,适合用在信息娱乐和智能座舱。
三个操作系统的整体对比如下图所示。
从主机厂选择信息娱乐系统的操作系统来看,国外主机厂偏向于基于Linux,而国内主机厂偏向于用Android,比如比亚迪的Dilink,小鹏的Xsmart OS,蔚来的NIO OS等都是基于Android来打造的,这些仅仅是更改上层应用,而不会更改内核相关的。
从上图可以看出,在车载操作系统领域,基本全是国外的,国内如何在该领域逐渐自研,掌握核心技术,首先这个肯定很难,毕竟QNX和Linux在操作系统领域已经积累的几十年。从头做基本是不可能。国内现在做自研操作系统的,基本都是基于Linux,然后逐步实现的,毕竟这么好的开源资源,为啥不用,强如Google不都是基于Linux来做的嘛,苹果的IOS也是基于UNIX来做的。
国内目前也有几家企业在从事操作系统的开发,比如国汽智控打造的ICVOS,支持自主可控的主流芯片以硬件平台,支持L~L4及泊车等自动驾驶应用定制化开发。
华为的智能驾驶操作系统AOS,2020年,TV莱茵集团向华为AOS颁发了软件安全产品ISO 26262:2018 ASIL-D等级认证证书,认证内容包括AOS内核、服务中间件等关键组件,满足车载领域最高安全等级应用的开发需求。华为AOS内核是华为完全自主研发的实时运行环境,具有创新型的架构,可满足车控领域高性能,高安全,高可靠的要求。服务中间件遵循AUTOSAR Adaptive Platform R19-11标准开发,是国内首个符合AUTOSAR Adaptive标准的服务中间件软件产品。另外在智能座舱领域,也推出了基于Linux深度定制的鸿蒙OS,在华为与塞力斯合作打造的问界M5上鸿蒙座舱获得了一致的好评。
中间件的任务就是负责各类应用软件模块之间的通信以及对系统资源的调度。其中中间件绝大部分的功能是通信,因此通常我们说的中间件也就是通信中间件。
随着传感器的数量增加,数据来源增多,多元异构数据在芯片之间、各任务进程之间的高效、稳定传递需要引入通信中间件。通信中间件包括点到点、消息队列和发布/订阅三种工作模式。
点到点模式具有很强的时间和空间耦合性,使得通信灵活性受到很大限制;消息队列模式通过一个消息队列来传递消息,解决了通信双方时间和空间松耦合的问题,但不能实现消息消费者通信的异步,并且还存在服务器瓶颈和单点失效的问题,可靠性得不到保障;发布/订阅模型中,发布者和订阅者通过主题相关联,双方不必知道对方在何处,也不必同时在线,实现了通信双方在时间、空间和数据通信上的多维松耦合,并且能够减少网络负载,提高通信效率,也提高开发人员的工作效率。
现在常用的通信中间件SOME/IP与DDS都采用了发布/订阅模式,实现通信双方在时间、空间和数据通信上的多维松耦合。
SOME/IP的全称为:Scalable service-Oriented MiddlewarE over IP,是一种面向服务的传输协议。严格地说,SOME/IP不是一款特定的产品,而是一种技术标准。其最早由宝马在2011年开发,并在2013年集成进AUTOSAR 4.1中。其对内存需求较小,但仅提供一种用于选择UDP与TCP的“可靠性”QoS设置,其同时支持Adaptive AUTOSAR与Classic AUTOSAR。
开源版的SOME/IP则是由Genivi协会来维护的,由 C++ 编写,目前主要实现了 SOME/IP 的通信和服务发现功能,并在此基础上增加了少许的安全机制。
目前SOME/IP中间件提供商有AUTOSAR工具链厂商,包括Vector、ETAS、EB等国外公司,国内的也有包括普华基础软件,经纬恒润、东软等。
DDS全称为Data Distribution Service (数据分发服务),由对象管理组(OMG)发布和维护,是一个中间件协议和API标准,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。
其广泛应用于工业物联网领域,DDS对内存需求大,体量较大,需要人为地进行项目级的裁剪,在服务策略方面,DDS支持22种QoS策略,每种策略都可以应用在不同的角色上,而针对同一角色,可单独使用一种QoS,也可以组合使用多种QoS策略。
在2018年,DDS被首次引入Adaptive AUTOSAR,作为可选的通信中间件之一。018年3月,DDS的主要提供者RTI公司宣布,AUTOSAR AP的最新版本(版本18-03)已经具有DDS标准的完整网络绑定,但是目前还不支持Classical AUTOSAR。
此外ROS 2和Cyber RT的底层都使用了开源的DDS,将DDS作为最重要的通信机制。
全球范围内,DDS的最大供应商是RTI(Real-Time Innovations),它同时也是OMG组织董事会的成员,从2004年开始负责主持DDS工作组的工作,包括DDS标准的制定,目前已经成为这个行业的领导者,对DDS标准有足够的权威。其DDS产品为为RTI Connext DDS,占据绝大部分市场。
除此之外,还有一些开源的DDS,其也是根据OMG官方的DDS标准开发的,但源代码开放。
在自动驾驶领域比较有影响力的开源DDS是由RTI原核心团队成员在欧洲创办的eProsima公司推出的FastDDS。在eProsima将FastDDS的源代码开放出来后,用户可以直接在github上免费下载。但FastDDS使用起来比较麻烦,这个时候,用户就需要通过向eProsima支付费用来取得支持。
OpenDDS 由位于圣路易斯和凤凰城的的Object Computing的 ACE/TAO 团队开发,它和FastDDS具有一定的相似性——两者都是基于RTPS实现的,面向数据的通信框架,遵循的是同一标准。这类框架的典型特征是去中心化,支持QoS机制,支持实时通信。通常会绑定如protobuf等序列化工具。
在许多情况下,FastDDS 、OpenDDS可以跟RTI的Connnext DDS互操作/通信。当然,具体还得看场景。比如开源DDS支持的的QoS有 23个,大家都用这23个QOS交互,那就能互操作;如果Connext用的是超出这23个自定义范围的QoS,那么开源DDS就解析不了。此外,如果用的是OMG没开源的DDS工具,那也没法互操作。
目前来看SOME/IP相较于DDS在汽车领域,有先发优势。DDS虽然功能完善,而且在其他领域具有广泛的应用,但是在汽车行业,车规是最重要的。另外SOME/IP是直接针对汽车场景设计的,而DDS应用在汽车场景需要进行剪裁和适配,这里相较于SOME/IP,工作量又多了很多。最重要的一点是,由于现在大部分车载控制器的开发都是基于AUTOSAR来做的,目前SOME/IP同时支持AP和CP,而DDS目前还只能在AP上运行。
SOME/IP和DDS中间件除了上述提到的AUTOSAR工具厂商和RTI及开源可以提供外,国内还有一些企业也提供相关的产品,比如百度Apollo提供的Cyber RT,它在Apollo 3.5中正式加入。Cyber RT和ROS2很像, 其底层也是使用了一个开源版本的DDS。
另外华玉通软(Greenstone)成立于2020年,专注于基础软件的研发和创新,为智能汽车和智能驾驶提供完全自主可控的操作系统、高度可扩展的基础软件平台和定制化解决方案。去年发布了国内首个基于DDS标准完全自主研发的通信中间件—— “雨燕”通信中间件,“雨燕”通信中间件提供20多种QoS机制,为不同场景需求提供灵活的服务质量管理。在通信安全上,“雨燕”通信中间件提供身份认证、数据信息加密、敏感信息保护等多种安全保障,确保数据不会丢失、延滞,也不会被篡改或是窃取。
当前其可适配LiNUX、VxWorks、QNX、AUTOSAR CP、FreeRTOS等多种车载操作系统,并已成功部署在地平线‘征程’系列、赛灵思ZU5、英伟达Xavier、芯驰G9X以及英飞凌TC397等多个平台上,
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**