如果说只提供了标准和方法,那这个标准指的是什么?接口和协议吗?方法又指的是什么?是开发工具吗?
还是说AP其实也提供了一部分系统软件和中间件?那为什么很多企业又说自己基于AP开发了相关协议栈和中间件呢?那AP又提供了哪些中间件呢?
AP最重要的是给产业链带来了标准化。这个标准化包含应用接口标准化和AP平台本身标准化。
对于AP平台使用方(OEM,Tier-1)来讲:
1, 开发应用可以标准化,允许应用快速移植到不同的AP平台,减少重复开发。
2, 因为AP标准对平台本身有要求,安全要求,架构要求等等,那么平台使用方在采购时不用重复在RFQ里定制需求,可以直接引用标准里的要求。
对于比如在自动驾驶领域,拥有核心算法公司只需要将算法做成AP应用,提供给Tier-1/OEM做集成就可以。
你指的方法,我们一般称为Methodology。这里只是用来给系统建模,做最后的集成。建模工具链由AP平台供应商提供。
AP标准里定义了所有系统中间件,面向应用的接口。哪些中间件你可以参考autosar主页AP部分。都可以免费下载。网上也有很多对标准的中文翻译。AP标准每年更新2次。
跟CP不同的是,AP不会标准化系统中间件之间的交互。那么,哪个公司号称自己开发了一部分AP中间件,应该是不可信的。因为,
1, AP平台供应商不会开发中间件之间的内部接口, 自己开发的AP中间件甚至无法和AP平台供应商的中间件集成。
2, 即使能够集成,那针对不同的AP供应商,自己开发的中间件需要重新适配。效率太低。
我认为使用AP只有下列几种情况:
1, 使用一个AP供应商的工具链和AP平台,包括所有系统中间件。
2, (也是我们做过的项目)采用了一部分AP中间件,比如ara::com (通讯管理)和Execution Manager( EM,进程管理)。其他部分没有使用AP组件。
传统的E/E架构示意图如下:
它的特点是:没有域控,没有中央处理器,没有高性能处理器节点
它的缺点是:节点无预留资源供新增功能使用或消耗
关于硬件
- 在智能网联汽车发展的过程中,肯定要处理视频、地图等大数据,那么我们传统的微控制器MCU的算力是否够用呢?
- 不够用的话,是不是要用上高性能的处理器CPU?接着是不是要考虑用CPU去开发域控制器,为我们新增的功能预留一些资源。
- 虚拟硬件开发要不要考虑一下呢?这样可以降低我们的一些开发成本。
关于OS
- 在使用高性能处理器的时候,经典AUTOSAR中的OS是否还能适配呢?
- 要不要用POSIX OS?Linux的话是符合的,但它是开源的,通信安全怎么保证?诊断怎么去做?
- 要不要使用ASIL-D的操作系统?在对安全要求特别高的汽车上,我们是不是要考虑使用有经过功能安全认证的OS?比如MCOS、QNX等等。
关于SOA
对SOA不太熟悉的话可参考上一期视频:
02 自动驾驶 & 域控中间件——AP AUTOSAR & SOA
- 要不要基于SOA开发?不用的话,增加一个节点的时候,你要更改什么——更改路由表吗?增加一个功能的时候,你要更改什么——更改通信矩阵吗?
- 要不要使用面向服务的通信?不用的话,当前通信协议栈的带宽和通信效率是否足够?要是想用DDS和RESTful的话,自己开发的成本有多大?
- 要不要使用面向服务的软件架构?不用的话,软件的动态部署怎么办呢?自己设计的话,开发成本与周期考虑过吗?
关于中间件
- 要不要使用中间件?不用的话,耦合性怎么办?没有中间件的话,应用层就是直接调用操作系统的接口,操作系统一旦出现问题,就会导致牵一发而动全身的后果。
- 要不要使用中间件?不用的话,后期要是换了操作系统,成本有多高?应用层的代码和算法可能要推倒重来,重新进行书写。
- 整个系统的安全性考虑了吗?以开发ADAS为例,如果不用AP AUTOSAR开发的话,能达到什么样的安全等级?
当前中间件有很多种,各有优缺点,如果大家计划使用中间件的话,可以随时发邮件与我们交流哦~
关于APP
- 实现OTA的话不难,但是要在运行时执行OTA呢?
- 更换网络绑定怎么实现?多重网络绑定又怎么实现?
- 人工智能算法和机器学习算法是否可以与AP AUTOSAR进行结合呢?
02 总结
- AP AUTOSAR支持高性能处理器,也支持虚拟硬件开发来降低我们的开发成本。
- AP AUTOSAR规定只要是POSIX OS都可使用,当然包括那些达到ASIL-D的操作系统。
- AP AUTOSAR既是中间件,又是一个面向服务的架构。所以我们在增加功能和节点的时候,问题不大;更换OS或硬件的话,问题也不大。
- AP AUTOSAR支持多重网络绑定,也支持动态部署,以及运行时更新。
- AP AUTOSAR把Safety和Security都考虑进去了。(考虑了哪些点我们会在后期进行分享)
3,Adaptive AUTOSAR
Adaptive AUTOSAR标准定义了一个ARA运行环境(AUTOSAR Runtime for Adaptive Applications)。分为两种接口类型:service和APIs。平台由根据服务(Platform Service)和Adaptive AUTOSAR基础(Platform Foundation)分组的多个功能栈(功能集群)组成。每个功能栈:
- 聚合了自适应平台功能
- 定义了功能栈需求规范
- 从应用程序和网络角度描述软件平台的行为
- 但不限制最终在自适应平台中的具体软件架构设计
每台(虚拟)计算机必须至少有一个包含Adaptive AUTOSAR基础(Platform Foundation)的实例,而服务功能栈(Platform Service)可能分布于车载网络中。
相比于Classic AUTOSAR,用于Adaptive AUTOSAR的AUTOSAR Runtime Environment在运行时动态链接服务和客户端。
Adaptive AUTOSAR主要特点:
- 基于C++语言面向对象开发
- SOA架构(service-oriented architecture)
- 基于服务的SOA动态通信方式(SOME/IP…)
- 硬件资源间的连接关系虚拟化,不局限于通信线束的连接关系(互联网)
- 服务可根据应用需求动态加载,可通过配置文件动态加载配置,并可进行单独更新
- application加载到RAM运行,每个application独享(虚拟)一个地址空间
- POSIX-basedOS(Linux\PikeOS…),兼容性广,可移植性高
Classic AUTOSAR(CP)满足了传统嵌入式ECU的需求,而上述ECU的需求无法满足。因此AUTOSAR指定了另外一个软件平台,即Adaptive AUTOSAR(AP)。AP更专注提供高性能计算和通讯机制,并提供灵活的软件配置,例如支持无线更新软件(FOTA)。
Adaptive AUTOSAR优势:
- ECU更加智能:基于SOA通信使得AP中ECU可以动态的同其他ECU提供或获取服务,动态同其他ECU进行连接
- 更强大计算能力:基于SOA架构使得AP能够更好支持多核、多ECU、多SoCs并行处理,提供更强大的计算能力
- 更加安全:基于SOA架构使得AP中各个服务模块独立,可独立加载,IAM管理访问权限
- 敏捷开发:Adaptive AUTOSAR服务不局限于部署在ECU本地可分布于车载网络中,使得系统模块可灵活部署,并可后期灵活独立更新(FOTA)
- 高通信带宽:基于Ethernet等高通信带宽的总线通信
- 更易物联:基于以太网的SOA通信,更易实现无线、远程、云连接,部署V-2-X应用
- 系统兼容:通过SOME\IP等协议AP可以同CP/Non-AUTOSAR等ECU
听说Adaptive AUTOSAR好处之一:一次开发的ARA应用可以不改动代码得快速移植到其他ECU上。真的?
供应商之间的工具链完全不兼容,配置文件根本无法重新导入,怎么快速移植?
把配置文件的问题解决了,
一个真实的V2X案例显示,直接把两个本地通讯的服务中一个移植到另ECU上,使用SOME/IP+以太网通讯,性能降低5倍。如果移植的前提是不管性能,这移植有何用?
本地通讯的服务当移植到远程RPC后,通讯数据的颗粒度选择上非常有讲究。要想接近之前的性能,代码做了不小的改动。
说好的快速移植呢?
来自博世ETAS工程师的回答:Adaptive AUTOSAR好处确实有,但是并不是所有的场景都可以搬到AP autosar上使用,要根据实际情况而定。
Classic AUTOSAR
Classic AUTOSAR标准在最高抽象级别上将运行在控制器上的软件分为三层:Application,runtime environment(RTE)和basic software(BSW)。
- Application Layer,不依赖于硬件的
- 软件模块间通过RTE交互,并通过RTE访问BSW
- RTE体现了application的所有接口
- BSW又分为3大层和复杂驱动:服务层、ECU抽象层、MCU抽象层
- 服务层又细分为不同的服务组件,比如系统服务、存储服务、通信服务等
Classic AUTOSAR主要特点:
- 基于C语言面向过程开发
- FOA架构(function-oriented architecture)
- 基于信号的静态配置通信方式(LIN\CAN...通信矩阵)
- 硬件资源的连接关系局限于线束的连接
- 静态的服务模块,模块和配置在发布前进行静态编译、链接
- 大部分代码静态运行在ROM,所有application共用一个地址空间
- OSEK OS