【车载开发系列】AutoSar中的组件相关知识

【车载开发系列】AutoSar中的组件相关知识

一.SWC的概念

SWC(Software Component)是最常见到的一个概念了,软件组件是封装了部分或者全部汽车电子功能的模块。软件组件包括了其具体的功能实现以及与对应的描述。各个软件组件(SWC)通过虚拟功能总线进行交互,从而形成一个AUTOSAR应用软件。
细分的话还可以分成Atomic SWC和Composition SWC。一般单独说的SWC指的是Automic SWC。SWC最形象的对比就是一个.C文件了,那么Composition SWC顾名思义就是.C文件的集合,体现在代码上,就是保存.C文件的文件夹。

二.Port的概念

Port是依附在SWC上的概念,比如配置工具配置SWC后,需要配置这个SWC的Port。
可以这样理解,如果将SWC看做一个C文件的话,这个C文件当中是需要一些对外的接口用来完成交互用。所以必然在SWC上配置上输入(R-Port)的或者输出(P-Port)的Port。SWC之间是如何进行交互的?可以将Port想象成一个全局变量,可以发现,如果我们为SWC1和SWC2之间配置了一个SR的interface的话,SWC1中会有一个函数Rte_Write(),里面会对一个全局变量进行赋值。而另一边SWC2的里面会有一个Rte_Read()的函数,来读取这个全局变量。通过这种方式,达到了数据的交互。
Port一般可以分为以下的两种类型。

1.SR-Port

发送者/接收者接口定义了一系列的数据元素用于在虚拟功能总线上进行接收和发送。在代码层面上SR-Port(Sender-Reciever)主要是进行数据的传输
SR是对一个全局变量的操作,当然如果只涉及SWC内部的传输的话,就变成Static变量了。

2.CS-Port

客户端/服务器接口定义了一系列的操作,这些由包含该接口的供型端口所在的软件组件来实现,并提供给包含该接口的需型端口所在的软件组件调用。
CS-Port(Client-Server)是调用另一个SWC中的服务,或者理解成调用另一个函数。CS的则是在函数中调用另一个函数,特别是另一个SWC的函数才会需要经过RTE来调用,这个另一个SWC可以是本ECU内部的,也可以是跨ECU的。不过对于调用方的SWC,跨不跨ECU并没有什么区别。

三.Interface的概念

Interface它是一个抽象的概念,是一个无法直接在代码中对应的概念。如果SWC可以比较准确的对应为.C文件,Interface在配置工具的语境下包含了输入输出Port,以及两个Port之间的连接关系的一个集合。
在工具中,会为一个Interface命名,再将输入输出Port连接到这个Interface上,这样RTE层内部如何实现两个Port之间的代码维度的连接,就是工具在生成的了,这个时候内部生成的不管是全局变量抑或是宏定义等等,都会基于这个Interface的元名称进行扩展。正因此,才会需要在工具层面上具象化Interface,并给他一个命名。总结为一句话就是Port Interface是将两个Component连接起来的桥梁。

四.Runnable Entity的概念

它是可运行实体,其实就是.C文件内的函数。软件组件(SWC)的功能就是通过运行实体(Runable Entity)来表现的。
一个SWC可以包含多个Runnable Entity,就是一个.C文件可以包含多个函数,每个函数可以执行一个特定的操作。
并且Runnable Entity必须要挂在Task上,就像函数如果只是放在那里没有被调用的话,也不起作用,总归是要挂在某个Task上才会被运行

五.VFB的概念

虚拟功能总线(Virtual Function Bus,VFB)是AUTOSAR中的另一个重要概念。虚拟功能总线(VFB)是对AUTOSAR提供的所有通信机制的一种抽象,是所有软件组件(SWC)进行交互的桥梁。通过虚拟功能总线,软件组件之间的通讯细节被抽象出来,软件组件通过AUTOSAR定义的接口对通讯进行描述,即可最大程度地独立于具体的通讯机制,实现与其他软件组件(SWC)或硬件的交互。
通过虚拟功能总线(VFB),无论软件组件(SWC)使用的是单ECU的内部通信还是ECU间的外部通信,对于应用软件的设计者来说没有本质区别。内部通信与外部通信的区别只有等到系统配置阶段,将软件组件(SWC)分配到不同的ECU之后,才能体现出来。而在这种情况下,虚拟功能总线(VFB)的真实通信实现可以由运行时环境和基础软件来保证。
在虚拟功能总线(VFB)的帮助下,应用软件的各个软件组件不需要关注通信的区别,从而可以在独立的情况下设计开发软件组件。

六.PortPrototype的概念

AUTOSAR中的应用软件被组织在称为 AtomicSwComponentTypes的独立单元中。 此类AtomicSwComponentType封装了其功能和行为的实现,并且仅向外界公开了定义良好的连接点,称为PortPrototype。
PortPrototype可以理解是端口,定义两个不同Component组件的连接点,用于两者之间通信。PortPrototype可以是Port提供者(PPortPrototype)或Port的接收者(RPortPrototype)。SwComponentType 的PortPrototype应该用于连接SwConnector,从而在SwComponentPrototype之间建立实际连接

七.概念总结

应用软件层(Application Software Layer,ASW)包含若干个软件组件(Software Component,SWC),软件组件之间通过端口(Port)进行交互。端口之间是通过Interface进行了连接。每个软件组件可以包含一个或多个运行实体(Runnable Enity,RE),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。
每个端口虽然定义了软件组件(SWC)间通信内容及其方向,但是通信内容以及用于交互的操作却仍不得而知。AUTOSAR中使用端口接口(Port-Interface)来描述端口之间的供需关系。

扫描二维码关注公众号,回复: 15339750 查看本文章

猜你喜欢

转载自blog.csdn.net/Last_Impression/article/details/130492815