Autosar4.4:软件组件模板 - 端口接口细节(1/2)

虚拟功能总线(VFB)的规范解释了软件组件之间通信的主要通信范例:用于基于操作的通信的客户端/服务器,以及用于基于数据的通信的发送器/接收器。
两种通信范式的性质完全不同,SenderReceiverInterfaces和ClientServerInterfaces及其相关元类的建模也是如此。
PortInterface描述了信息交换的静态结构
PortInterfaces仅限于对交换信息的静态结构的描述;与通信相关的动态属性附加到PortPrototypes。

本章共有6小节

1、前言

2、发送/接收者通信

3、客户/服务通信

4、外部触发事件通信

5、通信模式

6、参数通信

本章分为两部分:

1、前言

2、发送/接收者通信

3、客户/服务通信

 

 

1、前言

值编码的使用在PortInterfaces的上下文内受到限制。

PortInterfaces上下文中SwBaseType支持的值编码

PortInterface中使用的支持的值编码为:

  • 2C:两个的补码
  • IEEE754:浮点数
  • ISO-8859-1:单字节编码字符
  • ISO-8859-2:单字节编码字符
  • WINDOWS-1252:单字节编码字符
  • UTF-8:UCS转换格式8
  • UTF-16:基于16位代码单元的Unicode代码点的字符编码
  • UCS-2:通用字符集2
  • NONE:无符号整数
  • BOOLEAN:这表示要解释为布尔值的整数。

上述描述仅在属性isService的值设置为false时适用。

PortInterfaces和类别DATA_REFERENCE

在由ApplicationSwComponentType或SensorActuatorSwComponentType使用的PortInterface上下文中定义的DataPrototype(在解析通过TYPE_REFERENCE的潜在间接调用之后)由类别DATA_REFERENCE键入或映射到ImplementationDataType的情况下,才应使用 信息表示ServiceSwComponentType,ComplexDeviceDriverSwComponentType,ParameterSwComponentType或NvBlockSwComponentType或EcuAbstractionSwComponentType。

 

2、发送/接收者通信

SenderReceiverInterface

SenderReceiverInterfaces允许规范典型的异步通信模式,其中发送方提供一个或多个接收方所需的数据。

虽然实际的通信是通过相应的PortPrototypes进行的,但SenderReceiverInterface可以形式化地描述发送和接收的信息类型。

SenderReceiverInterface专注于由VariableDataPrototypes表示的信息项的描述。

以dataElement角色聚合的VariableDataPrototype表示在SenderReceiverInterface键入的PortPrototypes之间传输的原子信息。

invalidationPolicy无效政策

invalidationPolicy指定发送组件是否可以主动使特定的dataElement无效,以及应采用哪种在接收方处理接收invalidValue的策略。

Autosar4.4:软件组件模板 - 端口接口细节(1/2)_第1张图片 发送/接收者的数据元素

 

请注意,SenderReceiverInterface为VariableDataPrototypes的定义提供了名称空间。 就AUTOSAR元模型而言,这方面是通过与DataPrototype的继承关系来指示的(后者继而从Identifiable继承)。

swImplPolicy软件实现政策

swImplPolicy指示在接收方如何处理VariableDataPrototype的方式。 如果将其设置为已排队,则语义是需要将相应的VariableDataPrototype添加到队列(或换句话说:FIFO数据结构),然后由实际的接收器软件组件从中使用它。

排队通信不适用于PRPortPrototype拥有的dataElements

swImplPolicy不得设置为对PRPortPrototype拥有的任何dataElement排队。

发送者-接收者通信的最后一句最佳语义

如果将swImplPolicy设置为SwImplPolicyEnum的任何其他有效值,则最后一种是最好的语义。

请注意,VariableDataPrototype的定义可能与读者对信号的想法非常接近。 但是,不同种类的信号在AUTOSAR概念中具有特定含义,尤其是在AUTOSAR系统模板的背景下。

发送方/接收方通信的通信模式

可以连接由SenderReceiverInterface类型的PortPrototype,以建立1:n(即一个发送者,多个接收者)通信关系。 也可以建立n:1(即,许多发送者,一个接收者)通信模式。

实际上,上述不适用于通过一个AssemblySwConnector或PassThroughSwConnectors链连接多个PRPortPrototype的情况。

AssemblySwConnector支持的SenderReceiverInterface或NvDataInterface类型的PortPrototypes连接

对于由SenderReceiverInterface或NvDataInterface键入的PortPrototype之间的AssemblySwConnector建模,AUTOSAR仅支持下表记录的连接。

SenderReceiverInterface或NvDataInterface键入的PortPrototypes的受支持连接

 

对于由SenderReceiverInterface或NvDataInterface键入的PortPrototype,DepartmentSwConnector支持的连接

对于在SenderReceiverInterface或NvDataInterface键入的PortPrototype之间的委托委托连接器建模,AUTOSAR仅支持下表中记录的连接。

Autosar4.4:软件组件模板 - 端口接口细节(1/2)_第2张图片 SenderReceiverInterface或NvDataInterface键入的PortPrototypes的受支持连接

 

3、客户/服务端通信

客户端/服务器通信的基本语义是,客户端可以通过支持该操作的服务器来发起操作的执行。

服务器执行该操作,并在完成后向客户端提供结果(同步操作调用),否则客户端将自己检查操作是否完成(异步操作调用)。

客户端不得连接到多台服务器

客户端不得连接到多台服务器,以使一个以上的服务器可以处理一个操作调用。

ClientServerInterface在某种程度上与SenderReceiverInterface相对

ClientServerInterface定义了ClientServerOperations的集合,而不是定义要在软件组件之间传递的信息。

Autosar4.4:软件组件模板 - 端口接口细节(1/2)_第3张图片 客户端服务器的操作

 

客户端服务器接口

ClientServerInterface由ClientServerOperation组成,即ClientServerOperation不能在其他ClientServerInterface的上下文中重用。

ClientServerOperation

 ClientServerOperation由0个或若干个ArgumentDataPrototypes组成。可能是

  • 传递给操作(即方向为“in”)
  • 传递给操作并从操作返回(即方向为“ inout”)
  • 从操作返回(即方向为“out”)

聚集表示变体点。

ArgumentDataPrototypes的方向

为了解决这些情况,ArgumentDataPrototype定义了一个属性方向,可能的值是in(传递给操作),out(传递给操作),inout(传递给返回操作)。

本质上,ClientServerOperation中的所有ArgumentDataPrototypes都可以按值(概念上)(根据ArgumentDataPrototype的方向)从值传递(从客户端到服务器和/或从服务器到客户端)。

客户需要提供ArgumentDataPrototypes

当客户端调用一个操作时,它需要为每个ArgumentDataPrototype提供一个值,该值的方向为in或inout。

传递正确的数据类型

传递到方向为in或inout的ArgumentDataPrototype的值必须具有相应的Datatype。

ClientServerOperation的同步调用

在同步操作调用的情况下,客户端希望收到对操作调用的响应。

作为响应的一部分,它为每个ArgumentDataPrototype接收一个方向为out或inout的值(正确的AutosarDataType)。

每个ClientServerOperation为其ArgumentDataPrototypes提供一个名称空间,因此具有唯一的标识符,该标识符标识相应ClientServerInterface中的操作。

ClientServerOperations在ClientServerInterface中没有排序(没有“ first”操作之类的东西)。

没有ArgumentDataPrototypes的默认值

不能为在ClientServerOperation上下文中定义的ArgumentDataPrototypes定义默认值。 默认值可能会导致复杂的映射到编程语言。

在ClientServerOperation上下文中对ArgumentDataPrototypes的定义是有序的

与ClientServerInterface与ClientServerOperation的无序关系相反,在ClientServerOperation上下文中ArgumentDataPrototypes的定义是有序的,即ClientServerOperation可以具有第一个参数。

请注意,ArgumentDataPrototype继承自AutosarDataPrototype,因此具有对具体AutosarDataType的引用。

RTE生成器使用引用的AutosarDataTypes来确定参数的数据类型,具体取决于属性ArgumentDataPrototype.serverArgumentImplPolicy的值。

由原始数据类型键入的serverArgumentImplPolicy和ArgumentDataPrototype

对于带方向的ArgumentDataPrototype,属性ArgumentDataPrototype.serverArgumentImplPolicy的值不得设置为useVoid,其方向是由归类为原始C数据类型的AutosarDataType键入的。

请注意,服务器RunnableEntity需要通过使用客户端或通过PortDefinedArgumentValue传递的其他参数来获取有关当前使用的数组长度或结构大小的信息。

还要注意,ClientServerInterface没有定义任何计时信息(客户机期望服务器响应的速度)。 它没有定义线程的工作方式(例如,如果客户端阻塞,直到服务器返回响应)。

它还没有明确定义如何在客户端和服务器的实现与基础RTE之间传递信息(例如:通过“指针”或“按值”)。

对于由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes,AssemblySwConnector支持的连接

对于由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes之间的AssemblySwConnector建模,AUTOSAR仅支持下表中记录的连接。

由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes的受支持连接

 

对于由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes,DepartmentSwConnector支持的连接

对于由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes之间的委托委托连接器的建模,AUTOSAR仅支持下表中记录的连接。

Autosar4.4:软件组件模板 - 端口接口细节(1/2)_第4张图片 由ClientServerInterface,ModeSwitchInterface或TriggerInterface键入的PortPrototypes的受支持连接

 

客户端/服务器通信中的错误处理

本节描述了在应用软件组件内或通过VFB进行通信期间发生的错误的处理方法。由基本软件模块创建和使用的错误不在本文档的范围内,因此将不予讨论。

因此,本文档范围内的错误分为两个简单的类:

  • 基础架构错误和
  • 应用程序错误。

软件组件实现使用RTE API方法与其他软件组件进行通信。在此通信期间,由于基础结构故障可能会导致某些错误,例如总线无法正常工作,或者预期的数据值未及时到达。

这些错误在RTE规范中列出,因为它们是VFB提供的基础结构的固有功能。因此,软件组件通常不会自行引发基础结构错误。
相反,AUTOSAR基本软件和RTE将确定基础结构故障,并将相应的错误代码传达给相关的软件组件。

Autosar4.4:软件组件模板 - 端口接口细节(1/2)_第5张图片 应用错误元模型

 

AUTOSAR系统无需明确描述基础设施错误

由于固定的基础结构错误集被定义为VFB的隐式部分,因此AUTOSAR系统的开发人员无需明确描述这些错误。

假定这些可能在运行时发生,并且应用程序开发人员应采取措施进行处理。

另一方面,应用程序错误特定于以PortInterface形式描述的功能或信息。 无法预先定义此类错误,而是在某个PortInterface的设计时进行定义。

原则上,此类ApplicationErrors可以是所有PortInterfaces的一部分。

一个SwComponentType范围内的ApplicationError

如果SwComponentType的PortPrototypes由不同的ClientServerInterfaces键入,且具有相同的shortName和定义的ApplicationErrors,则适用以下条件:具有相同shortName的ApplicationErrors必须具有相同的errorCodes值。

上述存在的理由:RTE生成器为其中出现ClientServerInterface的shortName和ApplicationError的shortName的错误代码创建符号。

ApplicationError.errorCode的值

ApplicationError.errorCode的值不得超过闭合区间[1 ..63]。

以下例外适用:仅在可能的错误应该表示E_OK的情况下,才允许值0。

通过上述,可以确保仅将返回值的六个最低有效位用于指示应用程序错误。

因此,ClientServerOperations可能与它们可能引发的许多ApplicationError相关联。 这些错误定义为ClientServerInterface的一部分。

对ApplicationError的引用

ClientServerOperation引用的可能错误应归PortInterface所有,PortInterface也拥有ClientServerOperation。

请注意,元类ApplicationError也在AUTOSAR自适应平台上使用,因此此条内容不能更具体地描述封闭PortInterface的性质。

 

你可能感兴趣的:(Autosar官方搬运)