什么是VFB?它的作用是什么?
在AUTOSAR中,应用程序被设计为相互连接的SWC组合。虚拟功能总线是这些SWC互相交互的通讯机制。在系统配置阶段,SWC被映射到特定的ECU上。因此,SWC之间的虚拟连接被映射为本地连接(同一个ECU上),或者基于车载网络的通讯机制,如CAN,Flexray等。SWC与SWC之间以及SWC与BSW之间相互连接的接口被称为RTE。
下图即是系统配置的过程:把各个SWC映射到相应的ECU上,根据系统需求,不同的SWC可能会被映射到同一个ECU上(通过本地的RTE接口通讯),也可能被映射到不同的ECU上(通讯的RTE接口要基于CAN,Flexray等车载网络)。
一个SWC包含一部分或全部的功能模块,一个SWC由代码实现和与之关联的正式描述文件组成。虚拟功能总线的概念实现了应用软件与基础软件的严格隔离。实现应用软件的SWC很大程度上独立于通讯机制,通过该机制SWC可以和其他的SWC或者硬件(比如传感器、执行器)进行交互。
通过VFB可以指定系统的完整通信,包括所有的提供者(Provider or Server)和使用者(Receiver or Client)。因此VFB可以用于检查软件组件通信的可信性。通讯连接和被连接的SWC被保存在同一个描述文件中,该描述文件会在接下来的几个阶段被用到(映射、软件配置等)。
VFB需要给实现汽车功能的SWC提供所有的基础服务:
和系统中的其他SWC进行通信
和系统中的传感器或执行器通信
访问标准服务,如读写NVM
响应工作模式变化,比如ECU的电源状态变化
和系统中的标定、测量系统的交互
Port以及Interface
在VFB级别构建系统时使用的中心元素是SWC。SWC具有定义良好的Ports,通过这些Ports SWC可以和其他SWC进行交互。一个Port总是只属于一个SWC,并且表现为该SWC和与之通信的其他SWC之间的交互点。
下图展示了一个SWC定义的例子,该SWC叫做SeatHeatControl, 它根据几个输入来控制座椅内的加热单元。在这个例子中,该SWC需要以下几个信息作为输入:
座椅上是否有乘客落座(通过port "SeatSwitch")
座椅加热温度设置(通过port "Setting")
电源状态(通过port "PowerManagement"),在特定转台下它可以禁用座椅加热功能
该SWC控制:
和座椅温度调节相关的DialLED(通过port "DialLED")
座椅加热单元(通过port "HeatingElement")
而且,该SWC还具有标定功能(通过port "Calibration"),需要ECU的状态(通过port "ecuMode"),还需要对NVM的访问(通过port "nv")。
上面的例子中多次提到了port,那什么是port?它的作用是什么呢?
如前文所述,port是SWC之间的交互点。port总是和interface一起构成SWC之间通信的桥梁,port可以简单理解为端口,而interface可以理解为连接端口的线缆。
一个port可以是PPort, RPort, 或PRPort。一个PPort或PRPort提供在port-interface里定义的数据,而一个RPort或PRPort则获取在port-interface里定义的数据。
部分Port和Interface的类型如下表所示:
以上,只是列出了AUTOSAR中常用的部分Port-Interface类型,更多类型大家可以查阅AUTOSAR的手册。
当一个SWC的PPort提供client-server接口时,该组件负责实现接口中定义的操作。
在下图的例子中,SWC "SeatHeating" 实现了操作"SetPower",其他SWC可以通过port "Setting" 来调用该操作。SWC "SeatHeatingControl" 通过port "HeatingElement" 来调用操作"SetPower"。
当一个SWC提供sender-receiver接口时,该组件负责提供接口中定义的值。
在下面的例子中,SWC "SeatSwitch" 通过port "Switch"为"PassengerDetected" 提供布尔值。相似的,SWC "SeatHeatingControl" 可以通过port "SeatSwitch"读取"PassengerDetected" 的状态。