其他
软件定义汽车(1-3合集)
The following article is from 智车科技 Author leo_huang
引言
作为一个技术的爱好者,搞算法,玩芯片,攒系统,并不只是工作,也是自己所追求的很重要的部分。写这个系列,是为了梳理这几年的所学、所思、所想,从而形成一个完整的知识体系,也供大家参考。这是一个横向跨度很大的新领域,大家都还在探索,水平有限,难免疏漏,不对之处请大家指正,也欢迎各领域的专家参与讨论。
由于自身电子设计和机器视觉的背景,早期的项目经历,让我涉猎了各领域的技术,包括电子设计、嵌入式软件、互联网全栈、移动端 app、操作系统、渲染引擎、内核驱动、工业控制现场总线等,每一个部分都不敢说有多么精通,但都经历过实际的项目。对车这个领域,并不是专业出身,之前了解并不多,但为了能理解一帮传统汽车人在想什么,也是恶补了博世系列的十几本关于车辆工程、汽车电子、电子电气架构、动力系统等方面的书。多领域的涉猎也给这个系列的主题,提供了不同的视角。
第一篇
一、互联网与传统汽车人的碰撞
二、从电子电气架构的演进看软件开发分工的变化
2.1 传统的分布式的电子电气架构的问题
网络结构复杂,形成信息孤岛,中央网关会是性能瓶颈 ECU冗余,算力浪费,且无法形成协同 ECU 由不同的供应商开发,框架无法复用,无法统一 OTA 外部开发者无法对 ECU 进行编程,无法由软件定义新的功能 无法进行硬件升级
2.2 不同架构主机厂扮演的角色
基于传统分布式架构,主机厂只是架构的定义者,核心功能是由各个 ECU 完成,其软件开发工作主要是由 Tier1完成,主机厂只做集成的工作,这也是为什么大部分传统主机厂基本没有软件开发能力的根本原因,就靠 DRE搞定供应商就能集成一辆车,为什么还要花大量的成本养一个庞大的软件团队。 基于域控制器架构,属于过渡形态,DCU 减轻了中央网关的压力,也可以实现部分业务逻辑,但大部分业务还是由各 ECU 实现,主机厂可能会参与部分 DCU 的开发,但与 Tier1的整体分工无太大变化。 基于中央计算的架构,此时大部分 ECU 消失,各种传感器与执行器,被中央计算单元所支配,原本属于 Tier1的大部分策略层面的软件需要由主机厂去主导,需要一只专业的软件团队,或者定义某种规范,让 Tier1实现,最后以软件模块的方式集成进来,这需要一只高水平的软件架构团队。
2.3基于中央计算电子电气架构的优点
算力集中到为少数几个中央单元,可以留有冗余便于后续软件功能升级 经过良好的平台化设计之后,硬件单元也可以升级,如特斯拉的 AP 该架构是软件定义汽车的硬件基础,并不是有了新的电子电气架构就能够实现软件定义汽车,这还只是万里长征第一步,还需要有一个经过良好架构设计的基础软件平台。
三、车载环境下的操作系统
3.1操作系统的定义
3.2内核分类
3.3选择操作系统的核心因素
如果业务有实时性要求,必然需要使用 RTOS,比如航天军工用的比较多的 VxWorks,车载用的比较多的 QNX。
芯片类型:
使用什么操作系统,往往取决于选择的芯片支持什么,没有芯片厂商的支持,一个操作系统走不远。嵌入式领域是ARM 的天下,处理器类型也决定了使用的操作系统类型,Cortex-A/M/R 用于应用处理器、低功耗、实时处理三个方面。
系统生态:
面向C 端用户的操作系统,应用生态决定了生死。面向行业的操作系统,比如汽车仪表、自动驾驶系统、网关,C 端用户是无法感知到底用了什么操作系统,开发者的态度决定了使用什么系统,没有人愿意在一个工具、库都支持不全的系统上开发软件。
3.4车载场景的操作系统选择
四 中央计算电子电气架构下的基础软件平台
4.1 问题描述
4.2 核心诉求
既然是软件平台,就应该不依赖于特定操作系统、芯片、车型,因此硬件抽象是最先该考虑的事情。 能动态改变聚合关系,就要求网络中的节点之间的连接关系是可以运行时更改的,同时每个节点应该具备高内聚、低耦合的特性。 需要满足车载环境高可靠性、实时、安全性。
这就是我想说的第二点,互联网的开发流程虽然不能直接套用在车上,但是其在软件工程领域的实践经验对于解决车载软件领域的问题还是很有帮助的。看起来是汽车电子软件开发的门槛高,其实是因为封闭和从业人员少。当前的机遇就是,大家都想往这个方向走,但是也都是摸着石头过河,可以有机会将这些理论经验用于实践。
以产品设计为驱动力,但目前同质化现象比较严重,主要以硬件差异为基础,只能利用先发优势,无法形成技术与产品壁垒!
基于用户画像,使用AI技术,构建具有情景感知能力的引擎,是智能座舱产生质变的前提,但技术上短期无法突破(行业普遍问题,不是车行业特有)。
多设备协同、多模态融合交互,是消费电子IOT场景下大家探索的方向,对于车载环境有很强的借鉴意义。
以算法与数据的积累为核心驱动力,可以在技术上形成壁垒,但是需要巨额的研发投入,能否快速落地主要受制于数字系统架构。短期来讲大家可能都差不多,但是积累到一定时间,后发玩家可能就再也追不上了。
以架构设计与资源整合为核心驱动力,其包含了传统意义上的电子电气架构,但需要横向整合多个软硬件架构部门,才能定义完整的系统架构。是否采用新架构从根本上决定了,智能座舱与自动驾驶究竟能走多快走多远。
智能电动汽车软件范畴 软件+硬件升级的基础 面向服务的软件架构设计
一、智能电动汽车软件范畴
动力与底盘控制器
车身控制器
中央计算单元
二、软件+硬件皆可升级的基础
还是卖硬件的老思维,一次性买卖,没有升级零部件的动力! 喜欢搞各种花式车型,每个车型为了体现差异,还要改改硬件、比如多装一块屏,改改屏幕分辨率,竖屏改横屏,等等! 底层车型电子电气架构还不统一,换一家厂商的零部件,信号就得重新适配! 对智能化不重视,软件能力差,无能力架构跨平台的软件基础设施
三、面向服务的架构设计
服务内高内聚,功能完整,可复用 服务间低耦合,无依赖 服务通信接口标准化,不依赖于平台实现。
架构设计的挑战, 比如上面提到的服务的拆解、分类、分层,这类工作往往具有一定的灵活性,需要不断地去摸索和总结最佳实现。 功能安全的挑战,传统AutoSAR,功能静态部署,可以对每个分支流程,做危害分析,而SOA功能可以动态部署,无法预先做到每个场景都覆盖到。 信息安全的挑战,传统的离散系统,造成信息孤岛的同时,也无形之中构建了一道物理防火墙,现在服务都变成了对等节点,就需要一套完整的权限控制解决方案。
结语
SOA 基础软件框架 SOA 参考实现 SOA 实现所需相关技术
一、SOA 基础软件框架
它是一个操作系统中间件 运行在不同的OS 内核之上,可以跨平台。 除了基于以太网,最好还能兼容传统 AutoSAR 需要为上层应用提供良好的开发接口。 需要与多个 SOC 上的 SOA Framework 进行分布式协同。
本地服务、远程服务(运行在另外一个 SOC 上的服务),相互之间以统一的接口描述语言IDL为契约。IDL 是一种中立的语言,与 OS 以及开发语言无关。 通过Service Development Framework,为开发者提供服务开发的基本框架。 Service Manager 管理本地服务,并负责与远端的 Service Manager 进行同步。 Policy Manager 负责控制各个服务间的访问权限。 Network Manager 负责网络通信管理,有可能会使用不同的通信协议。 Startup Manager 定义服务间的依赖关系与启动顺序。 Update Manager 负责服务的更新与升级。 OS Abstraction Layer 负责抽象各个 OS 的差异。
实际实现过程中,还需要很多其他服务作为支撑,比如持久化、加解密等,以上架构图,只是为大家讲明原理。
二、SOA 参考实现
从Adaptive AutoSAR 和 ROS 当中,能够看到德系与美系架构设计思想之间鲜明的差别。我的第一感受是,美系架构设计更加简洁、灵活,追求开源。而德国人喜欢把简单的问题复杂化,喜欢过度设计,搞很深的抽象层次,喜欢搞代码生成,喜欢强绑定 IDE,这可能与他们工程师思维的严谨性有关系,总之搞得看起来门槛特别高,相关的公司还可以卖标准,卖工具,赚的盆满钵满。
其标准的推进事实上已经落后于行业应用。 在自动驾驶的发展方面,中美是主导,德国已经无法实现他在传统汽车领域的霸主地位。 开源软件,成就了人工智能、自动驾驶相关行业的繁荣,德系软件商这种设置高门槛,通过标准挣钱的做法,很难继续下去,一套基础软件收费超过千万,没实力的会选择开源,有实力的也会自己去开发,大家顶多借鉴一下其设计思想。
三、DDS 与 SOME/IP
数据序列化 服务发现 数据的发布订阅机制
结语
作者:
链接:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。