引言
作为一个技术的爱好者,搞算法,玩芯片,攒系统,并不只是工作,也是自己所追求的很重要的部分。写这个系列,是为了梳理这几年的所学、所思、所想,从而形成一个完整的知识体系,也供大家参考。这是一个横向跨度很大的新领域,大家都还在探索,水平有限,难免疏漏,不对之处请大家指正,也欢迎各领域的专家参与讨论。由于自身电子设计和机器视觉的背景,早期的项目经历,让我涉猎了各领域的技术,包括电子设计、嵌入式软件、互联网全栈、移动端 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选择操作系统的核心因素
3.4车载场景的操作系统选择
四 中央计算电子电气架构下的基础软件平台
4.1 问题描述
4.2 核心诉求
-
既然是软件平台,就应该不依赖于特定操作系统、芯片、车型,因此硬件抽象是最先该考虑的事情。 -
能动态改变聚合关系,就要求网络中的节点之间的连接关系是可以运行时更改的,同时每个节点应该具备高内聚、低耦合的特性。 -
需要满足车载环境高可靠性、实时、安全性。

-
智能电动汽车软件范畴 -
软件+硬件升级的基础 -
面向服务的软件架构设计
一、智能电动汽车软件范畴

动力与底盘控制器
车身控制器
中央计算单元
二、软件+硬件皆可升级的基础
-
还是卖硬件的老思维,一次性买卖,没有升级零部件的动力! -
喜欢搞各种花式车型,每个车型为了体现差异,还要改改硬件、比如多装一块屏,改改屏幕分辨率,竖屏改横屏,等等! -
底层车型电子电气架构还不统一,换一家厂商的零部件,信号就得重新适配! -
对智能化不重视,软件能力差,无能力架构跨平台的软件基础设施
三、面向服务的架构设计
-
服务内高内聚,功能完整,可复用 -
服务间低耦合,无依赖 -
服务通信接口标准化,不依赖于平台实现。

-
架构设计的挑战, 比如上面提到的服务的拆解、分类、分层,这类工作往往具有一定的灵活性,需要不断地去摸索和总结最佳实现。 -
功能安全的挑战,传统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 参考实现


-
其标准的推进事实上已经落后于行业应用。 -
在自动驾驶的发展方面,中美是主导,德国已经无法实现他在传统汽车领域的霸主地位。 -
开源软件,成就了人工智能、自动驾驶相关行业的繁荣,德系软件商这种设置高门槛,通过标准挣钱的做法,很难继续下去,一套基础软件收费超过千万,没实力的会选择开源,有实力的也会自己去开发,大家顶多借鉴一下其设计思想。
三、DDS 与 SOME/IP
-
数据序列化 -
服务发现 -
数据的发布订阅机制
结语
