AUTOSAR架构

AUTOSAR,汽车开放系统架构(AUTomotive Open System Architecture)是一家致力于制定汽车电子软件标准的联盟。AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成员保持开发合作伙伴关系。自2003年起,各伙伴公司携手合作,致力于为汽车工业开发一个开放的、标准化的软件架构”。------百度百科

(声明:本文综述来自不同平台,如有侵权,请联系删除)

1.1 AUTOSAR架构简介

image
image
AutoSAR主要分为3个层级:应用软件层(AppL),实时运行环境(RTE)和基础软件层(BSW)。

1.2 应用软件层(Appl)

APPL由多个SWC组成,在此,每个SWC可以理解为一个.c文件,而整个应用软件层便是一个文件夹。如下图所示:
image
上图可以看出,整个工程是一个AutoSAR架构,其中的AppL、RTE和BSW分别对应一个文件夹,而SWC组件就是一个个的.c文件(和.h)。
AppL中最重要的是SWC,而SWC与其他SWC通信需要接口, SWC中又由Runnable组成,所以AppL主要的组成就分下面三部分:
应用软件组件(Application SWC)
AutoSAR接口(Ports)
可运行实体(Runnable)
1.应用软件组件(SWC)
image
1)原子SWC(Atomic SWC)
image
不可再拆分的SWC,特点是每个原子级SWC对应一个.c文件,且这个c文件就是的最小单元,不可再分。可运行实体(runnable)是组成SWC的更小单元,即将SWC看成是最小单元,runnable是其中的函数。
2)集合SWC
AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个个更小的Atomic SWC。通常,可以将功能相近或者需要整合到一处方便观看的SWC利用一个compositon SWC包含起来。如上图中的“车顶灯ECU”。
3)特殊SWC
image
实际上,需要添加代码的不止是应用层的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

image
image

1)Send/Receiver(S/R)接口
image
作用:传输数据。通过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包含着实际运行的函数。
image
注: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。
image
实际在做符合AUTOSAR的应用软件开发时,需要对APPL层和RTE层有更深入的认识,而对BSW有个基本认识即可。

参考:

知乎-漫步者无言-AUTOSAR简单介绍

posted @ 2023-03-12 13:39  西故黄鹤楼  阅读(2027)  评论(0编辑  收藏  举报