完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
引言
作为一个技术的爱好者,搞算法,玩芯片,攒系统,并不只是工作,也是自己所追求的很重要的部分。写这个系列,是为了梳理这几年的所学、所思、所想,从而形成一个完整的知识体系,也供大家参考。这是一个横向跨度很大的新领域,大家都还在探索,水平有限,难免疏漏,不对之处请大家指正,也欢迎各领域的专家参与讨论。第一篇 一、互联网与传统汽车人的碰撞 在这个领域探索了几年,一个感悟就是,百年汽车工业,任何人也不要妄谈颠覆,但是也绝对不能拒绝进化。汽车界一直都有所谓的“传统派”与“互联网派”之间的话题争论。传统派与互联网派都有自己的优点,但却是有明确的领域限制的,比如互联网所倡导的以用户为中心,持续打磨产品和服务的设计理念,对于传统汽车行业的确有非常大的帮助。但是对于过程中所惯用的敏捷开发,快速迭代,却并不能完全套用,至少是有一定前提的。敏捷开发的前提有两个,标准化的基础设施的支持,并且需要有良好的架构设计。 互联网领域,部署代码的主要有,电脑端、移动端、服务端。每个端操作系统、应用开发框架、开发工具都非常标准,但如果是一辆传统架构的汽车,有几十上百个 ECU,而且还来自于不同的供应商,系统集成的复杂度不是线性而是指数级别的增加,不得不有一套严苛的流程去规范整个开发流程。 二、从电子电气架构的演进看软件开发分工的变化 电子电气架构EEA(Electrical/Electronic Architecture),最先是由德尔福公司提出的。汽车作为一个复杂的电子系统,按照传统定义,可以划分为车身、底盘、动力、信息娱乐、辅助驾驶等几大子系统;每个子系统又由多个电控单元 (ECU)组成,这些ECU连接起来就形成了一个网络结构;EEA 的主要职责就是定义这些ECU之间的连接方式与网络拓扑结构。 电子电气架构.jpeg 2.1 传统的分布式的电子电气架构的问题
提到基础软件平台,很多人的第一反应就是要做一个操作系统,操作系统的确是非常关键的一个组件,但是打造一个基础软件平台绝对不是再造一个操作系统 3.1操作系统的定义 操作系统是一种管理计算机硬件与软件资源的计算机程序,大众所知道的其实都是很泛化的操作系统概念,常见的概念分为四个层次。
3.2内核分类 内核(kernel) 是操作系统最核心的部分,可以理解为操作系统的心脏,分为三种类型:
3.3选择操作系统的核心因素 业务类型: 如果业务有实时性要求,必然需要使用 RTOS,比如航天军工用的比较多的 VxWorks,车载用的比较多的 QNX。 芯片类型: 使用什么操作系统,往往取决于选择的芯片支持什么,没有芯片厂商的支持,一个操作系统走不远。嵌入式领域是ARM 的天下,处理器类型也决定了使用的操作系统类型,Cortex-A/M/R 用于应用处理器、低功耗、实时处理三个方面。 系统生态: 面向C 端用户的操作系统,应用生态决定了生死。面向行业的操作系统,比如汽车仪表、自动驾驶系统、网关,C 端用户是无法感知到底用了什么操作系统,开发者的态度决定了使用什么系统,没有人愿意在一个工具、库都支持不全的系统上开发软件。 3.4车载场景的操作系统选择 汽车上的绝大部分ECU 都是 AUTOSAR 的天下,有些就是简单的单片机,甚至都不用跑操作系统。剩下的需要操作系统主要是信息娱乐、自动驾驶、复杂网关、TBOX 等。 娱乐系统,其核心是多媒体和互联网应用,主要关注应用生态和开发者生态,国内大部分都是Android,少部分AliOS,特斯拉用linux,所以娱乐这块儿国内做的更好,但这并不是他的核心竞争力。由于生态的问题,针对车载的娱乐系统去开发一套操作系统,没有实际意义,以车的体量,也撑不起这样一个生态。这一块儿跟着消费电子走就行了,任何鼓吹系统底层能力的行为,都是隔靴搔痒,没有搞清楚重点。 自动驾驶,其核心是算法设计和数据积累,没有人会把算法的软件实现和操作系统绑死,其设计一定是跨平台的,有成熟稳定的 RTOS 即可,目前主流的有三种 RT-Linux、QNX、VxWorks。由于深度学习构建在开源软件的基础上,也需要生态,这也是linux 虽然不是硬实时系统,但依然在自动驾驶领域用的比较多的原因 。自动驾驶这块,倒是缺一个类似于 ROS 的能够跨平台的分布式开发框架 ,虽然ROS2进化许多,但是在低延时、功能安全、信息安全方面还有很多路要走,国外有家创业公司APEX.AI,正在基于ROS2分支,把它往车规级方向做。NVIDIA 构建了一整套的框架,做的非常不错,但是和自家芯片绑死,限制了其使用范围。 网关以及以后的大吞吐的以太网交换机,虽然算力要求也高,但是任务相对单一,架构也很简单,现有系统就能满足,也没必要去开发一个针对网关的操作系统。TBOX由于主芯片来源单一,目前基本是都是 Linux。 经过以上的分析,大家可以知道,目前根本就不是因为操作系统的短板限制了软件化的水平,车载架构的特殊性,决定了无法使用单一操作系统来实现所有功能,多个操作系统并存的局面还会持续很久。 四 中央计算电子电气架构下的基础软件平台 前面提到,新的电子电气架构是软件定义汽车的硬件基础,并不是有了新的电子电气架构就能够实现软件定义汽车,还需要有一个经过良好架构设计的基础软件平台。下面我们就来对这个问题进行重新定义 4.1 问题描述 在新的电子电气架构下,多个中央处理单元、多个传感器、执行器、交换机等,在以太网的连接下,组成了一个复杂的分布式系统 ,由于工作任务的不同,多个中央计算单元运行着不同的操作系统。 4.2 核心诉求 “软件定义汽车“,其核心内涵就是,能够通过软件的方式,动态改变上述系统当中网络节点之间的聚合关系,从而产生新的业务功能,因此对软件平台的要求如下:
这就是我想说的第二点,互联网的开发流程虽然不能直接套用在车上,但是其在软件工程领域的实践经验对于解决车载软件领域的问题还是很有帮助的。看起来是汽车电子软件开发的门槛高,其实是因为封闭和从业人员少。当前的机遇就是,大家都想往这个方向走,但是也都是摸着石头过河,可以有机会将这些理论经验用于实践。 前段时间梳理了一下,面向下一代智能汽车的关键技术,分为智能座舱、自动驾驶、与数字系统。今天讲的主要数字系统当中,我认为最重要的软件基础设施,基础软件平台,下一篇将重点阐述,面向服务的架构设计与车载软件相结合的一些思考, 以下思维导图仅供参考! next_EE.png 智能座舱 以产品设计为驱动力,但目前同质化现象比较严重,主要以硬件差异为基础,只能利用先发优势,无法形成技术与产品壁垒! 基于用户画像,使用AI技术,构建具有情景感知能力的引擎,是智能座舱产生质变的前提,但技术上短期无法突破(行业普遍问题,不是车行业特有)。 多设备协同、多模态融合交互,是消费电子IOT场景下大家探索的方向,对于车载环境有很强的借鉴意义。 自动驾驶 以算法与数据的积累为核心驱动力,可以在技术上形成壁垒,但是需要巨额的研发投入,能否快速落地主要受制于数字系统架构。短期来讲大家可能都差不多,但是积累到一定时间,后发玩家可能就再也追不上了。 数字系统 以架构设计与资源整合为核心驱动力,其包含了传统意义上的电子电气架构,但需要横向整合多个软硬件架构部门,才能定义完整的系统架构。是否采用新架构从根本上决定了,智能座舱与自动驾驶究竟能走多快走多远。 良好的数字系统架构,能够屏蔽底层车型平台的差异,多个车型共用一套基础软硬件平台,能够缩减开发资源,一套架构持续5年,可以留出充足的资源研发下一代。 第二篇 上一篇文章主要介绍了电子电气架构、车载操作系统、基础软件平台等之间的关系,以及软件定义汽车的基本概念,本篇将继续深入,重点阐述三个问题:
按照新能源汽车的特点以及中央计算电子电气架构的发展趋势,可以按照以下三个类别,对智能汽车软件进行分类:动力与底盘控制器、车身控制器、中央计算单元。 智能电动汽车软件分类.jpg 动力与底盘控制器 底盘类的功能,包括电子转向(EPS)、电子驻车(EPB)、车身稳定(ESP)、集成动态制动(IDB)等等,都是牢牢的掌握在了一线Tier手里,这部分软件都是和机械零部件绑定在一起的,在其整个生命周期内不会发生功能的改变(可能会重新标定新的参数),实现的是车辆运行最基本的、有最高功能安全等级要求的、微秒级时延的功能。所以即使是在集中式的电子电气架构下,未来很长一段时间,这部分功能都会以独立ECU的方式存在,遵守Classic AutoSAR标准进行开发。 在“动力与底盘”控制器中,整车厂唯一可以做并且非常有必要的是,提供一个底盘域的适配层,为中央计算单元提供标准的线控服务,这样以来,中央计算单元就不用单独和各个底盘ECU通信(不同车型可能使用了不同Tier1的产品),可以做到中央计算单元和车型平台解耦。 动力类包含了新能源三大核心技术,整车控制器(VCU)、电机控制器(MCU)和电池管理系统(BMS),其中VCU通过采集油门踏板、挡位、刹车踏板等信号来判断驾驶员的驾驶意图;通过监测车辆状态(车速、温度等)信息,向动力系统、动力电池系统发送车辆的运行状态控制指令。BMS负责估测动力电池组的荷电状态 SOC,即电池剩余电量,保证SOC维持在合理的范围内,同时监测电池充放电过程中的温度、电流、电压等,保持整组电池运行的可靠性和高效性。MCU系统根据数学模型,采集位置、电流信号,对IGBT进行通断控制,形成交变磁场,从而控制电机按目标进行运转。这三大部件对整车性能有着重要影响。越来越多的主机厂选择自己进行开发,也就有了往集成化方向发展的基础,可以逐步将功能迁移到“底盘与动力”控制器当中去。 车身控制器 传统也叫BCM,车身控制相关的功能包括,车门、车窗、天窗、雨刮、照明、空调、空气净化、无钥匙进入等等,整车厂对这部分具有很高的决定权,现存的绝大部分ECU上的功能都可以搬到车身控制器上去,按照开关、传感器、执行器的维度对原有ECU的功能进行分解,主机厂可以自己开发,也可以要求Tier1按照规范提供软件模块,由主机厂进行集成。 中央计算单元 中央计算单元的集成的三个重要模块分别是自动驾驶、智能座舱、通信单元。为什么把这三块放在一起,下一章会详细介绍,本节重点介绍其内容。 自动驾驶,软件上具体的要做的事情,上一篇有过介绍,其核心是算法和数据的积累,稍微有点实力的主机厂都不会放弃自主研发,因为一旦掉队,短时间追不上来,也将彻底沦为硬件的代工厂,这是一个需要长期高投入的领域,在这个领域当中,主机厂、算法商、Tier1等各自的分工,也都还在探索当中。传感器与芯片算力,是发展中的主要制约因素。 智能座舱,各个主机厂都在做,其技术和生态是消费电子在车场景的延展,一般会选择一家互联网公司合作,其核心还是围绕了人机交互展开,探索人与设备之间的关系,目前最主要的两大交互方式就是触屏+语音,对整车硬件的智能化的水平有很高的要求,但是车载硬件算力的滞后特性,导致功能体验不如消费电子。 通信单元,也叫TBOX,是车与外界联系的枢纽,目前主要实现的功能,如远程车控、远程诊断、整车OTA、国地标数据采集等等,与车的联系非常紧密,主机厂一般都会自己开发上面的应用软件。其发展和通信标准的强相关,比如4G到5G的切换,未来技术上影响较大的因素是V2X,其发展会改变目前的软硬件架构。 二、软件+硬件皆可升级的基础 软件OTA的能力,各家主机厂目前都已经具备了,相比于传统的汽车,软件OTA在一定周期上给汽车注入了新的活力,但依然会碰到算力的天花板。汽车的机械零部件,出厂之后,其功能整个生命周期都不会发生变化,但是中央计算单元,其发展始终跟随最新的ICT技术,在车的生命周期当中,算法、芯片、通信标准等会不断的更迭换代,车的生命周期都在5年以上,但相关的ICT技术,基本2年就会有一个大变样。用户不可能像换手机去一样去换汽车,既然不能换车,为什么不能让用户可以升级中央计算单元呢?升级中央计算单元硬件,特斯拉已经在这么做了!为什么传统主机厂以前在这方面不作为呢?
不仅要在用户看得到的功能上下功夫,还要在软件的工程能力上下功夫,重视架构设计,否则一旦历史的包袱积累到一定程度,连重构的勇气都会丧失!作为中国高科技公司的代表,连任正非都喊出了华为要加大投入,提高软件能力的口号! 如何能够做到中央计算单元的软硬皆可升级,才是真正考验软硬件架构能力的课题,特斯拉已经开了个好头,就看接下来追上去的是谁。 动力与底盘控制器、车身控制器,其核心软硬件设计目标,是要为中央计算单元提供良好的服务接口,让中央计算单元既能够灵活调用,同时也保持松耦合关系,终极目标是实现软硬件皆可升级。 三、面向服务的架构设计 在传统的离散架构下,车内的ECU通过总线相互通信,但是它们之间的信号收发关系和路由信息都是静态的,是在编译阶段写死的。各个ECU会周期性的发出各种信号,如果需要在另外一个子网当中使用,还需要网关进行转发,出于负载的考虑,网关通常不会把所有信号都转发,如果预先定义功能中,不包含某个信号,而后续又要使用,除了修改业务所在单元之外,还需要对网关的配置进行修改。 如果车辆上市后,想在某个控制器上新增功能,可以通过OTA更新该控制器的软件,但是这个功能需要的其他控制器的信号怎么解决呢?当然,也可以把所依赖的控制器都OTA一遍,但这个工作量与同时OTA的控制器的数量是指数关系,新架构上升级一个控制器,一个月就能解决的事情,在老的架构上可能需要一年。 面向服务的架构(Service-Oriented Architecture,SOA),是一种架构设计思想,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。SOA在互联网IT中有很多应用案例,和微服务的架构有相似的地方,具体可以参考SOA和微服务架构的区别。 简单来说,SOA就是要求各个控制器,把自己的能力,以服务的方式提供出来,以此来构建一个与车型、芯片、操作系统无关的灵活可变的平台系统。
面向服务的架构设计举例.png 上面这张图,软件上的分层看起好像和传统软件的架构也没太大区别,其实这里面最关键还是服务间的连接关系,其核心是需要SOA框架软件的实现一套服务管理的框架,类似与IT领域所说的 UDDI(Universal DescriptionDiscovery and Integration,统一描述、发现和集成),提供服务发布、查找和定位的方法。在这个框架下,服务节点可以动态加入,并且按照统一标准实现的所有服务都是对等的,服务之间可以动态的建立订阅/发布的关系,且相互之间以一种中立的服务描述语言为契约,是一种松耦合的关系。 服务可以分为三类,原子服务、组合服务、流程服务,原子服务提供的是最基本的功能,比如获取传感器的数据、升降车窗指令;组合服务是利用多个原子服务,实现了部分判断逻辑,比如升降车窗并不是任何条件下都能执行,还需其他条件去综合判断;流程服务,是根据业务功能定义的服务,比如产品上定义一个抽烟模式,需要同时打开车窗、天窗,并播放车主收藏的音乐,这就需要调用多个组合服务去实现。 原子服务,一般和硬件功能有关,硬件功能决定了原子服务的范围;组合服务,可以认为和某种策略和控制逻辑相关,比如实现一种新的驾驶模式;流程服务,可以认为是和特定场景下的产品功能。在SOA的软件框架下,“软件定义汽车”就变成了,在一个完备的原子服务集合当中,通过定义新的组合服务与流程服务,去实现新的产品功能。而在硬件可升级的前提下,又可以通过硬件升级,去拓展原子服务的功能范围。比如,换了带V2X的中央计算单元,就可以新增V2X相关的原子服务,然后定义一个新的流程服务,如,基于V2X的紧急刹车。 当然新的架构,也一定会带来新的挑战:
本篇主要对智能汽车软件的范围、软硬件升级、SOA的内涵进行了介绍,下一篇将重点介绍,SOA实现的基础;对常见的技术概念,车载以太网、SOME/IP、DDS、Adaptive AutoSAR、ROS2 等,梳理各自所处的技术层次与要解决的问题,阐述其与SOA的关系。 第三篇 上一篇文章对智能汽车软件的范围、软硬件升级、SOA的内涵进行了介绍,本篇将围绕 SOA的实现细节,重点阐述以下问题:
上一篇中,介绍了面向服务的软件架构设计SOA,但它只是一架构种设计思想,本身并不是一个软件模块。工程中需要一个基础软件框架去实现其架构设计思想,下图中的 SOA Framework 就是我所说的基础软件框架。 SOA Framework.png 上图中所表示的就是一个典型的中央计算电子电气架构,几十个 ECU 的功能,集中到少数计算单元上,大部分 ECU 消失了,但是由于底盘域的特殊性,依然保留了部分 ECU 的功能。几大控制器,选用的都是高性能的 SOC(画3个只是示意),由于工作任务的不同,选用了不同的操作系统。SOA Framework 是这个分布式软硬件系统运行的关键,具有以下特点:
SOA Framework 架构.png SOA Framework 整体架构如上图所示,其主要功能如下:
二、SOA 参考实现 ROS与Adaptive AutoSAR 都是遵循 SOA 架构设计思想的一种操作系统中间件。为什么放在一起讲,是因为他们都有可能发展成为一种适用于车载环境的分布式通信与计算框架。 ROS(Robot Operating System)主要目标是为机器人研究和开发提供代码复用的支持。是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。 ROS 之前更多的用于学术研究,随着这几年人工智能和自动驾驶的发展,在很多自动驾驶的原型系统中都能够看到 ROS 的身影,百度 Apollo 最初也是使用了 ROS。在发展过程中,ROS原先架构设计上的缺陷也慢慢暴露出来,为了解决这些问题,2017年,采用新架构的 ROS2 问世。 ros2.jpg ROS2 最大的改变是,取消Master中央节点,实现节点的分布式发现,发布/订阅,请求/响应通;底层基于DDS通信机制,支持多操作系统,包括Linux、windows、Mac、RTOS。要把 ROS2改造的完全适合车载,还有不少工作要做,之前提到的 APEX.AI公司,就是在做这个事情。 Classic AutoSAR 是开发 ECU 的主要标准 ,相关的介绍网上很多,就不多做介绍,Adaptive AutoSAR 2017年才发布第一个release 草案,主要用于高性能 SOC,运行在兼容 POSIX的操作系统之上,其也运用了 SOA 的架构设计思想。 adaptive autosar.png 从Adaptive AutoSAR 和 ROS 当中,能够看到德系与美系架构设计思想之间鲜明的差别。我的第一感受是,美系架构设计更加简洁、灵活,追求开源。而德国人喜欢把简单的问题复杂化,喜欢过度设计,搞很深的抽象层次,喜欢搞代码生成,喜欢强绑定 IDE,这可能与他们工程师思维的严谨性有关系,总之搞得看起来门槛特别高,相关的公司还可以卖标准,卖工具,赚的盆满钵满。 传统 ECU 开发中,Classic AutoSAR 依然会占主导地位, 德系公司是毫无疑问的主导者,但是我个人并不看好 Adaptive AutoSAR 的发展,主要有以下几点:
DDS(Data Distribution Service) 与SOME/IP(Scalable service-Oriented MiddlewarE over IP),都是基于TCP/IP 实现的一种应用层通信协议,主要实现以下功能:
在CAN总线中,通信过程是面向信号的,发送方周期性的发布信息,而不考虑接收者是否有需求。DDS与 SOME/IP则不同,收发双方是一种订阅/发布机制,它是在接收方有需求的时候才发送,优点在于总线上不会出现不必要的数据,从而降低负载。 DDS 与 SOME/IP的实现,是以以太网为基础的,为什么要用车载以太网,除了大家都知道的传输带宽问题,其实从软件的角度来讲,以太网最大的好处,在于它的网络模型层次比CAN要全,能够在此基础上定义比较复杂的应用层协议。 结语 本篇主要对SOA 软件框架进行了介绍,对常见的技术概念,车载以太网、SOME/IP、DDS、Adaptive AutoSAR、ROS2 等,梳理各自所处的技术层次与要解决的问题,阐述其与SOA的关系,下一篇主要聊聊一些非技术性的问题,比如行业现状,落地中实际会碰到的困难等。 |
||
|
||
只有小组成员才能发言,加入小组>>
4484个成员聚集在这个小组
加入小组3327 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4260 浏览 1 评论
4287 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 11:34 , Processed in 0.470574 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号