软件究竟如何定义汽车3—SOA 基础软件框架与参考实现?


上一篇文章对智能汽车软件的范围、软硬件升级、soa的内涵进行了介绍,本篇将围绕 soa的实现细节。
重点阐述以下问题:soa 基础软件框架soa 参考实现soa 实现所需相关技术
一、soa 基础软件框架
上一篇中,介绍了面向服务的软件架构设计soa,但它只是一架构种设计思想,本身并不是一个软件模块。工程中需要一个基础软件框架去实现其架构设计思想,下图中的 soa framework 就是我所说的基础软件框架。
上图中所表示的就是一个典型的中央计算电子电气架构,几十个 ecu 的功能,集中到少数计算单元上,大部分 ecu 消失了,但是由于底盘域的特殊性,依然保留了部分 ecu 的功能。几大控制器,选用的都是高性能的 soc(画3个只是示意),由于工作任务的不同,选用了不同的操作系统。soa framework 是这个分布式软硬件系统运行的关键,具有以下特点:它是一个操作系统中间件运行在不同的os 内核之上,可以跨平台。除了基于以太网,最好还能兼容传统 autosar需要为上层应用提供良好的开发接口。需要与多个 soc 上的 soa framework 进行分布式协同。
soa framework 架构.png
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 的差异。
实际实现过程中,还需要很多其他服务作为支撑,比如持久化、加解密等,以上架构图,只是为大家讲明原理。 在这个基础框架之上开发的服务,相互之间都是松耦合关系,通过我们上一篇中讲的,重新定义新的组合服务和流程服务,就能产生新的软件功能。不同芯片的差异会在操作系统层面屏蔽掉,而基础软件框架又屏蔽了操作系统的差异,在此架构下,即使更换新的 soc,软件上的改动也会很小,也为硬件可升级也提供了软件基础。
二、soa 参考实现
ros与adaptive autosar 都是遵循 soa 架构设计思想的一种操作系统中间件。为什么放在一起讲,是因为他们都有可能发展成为一种适用于车载环境的分布式通信与计算框架。
ros(robot operating system)主要目标是为机器人研究和开发提供代码复用的支持。是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。
ros 之前更多的用于学术研究,随着这几年人工智能和自动驾驶的发展,在很多自动驾驶的原型系统中都能够看到 ros 的身影,百度 apollo 最初也是使用了 ros。在发展过程中,ros原先架构设计上的缺陷也慢慢暴露出来,为了解决这些问题,2017年,采用新架构的 ros2 问世。
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 与 some/ip
dds(data distribution service) 与some/ip(scalable service-oriented middleware over ip),都是基于tcp/ip 实现的一种应用层通信协议,主要实现以下功能:数据序列化服务发现数据的发布订阅机制
dds 主要用于工业互联网、军工等领域,车载领域也有一些使用,比如 nvidia 的 drive av 平台,底层通信就是基于 dds,也是 ros2的底层通信协议。some/ip是随着 autosar 发展起来的,目前已经被纳入进了 autosar 的标准当中,是 adaptive autosar 的底层通信协议。dds 与 some/ip两者功能大同小异,some/ip 与 autosar 生态兼容良好,但是 dds 功能更强大,比如能够实现 qos(quality of service,服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的)。
在can总线中,通信过程是面向信号的,发送方周期性的发布信息,而不考虑接收者是否有需求。dds与 some/ip则不同,收发双方是一种订阅/发布机制,它是在接收方有需求的时候才发送,优点在于总线上不会出现不必要的数据,从而降低负载。
dds 与 some/ip的实现,是以以太网为基础的,为什么要用车载以太网,除了大家都知道的传输带宽问题,其实从软件的角度来讲,以太网最大的好处,在于它的网络模型层次比can要全,能够在此基础上定义比较复杂的应用层协议。
结语
本篇主要对soa 软件框架进行了介绍,对常见的技术概念,车载以太网、some/ip、dds、adaptive autosar、ros2 等,梳理各自所处的技术层次与要解决的问题,阐述其与soa的关系,下一篇主要聊聊一些非技术性的问题,比如行业现状,落地中实际会碰到的困难等。