文章目录
前言
本文主要介绍AUTOSAR中常见的基础概念
一、AutoSAR介绍
AUTOSAR(Automotive Open System Architecture)是一个用于汽车电子系统的开放式标准,它定义了一种面向汽车电子控制单元(ECU)的软件架构。AUTOSAR 旨在提供一种通用的软件架构,以便汽车制造商和供应商能够开发、部署和维护各种汽车电子系统的软件,包括引擎控制、制动系统、驾驶辅助系统等。
AUTOSAR 标准包括许多不同的规范和文档,用于定义汽车电子系统的各个方面,例如通信、操作系统、硬件抽象层等。AUTOSAR 标准的一个关键组成部分是 AUTOSAR 代码生成工具,其中包括 AUTOSAR 配置工具(AUTOSAR Authoring Tool)和 AUTOSAR 运行时环境。
使用AutoSAR之前,汽车电子开发都是各自为战,没有统一规范,导致开发效率很低,且耦合度很大,代码可重用性很差。
使用AutoSAR之后,软件和硬件之间可以解耦,软件工程师不需要再过多考虑硬件,只需要配置一下AutoSAR告诉它所使用的硬件,AutoSAR会去匹配硬件。
AutoSAR的优势:
- 缩短代码周期,提高开发效率
- 增加代码可重用性
- 帮助多人同时开发以及维护
- 有图形界面配置工具(如DaVinci,IsolarA等),不需要手写代码,保证代码生成质量
二、AUTOSAR基础概念
1.SWC(Software Component)
SWC即Software Component。一般位于AutoSAR的Application应用层,可以理解为应用层单元模块。细说的话还可以分成Atomic SWC和Composition SWC。
- 一般单独说的SWC指的是Atomic SWC。
- SWC最形象的对比就是一个.C文件了,那么Composition SWC顾名思义就是.C文件的集合,体现在代码上,就是保存.C文件的文件夹。
Swc是ECU的组成单元。一个ECU可以包含多个Swc。简单理解,一个ECU可以看做汽车中的一个功能模块,通过ECU中的多个Swc协同工作来实现该功能。
2.Runnable Entity
可运行实体,其实就是.c文件内的函数而已。
- 一个SWC可以包含多个Runnable Entity,就是一个.C文件可以包含多个函数,每个函数可以执行一个特定的操作。
- 并且Runnable Entity必须要挂在Task上,就像函数如果只是放在那里没有被调用的话,也不起作用,总归是要挂在某个Task上才会被运行
3.Port
Port是依附在SWC上的概念,Swc之间通过Port进行通信交互。Port可以分为PPort(ProvidedPort),RPort(RequiredPort)以及PRPort。
- 其实也好理解,如果一个.C文件孤零零的放在那里,与别的C文件没有任何数据交互,那么作为一套代码中的一个C文件,根本没法发挥作用,所以必然在SWC上需要配置上或者输入(R-Port)的或者输出(P-Port)的Port。
Port之间进行数据交互最简单的方法就是“全局变量”。实际上,在配置好的代码中,可以发现,如果我为SWC1和SWC2之间配置了一个SR的interface的话,SWC1中会有一个函数Rte_Write(),里面会对一个全局变量进行赋值。而另一边SWC2的里面会有一个Rte_Read()的函数,来读取这个全局变量。通过这种方式,达到了数据的交互。
4.PortInterface
PortInterface是一个定义,相当于Java中的一个接口,Port即接口的具体实现类。PortInterface中可以定义Operation(Operation表示一个可以被调用的功能,一个PortInterface中可以定义多个Operation),由该PortInterface创建出来的Port,可以有选择的实现PortInterface中定义的Operation(通过RteEvent)。当通过Port调用一个Operation时,会触发Swc中的对应的RunnableEntry,该RunnableEntity会实现Operation的实际逻辑。
- Operation:定义了可被调用的功能,主要用于组件间的接口定义。
- RunnableEntity:定义了组件内部的执行逻辑,是RTE调度的基本单元。
两者之间的关系:Operation调用通常会触发相应组件中的RunnableEntity执行。Operation作为接口定义,而RunnableEntity则包含具体的实现逻辑。
5.Swc and multiple Instance
在AutoSAR中,一个软件组件可以具有多个实例,即在系统中可以多次实例化该软件组件。
SWC多实例的概念允许在汽车电子系统中多次使用同一种类型的软件组件。每个实例都代表一个独立的功能实体,具有自己的状态、行为和数据。这些实例可以在同一ECU(Electronic Control Unit)上或不同的ECU上运行,可以是相同的配置或不同的配置。
使用SWC多实例的主要优点包括:
- 复用性:可以在系统中多次使用相同类型的软件组件,提高了代码的复用性和可维护性。
- 灵活性:每个实例可以独立配置和管理,可以根据系统需求动态添加或移除实例。
- 并行性:多实例使得相同类型的功能可以并行运行,提高了系统的性能和响应能力。
SWC多实例的实现通常需要考虑实例之间的通信、数据共享、资源管理等方面的问题,以确保系统的稳定性和性能。 AUTOSAR提供了相应的标准和规范来支持SWC多实例的开发和集成。
multiple Instance
在AUTOSAR中,一个SWC(Software Component)可以类比为面向对象编程中的一个类。它包含了一组相关的功能、数据和操作。而多实例就像是对这个类的多次实例化,每个实例都拥有相同的结构和功能,但是它们是独立存在的。
实例句柄(instance handle)通常被用作一个标识符,用于区分不同的实例。在AUTOSAR中,为了管理这些实例并对其进行操作,通常将实例句柄作为第一个参数传递给SWC内部的各种操作函数。通过实例句柄,可以唯一地标识和访问每个实例,并且在调用操作时确保操作针对的是正确的实例。
因此,实例句柄充当了一个类似于对象的标识符,在调用操作时用于确定要操作的实例。这种设计可以有效地管理多个实例,确保它们在系统中的正确性和独立性。
6.SwConnector
AssemblySwConnector
用于同一个Composition Swc内的两个Swc之间连接
DelegationSwConnector
用于一个Composition Swc和另一个Composition Swc之间的连接