AUTOSAR 学习笔记
概述
本文章为0基础小白记录AUTOSAR学习笔记。如有错误,欢迎评论区指正。个人笔记模式习惯采用提问式记录,也是这篇文章的主要记录模式。
补充,大篇幅文章推荐:
《AutoSAR入门到精通系列讲解》作者:雪云飞星
https://blog.csdn.net/xyfx_fhw/category_9291827.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=9291827&sharerefer=PC&sharesource=weixin_51105931&sharefrom=from_link
1.AUTOSAR基础认知
1.1 什么是AUTOSAR?为什么要学习AUTOSAR?怎么用AUTOSAR?
Autosar 指 汽车开放系统架构(AUTomotive Open System Architecture)。就是一套规定好的标准、模型、架构。
学AUTOSAR的原因是它为汽车电子软件开发提供了标准和框架,在这个标准模式下,汽车生产商(OEM,Original Equipment Manufacturer)、Tier1(1级供应商)和Tier2(2级供应商)等各个公司之间开发效率可以大大提升。具体来说:OEM软件的可移植性和复用性提升,同时软件应用层在的可靠性大大提升,节省研发和测试费用。Tier1应对严苛的指标要求,处理更加高效,利用软件配置工具提高开发效率。Tier2由于OEM和Tier软件需求变明确,可以专心各个层级的开发工作。
AUTOSAR如何使用,AUTOSAR框架下有专门的工具链,我们使用对应的工具链,按照AUTOSAR标准进行配置使用,便是基于AUTOSAR开发。
补充:
《什么是OEM,Tier1、Tier2?》作者:这里是胡诌诌
https://zhuanlan.zhihu.com/p/681252603
OSEK是AUTOSAR的前身,AUTOSAR相当于软硬件之间的一层隔离。其优势就是解决传统开发的软硬件耦合严重导致的问题。缩短开发周期,增强了原有代码的复用性,支持多人同时开发和维护,有图形化配置界面,生成的代码相对传统更有保障性。
1.2 AUTOSAR分类Classic Platform和Adaptive Platform,有什么区别?
进入AUTOSAR官网,会发现AUTOSAR分为Classic Platform和Adaptive Platform
这两者有什么区别呢?
Classic platform(经典平台)是 AUTOSAR 针对传统车辆控制嵌入式系统的解决方案,具有严格的实时性和安全性限制。从架构来看如下图所示,软件自上而下分别为应用软件层(Application Software Layer,ASW)、运行时环境(Runtime Environment,RTE)、基础软件层(Basic Software Layer,BSW)和微控制器(硬件)(Microcontroller/Hardware)。为保证上层与下层的无关性,在通常情况下,每一层只能使用下一层所提供的接口,并向上一层提供相应的接口。
Adaptive AUTOSAR(自适应平台)是在异构多核(CPU/AI/GPU)高性能SOC处理器和更高带宽的以太通信技术驱动下,提出的一种新型汽车电子系统软件架构标准。它除了继承大量经典平台CP标准内容外,还采用了面向对象高级编程C++语言、面向服务的SOA架构和基于 POSIX 标准的操作系统以适应异构处理的分布式并行处理需求,同时在满足功能安全和信息安全的车规要求下,支持灵活的软件配置、动态部署以及持续的软件迭代更新。
在对比这两个平台之前,还要补充E/E架构(Electrical/Electronic)即电子电气架构相关知识。
传统E/E架构,多条CAN总线连接整个汽车的各个ECU,随着汽车功能和传感器的增加,ECU不断增加,传输的数据大小也在增加,我们会把功能类似的ECU集成到一起,形成域。即使这样,传统E/E架构难以满足ECU的大量增加和联网的需求(CAN通信被网络读取所有信息,行车不安全),于是便提出了新型E/E架构,如下图。
现在最新的架构是中央+区域集成。
回归到AUTOSAR,软件架构便逐渐由 Classic AutoSAR 向 Classic AutoSAR+Adaptive AutoSAR 混合式方向发展。Classic AutoSAR 基础软件分为四层,分别为服务层ASW、 ECU 抽象层BSW、微控制器抽象层MCALL和运行时环境RTE,运行时环境使应用软件从底层软件和硬件平台相互独立。除此之外还包括复杂驱动程序,由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题,这部分暂时未被标准化。
Adaptive AutoSAR 相较于 Classic AutoSAR 具有软实时、可在线升级、操作系统可移植等优势。Classic AutoSAR 是基于强实时性(微秒级) 的嵌入式操作系统上开发出来的软件架构, 可满足传统汽车定制化的功能需求,但受网络的延迟、干扰影响较大,无法满足强实时性。随着自动驾驶、车联网等应用的复杂化, 软实时性的软件架构系统 Adaptive AutoSAR 诞生,其主要用于域控制器/中央计算平台,相对于 Classic AutoSAR的优点:
- 为软实时系统,偶尔超时也不会造成灾难性后果;
- 更适用于多核动态操作系统的高资源环境,如 QNX;
- 软件功能可灵活在线升级。
补充:
分布式架构的极限是 L2 级别的自动驾驶,L3 级别已经超出承受范围。 ---《一文看懂第三代E/E架构》 作者:阿宝1990
实现 OTA 和“软件定义汽车”,智能车必须解耦软硬件。分布式架构的 ECU 来自不同供应商,有着不同的嵌入式软件和底层代码,软件生态复杂,OEM 无法自主进行整车维护,更无法实现 OTA。而 Tier1 更新 ECM 的周期和新车型的研发周期相匹配,一般为 2-3 年,率先实现 OTA 的特斯拉更新频率则为几个月一次,用户体验差异明显。在特斯拉已经掌握 OTA 技术的情况下,如果不尽早开始布局,传统车企或将重蹈诺基亚和摩托罗拉的覆辙。 ---《一文看懂第三代E/E架构》 作者:阿宝1990
参考引用:
《Adaptive AUTOSAR (AP)简介 》作者:Auto阿勋
https://blog.csdn.net/qq_44960487/article/details/140011740?spm=1001.2014.3001.5502
《一文看懂第三代E/E架构》 作者:阿宝1990
https://mp.weixin.qq.com/s/yVhVxlAXyxgC1ZDQ8_T3VQ
1.3 AUTOSAR架构有哪几层?分别有什么作用?
如下图,我们这里说的架构是classic autosar,也是现在普遍使用的架构。由ASW软件应用层(Application Layer,Appl)、RTE实时运行环境层(Runtime Environment)、BSW基础软件层(Basic Software)和微控制器层(Microcontroller)构成。
其中,应用层是执行用户代码的区域;实时运行环境层提供应用层所需要的资源,将应用层和底层分离管理同时调度SWC,将SWC与BSW之间做映射。(SWC指应用层组件);基础软件层将对硬件的操作封装成统一AutoSAR标准的接口,供上层RTE调用。硬件层便是基础硬件资源了。此外,BSW是比较庞大的,还有横向与纵向描述,在BSW层再详细描述。
参考引用:
《Autosar入门随笔5——怎么去学习Autosar》 作者:因上努力,果上随缘.
https://blog.csdn.net/tim_lucia/article/details/143904155?spm=1001.2014.3001.5502
2.ASW层知识
2.1 Application Layaer(ASW、Appl)应用软件层包括哪些内容?
应用软件层内有多个软件组件(Software Component,SWC),软件组件之间通过端口(Port)交互。每个SWC可以运行任意个实体(Runnable Entity,RE
),实体中有相关控制算法,可由RTE事件触发。
2.2 SWC具体指啥?好几种不同命名SWC说的是啥?
软件组件(SWC)指应用程序的核心,也是一些抽象层、复杂驱动层等实现的载体。可把每个SWC理解为一组.c和.h文件,其能实现了特定的功能,比如控制开关灯。
SWC大体上可分为原子组件(Atomic SWC)和部件(Composition SWC)。其中,部件可包含若干原子软件组件或部件。原子组件可根据不同用途分为以下几种类型:
1)应用软件组件(Application SWC);
2)传感器/执行器软件组件(Sensor/Actuator SWC);
3)标定参数软件组件(Parameter SWC);
4)ECU抽象软件组件(ECU Abstraction SWC);
5)复杂设备驱动软件组件(Complex Device Driver SWC);
6)服务软件组件(Service SWC);
应用软件组件主要用于实现应用层控制算法。
传感器/执行器软件组件用于处理具体传感器/执行器的信号,可以直接与ECU抽象层交互。
标定参数软件组件主要提供标定参数值。
ECU抽象软件组件提供访问ECU具体I/O的能力。该软件组件一般提供引用C/S接口的供型端口,即Server端,由其他软件组件(如传感器/执行器软件组件)的需型端口(Client端)调用。
此外,ECU抽象软件组件也可以直接和一些基础软件进行交互。
复杂设备驱动软件组件推广了ECU抽象软件组件,它可以定义端口与其他软件组件通信,还可以与ECU硬件直接交互。所以,该类软件组件灵活性最强,但由于其和应用对象强相关,从而导致其可移植性较差。
服务软件组件主要用于基础软件层,可通过标准接口或标准AUTOSAR接口与其他类型的软件组件进行交互。
2.3 Ports的作用是啥?不同类型之间有什么区别?
Ports是用于SWC之间做接口(interface)通信使用,或者SWC通过RTE和BSW做接口通信使用。可分三类,R-Ports、P-Ports和PR-Ports(Provide and Require Port,PR在AUTOSAR 4.1.1标准提出),分别是:
1)需型端口:用于从其他软件组件获得所需数据或所请求的操作;
2)供型端口:用于对外提供某种数据或某类操作;
3)供需端口:兼有需型端口与供型端口的特性。
AUTOSAR软件组件端口:
由于端口仅定义了方向,所以AUTOSAR中用端口接口(Port Interface)来表征端口的属性,端口接口类型主要有如下几种:
1)发送者-接收者接口(Sender-Receiver Interface, S/R);
2)客户端-服务器接口(Client-Server Interface,C/S);
3)模式转换接口(Mode Switch Interface);
4)非易失性数据接口(Non-volatile Data Interface);
5)参数接口(Parameter Interface);
6)触发接口(Trigger Interface);
最常用的端口接口是1)、2)。
如下图,软件组件SWC1具有2个端口:其中一个引用的端口接口类型为发送者-接收者(S/R)接口,另一个引用的端口接口类型为客户端-服务器(C/S)接口。
对于引用发送者-接收者接口的一组端口而言,需型接口为接收者(Receiver),供型端口为发送者(Sender)。对于引用客户端-服务器接口的一组端口而言,需型端口为客户端(Client),供型端口为服务器(Server)。
AUTOSAR软件组件端口接口:
1)发送者-接收者端口
用于数据的传递关系,发送者发送数据到一个或多个接收者。该类型接口中定义一系列的数据元素(Data Elemet,DE),这些数据元素之间相互独立。如下图,发送者-接收者接口SR_Interface中定义了2个数据元素,名字分别为DE_1、DE_2,并且需要为每个数据元素赋予相应的数据类型。
注意:一个软件组件的多个需型端口、供型端口、供需端口可以引用同一个发送者-接收者接口,且它们可以使用该接口中所定义的任意一个或多个数据元素,而不一定使用所有数据元素。
2)客户端-服务器接口
客户端-服务器接口用于操作(Operation,OP),即函数调用关系,服务器是操作的提供者,多个客户端可以调用同一个操作,但同一个客户端不能调用多个操作。客户端-服务器接口定义了一系列操作(Operation),即函数,它(们)由引用该接口的供型端口所在地软件组件来实现,并提供给引用该接口的需型端口所在地软件组件调用。如下图所示,该客户端-服务器接口CS_Interface中定义了两个操作OP_1与OP_2,对于每个操作需要定义相关参数及其方向,即函数的形参。
客户端-服务器端口定义:
注意:每个端口只能引用一种接口类型,并且引用相同端口接口类型的端口才能进行交互。
2.4 Runnable Entity是什么,如何理解?
Runnable 就是SWC中的函数,在AUTOSAR架构下,软件生成时,为空函数,需要手动添加代码。
2.5 ASW工作流程(原理)是什么样的?
看了很多文章,对ASW层的工作流程理解还是有点模糊。基于雪云飞星大佬和明明1109大佬的文章,谈下我的个人认知。
软件组件SCW,在代码层面它是一个功能组件的所有.c和.h合集,在实物层面看作车灯、车灯开关。
Port就是每个组件的接口,有用于信息传输的也有用于接收的。
Runnanble就是SCW文件中的具体函数。
如下图,可以把7个SWC分配到两个控制器中(即2个MCU),MCU内部通信为RTE,外部通信采用总线通信。
补充:
ASW层通常由OEM整机厂开发。
AUTOSAR规范定义了三种数据类型(Data Type):
1)应用数据类型(Application Data Type,ADT);
2)实现数据类型(Implementation Data Type,IDT);
3)基础数据类型(Base Type)。
应用数据类型是在软件组件设计阶段抽象出来的数据类型,用于表征实际物理世界的量,是提供给应用层十一点,仅仅是一种功能的定义,并不生成实际代码。
实现数据类型是代码级别的数据类型,是对应用数据类型的具体实现;它需要引用基础暑假类型,并且还可以配置一些计算方法(Compute Method)与限制条件(Data Constaint)。
AUTOSAR中,对于Application Data Type没有强制要求使用,用户可以直接使用Implementation Data Type。若使用了Application Data Type,则必须进行数据类型映射(Data Type Mapping),即将Application Data Type与Implementation Data Type进行映射,从而对每个Application Data Type进行具体实现。
3.RET层知识
3.1 什么是RTE?它的功能和作用是什么?
RTE如其全称Runtime Environment,实时运行环境,其为SWC提供了运行环境。
它的作用是实现ECU内外部的通信管理,runnable的触发和唤醒均是在RTE中实现