AUTOSAR-Ports的类型

简述:Ports是SWC和SWC做接口(Interface)通信使用,或者SWC通过RTE和BSW做接口(Interface)通信使用。

软件组件的端口根据输入/输出方向可分为:

  1. 需求端口(Require Port,RPort):用于从其他软件组件获得所需数据或者所请求的操作。
  2. 提供供端口(Provide Port,PPort):用于对外提供某种数据或者某类操作。
  3. 供需端口(Provide and Require Port,PRPort):兼有需型端口与供型端口的特性。

由于端口仅仅定义了方向, 所以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) 。

AUTOSAR-Ports的类型_第1张图片

对于引用发送者-接收者接口的一组端口而言, 需型端口为接收者(Receiver) , 供型端口为发送者(Sender) 。 对于引用客户端-服务器接口的一组端口而言, 需型端口为客户端(Client) , 供型端口为服务器(Server) 。

对于S/R通信模式, 可分为显示(Explicit) 和隐式(Implicit) 两种模式。 若运行实体采用显示模式的S/R通信方式, 数据读写是即时的, 这就是显式模式。;当多个运行实体需要读取相同的数据时, 若能在运行实体运行之前先把数据读到缓存中, 在运行实体运行结束后再把数据写出去, 则可以改善运行效率, 这就是隐式模式。

举例:代码中调用的API

{

  ABS_Active ABS_Active = Rte_InitValue_ABS_Active_Get_ABS_Active;

  //Receiver  Rte_Read__()
  Rte_Read_ABS_Active_Get_ABS_Active(&ABS_Active);

  //Sender
  Rte_Write_PP_ABS_Active_ABS_Active(ABS_Active);

}

AUTOSAR-Ports的类型_第2张图片

对于C/S通信模式, 可分为同步(Synchronous) 和异步(Asynchronous) 两种模式

  1. 支持同步和异步调用,同步就是相当于B模块的函数嵌入到A模块函数后面调用,相当于A等B运行完,A再运行。异步就是A模块调用B模块,但是A模块自己本身还是可以继续运行的,相当于A和B同时开工,然后B运行完后,把结果返回给A
  2. 通信可以是1:1(1对1的调用)或者n:1(多对1的调用)

举例:代码中调用的API

{
   uint8 UDS_GetEventStatus = 0U;
   Rte_Call_CHNL1_Flog_CANVehicleBusOFF_DiagInfo_GetEventUdsStatus(&UDS_GetEventStatus);      
   Rte_Call_Aflog_CanFD_F_SRR0_Object_Header_S0_Absent_SetEventStatus(PASSED);

}

AUTOSAR-Ports的类型_第3张图片

你可能感兴趣的:(AUTOSAR,开发语言)