概述
汽车领域不断丰富的需求鼓励着技术创新和进步, 在未来的智能汽车中,汽车电子及软件的功能特性将大幅度增长,当前的分布式电子电气架构不再满足未来智能网联汽车的需求,将出现域控制器用于集成特定领域的功能特性(如车辆运动域、车身域等),形成域集中或跨域集中式电子电气架构。最终可能向基于中央计算机的车辆集中式电子电气架构,甚至车-云协同控制发展。
图1 电子电气架构的发展之路
面向服务的软件架构(Service-Oriented Architecture)正为未来的车辆软件服务提供良好的解决方案。不同于传统汽车电子电气架构中面向信号的架构,面向服务的软件架构(SOA)通过标准化的服务接口,松耦合的服务机制以及可组合扩展的服务特性,结合未来以高性能计算平台——域控制器——为核心的集中化电子电气架构,将成为未来汽车领域“软件驱动创新”的技术基础。
以太网驱动着未来汽车的主要创新。之所以这么说,有两个主要原因,一是以太网拥有极高的可用带宽、极广的功能范围,二是该网络技术具有极强的灵活性。与此同时,以太网使得将面向服务的架构引入到汽车电子电气系统中这个工作变得容易很多。
面向服务的架构(SOA)
为了更好地理解SOA在域控制器中的应用,我们先来了解一下到底什么是SOA。
1. 服务(Service): 在IT相关的领域里,我们可以简单理解为“实现某种功能的函数或方法”。
2. 服务接口(Service Interface):一个能够被其他模块调用的函数名称,或者一个封装的API,这些就是接口。
3. SOME/IP:Scalable service-Oriented Middleware over IP,即运行于IP之上的可伸缩的面向服务的中间件。
Middleware中间件是一种独立的系统软件或服务程序,分布式应用软件可借助Middleware在不同的技术之间共享资源。(分布式应用软件,在这里指的就是“服务”;不同的技术之间,在这里指的就是“不同的平台或操作系统,比如Linux系统或AUTOSAR系统等。)
IP是Internet Protocol,指的是TCP/IP的通信方式。
Scalable可伸缩,指的是该中间件能够适配于不同的平台及操作系统,其支撑的平台可大可小。
综合来看,SOME/IP就是指能够在不同平台上应用的,位于TCP/IP协议之上的,用于支持分布式应用软件,帮助分布式应用软件来传递信息的这么一套机制。说白了,就是把服务接口里的内容通过这种标准化的方式打包,然后交给TCP/IP这个快递员。
4. SOA
SOA=Service-Oriented Architecture,即面向服务的架构,是一种软件架构设计的模型和方法论。在汽车行业可以理解为,SOA是面向各种应用层程序(即“服务”,包含各种控制算法、显示功能等应用程序)进行设计,且不依赖于通信方式的一种架构设计理念。在架构设计工作中,重点关注汽车上的某些功能(“服务”)应该如何实现,该功能实现时与外界的各种信息交互(“服务接口”),该功能与外界交互时的基本流程(“服务序列”)。
5. SOA与SOME/IP的关系
SOA设计内容中的接口部分,需要通过SOME/IP进行打包传输。SOA是软件架构的一种设计理念;SOME/IP是一种将软件接口进行打包的打包方式,是一种中间件。
6. SOA与以太网的关系
汽车行业通常所指的“以太网”是泛化之后的概念,涵盖了基于以太网技术所实现的各种相关技术手段,包括TCP/IP协议、DoIP协议、SOME/IP协议等。
SOA与以太网之间的关系,是指采用SOA理念所设计的软件架构,在与外界交互时,其接口可以通过“以太网”的通信方式进行传输,而基于SOME/IP中间件的方式则是一个最典型的应用方式。
7. SOA与AUTOSAR
当前车辆软件的开发,大多数基本上都是基于AUTOSAR架构开发。AUTOSAR架构将运行在Microcontroller之上的ECU软件分为:Application、RTE、BSW三层。AUTOSAR架构下开发的软件有一个特点是,是一种面向信号的架构。就是,一个模块会不停的在总线上,周期性的发送信号给另一个控制器。但是SOA是面向服务的架构。
图2 面向信号的架构
图3 面向服务的架构
面向信号的架构:静态,仅支持接收/发送模式,支持简单的数据类型,可扩展性差;
面向服务的架构:动态,支持请求/响应模式,支持复杂的数据类型,可扩展性强。
SOA软件开发方法
对于汽车行业而言,SOA是一套新引入的技术,需要一套有效的流程、方法和工具。用以解决如下三个问题:1) 如何分析和设计服务架构,2) 如何建模和记录服务架构,3)如何部署和实现面向服务的软件。
1. “分析和设计服务架构”的过程是从客户需求到SOA软件架构产出的分析过程,相对于传统汽车软件开发采用的基于功能分解的面向过程分析方法,“用例驱动的开发方法”和“面向服务架构的设计方法”是SOA软件架构开发的两个主要特点。
2. 标准化的建模语言和统一化的文档结构,对提升架构的开发质量、实现架构内容的有效传递具有重要作用。SysML语言和Arc42模板可以作为SOA软件架构的标准语言和文档结构模板。
3. “部署和实现面向服务架构的软件”的过程是以SOA软件架构为设计输入,最终开发实现出软件产品的工作过程。主要包括 1)对服务接口行为的开发和实现,完成服务接口与服务主体逻辑的绑定;2) 针对目标运行环境,完成对服务接口参数,服务主体运行参数的配置;3)服务接口与应用程序策略逻辑的集成编译。
AUTOSAR Adaptive 组件封装了SOA软件底层的通讯细节(包括SOME/IP协议,IPC等),同时提供代理(Proxy)-骨架(Skeleton)模型,该模型以C++面向对象语言描述,方便上层应用开发人员调用标准服务接口(API)进行开发。Application Design Model是该模型另一种可配置的呈现,开发人员通过使用相应的配置工具对Application Design Model进行描述和配置,即可实现基于SOA服务架构的软件落地和部署。联合电子使用AUTOSAR Adaptive组件完成SOA服务架构软件的开发。
SOA和域控制器
根据SOA软件开发方法,可从两个切入点开展SOA汽车软件平台的开发。
1)自下至上,从车辆基础功能/信号出发,将已有的应用功能逻辑/信号(eg:车辆车速信息)抽象或封装成服务组件,这类组件被称为基础服务层(Basic/Platform Service Layer)组件,具有最高的可复用性和可组合性,这些组件将为上层(业务服务层Business Service Layer)的服务组件提供最基础的支持。 2)自上而下,从整车业务逻辑和用例出发,结合各领域的核心业务知识,设计业务服务层(Business Service Layer)的服务组件;同时,遵循服务组件的复用性和自主性等原则,向下设计规划基础服务层(Basic/Platform Service Layer)的服务组件。
域控制器可采用面向服务的软件架构(SOA),提供基于IT技术的、标准化的、开放式的软件创新和集成平台。这里提供一种方法。软件架构的底层符合POSIX(Portable Operating System Interface of UNIX,可移植操作系统接口)标准的操作系统(如QNX、INTEGRITY、Linux);中间层符合AUTOSAR Adaptive标准的运行环境,中间层封装了操作系统,为应用软件提供了标准的运行环境;最上层是应用软件,这里的应用软件与传统车载嵌入式软件是不同的,他们是以APP的形式存在的。
图4 域控制器SOA服务架构
作者:谷子