AUTOSAR
一、概论
1、是什么?
-
AUTOSAR全称为AUTomotive Open System ARchitecture(汽车开放系统架构)。
-
AUTOSAR是由汽车主机厂、零部件供应商、半导体厂商、软件服务商、工具提供商以及其他相关的厂商联合成立的一个组织。
1.1 来历
AUTOSAR官网将AUTOSAR的发展分成了5大阶段:
- AUTOSAR成立:Initialization(
2002
-2003) - 第一阶段:Phase 1(2003-2006)
- 第二阶段:Phase 2(2007-2009)
- 第三阶段:Phase 3(2010-2012)
- 2013年开始不断更新完善:AUTOSAR continuous further development(since 2013)
2017年
新的AUTOSAR自适应平台成立:AUTOSAR Adaptive Platform(since 2017)。
AUTOSAR的组织架构如下图所示。
2、做什么?
-
AUTOSAR的建立初衷是为了解决当前汽车电子电气架构复杂多样性,统一汽车电子电气架构标准。
-
AUTOSAR官网解释了其建立初衷和愿景:Considering the different automotive E/E architectures in the current and future markets, the partnership established a de-facto open industry standard for an automotive software architecture. It will serve as a basic infrastructure for the management of functions within both future applications and standard software modules.
3、AUTOSAR软件架构
-
AUTOSAR经常讨论的主要是指Classic platform(经典平台)。
-
AUTOSAR规范主要包含了软件架构、方法论、应用接口、一致性测试四部分。其中,软件架构是实现软硬件分离的关键,它使汽车嵌入式系统控制软件开发者摆脱了以往ECU软件开发与验证时对硬件系统的依赖。
-
AUTOSAR的最基本的理念就是分层:
将软件根据功能分为不同层级,并将各个功能模块化、标准化。 -
在AUTOSAR软件架构中,汽车嵌入式系统软件自上而下分别为
应用软件层(Application Software Layer,ASW)
、运行时环境(Runtime Environment,RTE)
、基础软件层(Basic Software Layer,BSW)
和微控制器(Microcontroller)
。 -
AUTOSAR整体框架为分层式设计,以中间件RTE(Runtime Environment)为界,隔离上层的应用层(Application Layer)与下层的基础软件(Basic Software)。
3.1 应用软件层
-
应用软件层(Application Software Layer,ASW)由若干个软件组件(Software Component,SWC)组成,软件组件间通过端口(Port)进行交互(软件组件之间的交互必须经过RTE层)
-
每个软件组件(SWC)可以包含一个或者多个运行实体(Runnable Entity,RE)。
-
运行实体(RE)可以简单的理解为软件中具体的逻辑控制、算法等函数,如控制大灯,空调等部件的运作,但与汽车硬件系统没有连接。
3.2.1 软件组件通信层面的新概念(VFB)
- 软件组件通信层面引入了一个新的概念,
虚拟功能总线VFB(Virtual Functional Bus)
,它是对AUTOSAR所有通信机制的抽象,利用VFB,开发工程师将软件组件(SWC)的通信细节抽象,只需要通过AUTOSAR所定义的接口进行描述,即能够实现软件组件与其他组件以及硬件之间的通信,甚至ECU内部或者是与其他ECU之间的数据传输。
3.2.2 SWC与VFB
- 软件组件(SWC)只需向VFB发送输出信号,VFB将信息传输给目标组建的输入端口,这样的方式使得在硬件定义之前,即可完成功能软件的验证,而不需要依赖于传统的硬件系统。
3.2.3 RTE与VFB
-
中间件RTE与面向对象OO(object oriented)的编程思想非常接近
-
所有ECU所对应的RTE都是特定的,它负责软件构件间以及软件构件与基础软件之间的通信。对于软件构件来说,基础软件不能够直接访问,必须通过RTE进入。因而RTE也被理解成是VFB的接口实现。
构件之间及构件与基础软件的通信关系如图所示:
3.2 运行时环境
-
运行时环境(Runtime Environment,RTE)作为应用软件层(ASW)与基础软件层(BSW)交互的桥梁。
-
RTE主要的作用就是实现软件组件间、基础软件间以及软件组件与基础软件之间的通信。
-
RTE层是AUTOSAR标准化的关键:
因为RTE封装了基础软件层的通信和服务,为应用层软件组件提供了标准化的基础软件和通信接口,使得应用层可以通过RTE接口函数调用基础软件的服务。此外,RTE抽象了ECU之间的通信,即RTE通过使用标准化的接口将其统一为软件组件之间的通信。 这样解决了应用软件层和基础软件层之间的耦合性。比如,当底层硬件改动(如MCU更改),应用软件层也不再需要改动。
3.3 基础软件层
-
基础软件层(Basic Software Layer,BSW)被抽象为四层,即
服务层(Services Layer)``、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer,MCAL)和复杂驱动(Complex Drivers)
服务层
包括系统服务(System Services)、存储器服务(Memory Services)、通信服务(Communication Services)等;ECU抽象层
中封装了微控制器层及外围设备的驱动,并对微控制器内外设的访问进行了统一,实现了软件应用层与硬件系统的分离。微控制器抽象层
位于基础软件的最底层,包含了访问微控制器的驱动(如I/O驱动、ADC驱动等),做到了上层软件与微控制器的分离,以便应用的后续的移植复用。复杂驱动
由于其严格的时序为应用层通过RTE访问硬件提供支持。
-
基础软件层(BSW)为应用软件层(ASW)提供基础软件服务:包括硬件驱动,通信协议(CAN、LIN),诊断服务(如UDS),系统服务(如任务调度,资源分配等)等。
-
目前AUTOSAR规范定义最为详细的部分就是基础软件层。而且判断某个软件架构是否遵守AUTOSAR规范的主要依据就在于基础软件层。
服务层
3.3.1 系统服务(System Services)
-
系统服务(System Services)又包括
Csm(Crypto Service Manager)
,SchM(BSW Scheduler Module)
,FiM(Function Inhibition Manager)
,Dem(Diagnostic Event Manager)
,Det(Development Error Tracer)
,DLT(Diagnostic Log and Trace)
,ComM(Communication Manager)
,BswM(BSW Module Manager)
,EcuM(ECU State Manager)
,StbM(Synchronized Time-base Manager)
,WdgM(Watchdog Manager)
,AUTOSAR OS(操作系统)
。 -
基本都是由第三方软件公司提供,也是目前最为标准化的软件模块
系统服务(System Services)如下图所示:
3.3.2 存储器服务(Memory Services)
- 存储器服务(Memory Services)主要由三部分组成:NvM(NVRAM Manager),Fee(Flash EEPROM Emulation),MemIf(Memory Abstraction Interface)。
3.3.3 通信服务(Communication Services)
-
通信服务(Communication Services)主要由Com(Communication),Dcm(Diagnostic Communication Manager),Dbg(Debugging),SM(State Manager,如CanSM),NM(Network Management,如CanNm),PduR(PDU Router),TP(Transport Layer),IpduM(IPDU Multiplexer),Xcp,SoAd(Socket Adaptor)等软件模块组成。
-
这一层次的软件模块大部分由第三方公司提供,也有不少的软件模块是OEM或Tier 1开发的。
ECU抽象层(ECU Abstraction Layer)
-
ECU抽象层(ECU Abstraction Layer)包括板载设备抽象(Onboard Devices Abstraction)、存储器硬件抽象(Memory Hardware Abstraction)、通信硬件抽象(Communication Hardware Abstraction)和I/O硬件抽象(Input/Output Hardware Abstraction)。
-
ECU抽象层将ECU结构进行了抽象,负责提供统一的访问接口,实现对通信、存储器或者I/O的访问,从而不需要考虑这些资源是由微控制器片内提供的,还是由微控制器片外设备提供的。
-
ECU抽象层正如名字一样,和ECU硬件息息相关,但和MCU无关。这种无关性正是由微控制器抽象层来实现的。
微控制器抽象层(Microcontroller Abstraction Layer,MCAL)
-
微控制器抽象层(Microcontroller Abstraction Layer,MCAL),是对MCU硬件的抽象,是实现不同硬件接口统一化的特殊层。
-
微控制器抽象层分为微控制器驱动(Microcontroller Drivers)、存储器驱动(Memory Drivers)、通信驱动(Communication Drivers)以及I/O驱动(I/O Drivers)。这些驱动程序基本都是由MCU芯片厂商提供的。
-
此层软件模块主要由各个驱动程序构成。其中有我们常见的SPI驱动程序,CAN驱动程序,LIN驱动程序,MCU驱动程序等。
复杂驱动层(Complex Drivers)
- 由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题,难以抽象,所以在AUTOSAR规范中这部分没有被标准化。
4、如何学习?
官网地址
官网链接如下:
https://www.autosar.org/
AUTOSAR Classic Release R22-11:
https://www.autosar.org/search?tx_solr[filter][0]=category%3AR22-11&tx_solr[filter][1]=platform%3ACP&tx_solr[q]=
标准文档命名
AUTOSAR的文档遵循下面的命名规则,了解这些可以更容易的理解其代表的含义:
- EXP:
"解释",更详细的介绍论题 - MMOD:
"元模型",介绍 AUTOSAR的元模型 - MOD:
"建模",介绍建模的原理 - RS:
"需求规格", 详细描述需求 - SRS:
"软件需求规格", 所有软件模块的规格描述 - SWS:
"软件规格", 软件模块设计和实现的规格 - TPS:
"模板规格", 元模型详细介绍 - TR:
"技术规格",技术规格详细介绍
对于终端使用者,关注以RS,SRS,SWS,TPS,TR命名的标准文档,在使用工具进行开发配置中,其配置工具手册中也都会介绍具体资料,所以在一开始阅读所有的文档对我们帮助不大,可以在使用时,按需要详细阅读对应的AUTOSAR规范文档
从Classic AUTOSAR 入门
- 主要基于CLASSIC AUTOSAR,针对AUTOSAR的终端使用者,而非工具链开发商和平台开发人员。
链接地址:
https://www.autosar.org/standards/classic-platform
- Classic AUTOSAR 适用于实时控制,资源有限的控制器上,目前大多数的跟传感器或者执行器相连的控制器都适用。
- Adaptive AUTOSAR 适用于具有较强计算能力的芯片的控制器上,可以实现较大数据吞吐和计算能力的控制器上,一般不用于实时控制,如Domain/Zone控制器及“Vehicle Computer”。
从Adaptive AUTOSAR 深入
-
针对Adaptive AUTOSAR的入门,也建议从Classic AUTOSAR入门,
-
Adaptive AUTOSAR规范中定义的很多中间件功能族或者服务都是从Classic AUTOSAR演化而来,如果有Classic AUTOSAR的基础,那么理解Adaptive AUTOSAR也会简单很多。
-
Adaptive AUTOSAR不同于Classic AUTOSAR,职责划分很明晰,Adaptive AUTOSAR更侧重于应用层的应用,故学习Adaptive AUTOSAR,着重学习:
-
Adaptive AUTOSAR的方法论
-
SOA的架构
-
SOA的基于SOME-IP的实现机理
-
Application的SWC设计
一、角色定位
-
首先问问自己目前的角色是什么?即将成为什么角色。因为角色不同,那么AUTOSAR应用的场景也不同,自然AUTOSAR工程师要做的事情也是不同的,对AUTOSAR掌握的程度和角度也不一样。
-
AUTOSAR很多规范是给基础软件包/工具供应商或者半导体厂商参考去实现具体的BSW协议栈或者芯片对应的MCAL.
-
针对不同工作职责,需要深入了解AUTOSAR的侧重有差别:
- 针对架构工程师,仅仅需要深入了解AUTOSAR的方法论及SWC的设计方法及技巧。
- 针对算法工程师,仅仅需要深入了解SWC的设计方法。
- 针对底层芯片驱动工程师,仅仅需要深入了解芯片抽象层MCAL的各个功能模块的具体应用细节。
- 针对BSW协议栈工程师,仅仅需要了解OS,ComStack,DiagStack,Memory Stack,WgdStack等协议栈的功能及应用细节。
- 针对复杂设备驱动工程师,仅仅需要了解复杂设备驱动的AUTOSAR接口定义方式。
- 针对集成工程师,仅仅需要深入了解RTE的运行集成及RTE相关的应用配置。
二 掌握技能Classic AUTOSAR、Linux和C++
-
Linux基础,毕竟Adaptive AUTOSAR是在Linux这种操作系统之上的中间件规范。
-
C++的基本编程经验,AUTOSAR是基于C++实现的。
本文来自博客园,作者:登云上人间,转载请注明原文链接:https://www.cnblogs.com/lj15941314/p/17396554.html