AUTOSAR架构
AUTOSAR,汽车开放系统架构(AUTomotive Open System Architecture)是一家致力于制定汽车电子软件标准的联盟。AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成员保持开发合作伙伴关系。自2003年起,各伙伴公司携手合作,致力于为汽车工业开发一个开放的、标准化的软件架构”。------百度百科
(声明:本文综述来自不同平台,如有侵权,请联系删除)
1.1 AUTOSAR架构简介
AutoSAR主要分为3个层级:应用软件层(AppL),实时运行环境(RTE)和基础软件层(BSW)。
1.2 应用软件层(Appl)
APPL由多个SWC组成,在此,每个SWC可以理解为一个.c文件,而整个应用软件层便是一个文件夹。如下图所示:
上图可以看出,整个工程是一个AutoSAR架构,其中的AppL、RTE和BSW分别对应一个文件夹,而SWC组件就是一个个的.c文件(和.h)。
AppL中最重要的是SWC,而SWC与其他SWC通信需要接口, SWC中又由Runnable组成,所以AppL主要的组成就分下面三部分:
应用软件组件(Application SWC)
AutoSAR接口(Ports)
可运行实体(Runnable)
1.应用软件组件(SWC)
1)原子SWC(Atomic SWC)
不可再拆分的SWC,特点是每个原子级SWC对应一个.c文件,且这个c文件就是的最小单元,不可再分。可运行实体(runnable)是组成SWC的更小单元,即将SWC看成是最小单元,runnable是其中的函数。
2)集合SWC
AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个个更小的Atomic SWC。通常,可以将功能相近或者需要整合到一处方便观看的SWC利用一个compositon SWC包含起来。如上图中的“车顶灯ECU”。
3)特殊SWC
实际上,需要添加代码的不止是应用层的SWC。在BSW中,IO硬件抽象层(IoHwAb,和复杂驱动(Cdd)都是需要手动添加代码的,而这两个地方也可以算作是SWC,在DaVinci Developer中可以作为SWC进行配置和加runnable等操作的。因此,可将其看作是特殊的SWC。
2.AutoSAR接口(Port)
Ports是SWC和SWC做接口(Interface)通信使用,或是SWC通过RTE和BSW做接口(Interface)通信使用,Ports主要分为5种类型。
AutoSAR接口 | Simulink接口 |
---|---|
Receiver/Sender Port | In/Out Port |
Client Port | Function Caller |
Server Port | Simulink Function |
Inter-Runnable Varible(IRV) | Signal Line |
Event | Function Call |
Runnable | Function Call Subsystem |
1)Send/Receiver(S/R)接口
作用:传输数据。通过RTE传输数据,并且通过RTE管理数据的传输,避免数据出问题(例如同时调用同一数据时可能出错)。
例子:
Receiver接口类型:Rte_Read_
2)Client/Server(C/S)接口
作用: 提供操作。就是Server提供函数供Client调用
可以同步和异步。同步就是直接调用,相当于函数直接插入上下文运行;异步的话需要等待,相当于让函数在另一个线程中运行,运行完了再返回,原上下文依然运行;
一个接口可以提供多个操作,就是一个接口可以包含很多函数;
ECU内部和跨ECU都可以调用,跨ECU也是通过外部总线。
例子:
Client接口类型:Rte_Call_
3.可运行实体(Runnable)
AUTOSAR 当中,一个运行实体(Runnable)是指一个原子软件组件(AUTOSAR Atomic Software Component)提供的最小代码段,同时也是一个可以被单独调度的任务。
Runnables,即Runnable entities,也是SWC的组成部分,运行在RTE里面,由RTE周期事件触发或者其他事件触发时调用。Runnable包含着实际运行的函数。
注:Runnable是需要OS中的Task做载体。
1.3 实时运行环境(RTE)
RTE的作用有点像一个快递中转站或者说是电话接线员(就是上个世界那种要先打电话到接线员那里,然后通过接线员转接电话线到目的地),其作用就是将一个SWC的信息通过RTE连接到其他SWC或者BSW上,且RTE具有管理这些信息的功能。比如接收的SWC正忙(您所拨打的用户正忙),那么RTE负责让发送信息的SWC等待,或者做其他处理;RTE还能触发SWC,就像是这时接收的SWC在睡觉,这时发送的SWC发信息来了,那么RTE就要把接收的SWC叫醒起床。一句话概括就是RTE提供了SWC的运行环境。
作用:
提供跨ECU / ECU内部的通信管理;
提供对runnable的管理功能(触发、唤醒等,简单说就是runnable需要映射到Task上运行,而这个映射就是通过RTE具体实现的);
VFB(虚拟功能总线),RTE就是VFB的具体实现。
注:在Vector的工具链中,RTE是自动生成的。
1.4 基础软件层(BSW)
基础软件层(Basic Software),实质上就是将整个ECU分层封装起来,一直封装到OS。
实际在做符合AUTOSAR的应用软件开发时,需要对APPL层和RTE层有更深入的认识,而对BSW有个基本认识即可。
参考: