[AutoSar]基础部分 RTE 02 S/R Port 显式/隐式


  

关键词

嵌入式、C语言、autosar、EcuM、Rte

平台说明

项目Value
OSautosar OS
autosar厂商vector
芯片厂商TI
编程语言C,C++
编译器HighTec (GCC)

在这里插入图片描述

>>>>>回到总目录<<<<<<

一、显式(Explicit)和隐式(Implicit)

创建两种不同类型的port
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1 显式模式

1.1.1code

TASK(OsTask_10ms) /* PRQA S 3408, 1503 */ /* MD_Rte_3408, MD_MSR_Unreachable */
{

  /* call runnable */
  Runnable11(); /* PRQA S 2987 */ /* MD_Rte_2987 */

  (void)TerminateTask(); /* PRQA S 3417 */ /* MD_Rte_Os */
} /* PRQA S 6010, 6030, 6050, 6080 */ /* MD_MSR_STPTH, MD_MSR_STCYC, MD_MSR_STCAL, MD_MSR_STMIF */

读写均为操作中间变量,在runnable运行中可以被其他地方赋值改变此中间变量。

#  define Rte_Write_AsrTest_Send_Explicit_test1 Rte_Write_CpApServer_AsrTest_Send_Explicit_test1
#  define Rte_Write_CpApServer_AsrTest_Send_Explicit_test1(data) (Rte_CtApsever_AsrTest_Send_Explicit_test1 = (data), ((Std_ReturnType)RTE_E_OK))
#  define Rte_Write_AsrTest_Send_Explicit_test2 Rte_Write_CpApServer_AsrTest_Send_Explicit_test2
#  define Rte_Write_CpApServer_AsrTest_Send_Explicit_test2(data) (Rte_CtApsever_AsrTest_Send_Explicit_test2 = (data), ((Std_ReturnType)RTE_E_OK))

二、隐式模式

2.1 code

TASK(Appl_Task_10ms_OsCore3) /* PRQA S 3408, 1503 */ /* MD_Rte_3408, MD_MSR_Unreachable */
{
  EventMaskType ev;

  for(;;)
  {
    (void)WaitEvent(Rte_Ev_Cyclic2_Appl_Task_10ms_OsCore3_0_20ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_10ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_20ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_40ms); /* PRQA S 3417 */ /* MD_Rte_Os */
    (void)GetEvent(Appl_Task_10ms_OsCore3, &ev); /* PRQA S 3417 */ /* MD_Rte_Os */
    (void)ClearEvent(ev & (Rte_Ev_Cyclic2_Appl_Task_10ms_OsCore3_0_20ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_10ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_20ms | Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_40ms)); /* PRQA S 3417 */ /* MD_Rte_Os */

    if ((ev & Rte_Ev_Cyclic_Appl_Task_10ms_OsCore3_0_10ms) != (EventMaskType)0)
    {
      /* START PRE RUNNABLE Appl_Runnable10ms_core0 */
      /* read implicit data */
      *(&Rte_Appl_Task_10ms_OsCore3.Rte_RB.Rte_CtAp_Demo_Core0_Appl_Runnable10ms_core0.Rte_AsrTest_recive_Implicit_test1.value) = Rte_CtApsever_AsrTest_Send_Implicit_test1; /* PRQA S 1339, 2982 */ /* MD_Rte_1339, MD_Rte_2982 */
      *(&Rte_Appl_Task_10ms_OsCore3.Rte_RB.Rte_CtAp_Demo_Core0_Appl_Runnable10ms_core0.Rte_AsrTest_recive_Implicit_test2.value) = Rte_CtApsever_AsrTest_Send_Implicit_test2; /* PRQA S 1339, 2982 */ /* MD_Rte_1339, MD_Rte_2982 */
      /* STOP PRE RUNNABLE Appl_Runnable10ms_core0 */
      /* call runnable */
      Runnabletest_server(); /* PRQA S 2987 */ /* MD_Rte_2987 */(); /* PRQA S 2987 */ /* MD_Rte_2987 */
	}
}

在调用runnabl之前就把值从地址中直接取出,在runnable当前运行完毕之前不会被重新赋值。

三、区别

1.运行效率:因为显式会比隐式多一次拷贝操作,因此在效率上显示<隐式
2.读写一致性:因为显示在runnable运行途中值会被随时改变,因此在读写一致性上显示<隐式
3.实时性:参考第二条,在实时性上显示>隐式

>>>>>回到总目录<<<<<<

### 回答1: Autosar是汽车软件架构,分为两种通信方式:C/S和S/R。 C/S(Client/Server)模式是一种服务端模式,提供了一组API供客户端使用。客户端向服务端发送请求,并等待服务端返回结果。这种模式下,服务端需要提供完整的处理逻辑,能够处理客户端的请求并返回结果。客户端只需发送请求,无需关心具体实现。 S/R(Sender/Receiver)模式是一种消息传递模式,发送方通过发送消息,接收方通过接收消息进行通信。发送方和接收方之间没有固定的时序关系,当发送方产生数据时,可以直接发送给接收方。这种模式下,发送方只需要发送数据,无需关注接收方的处理逻辑;接收方只需要接收数据并处理,无需关注数据来自哪个发送方。 C/S模式适用于需要在服务端进行大量计算或处理的场景。客户端只需要协调好请求和结果的传递,服务端的实现逻辑被封装在服务端内部。S/R模式适用于需要实时传输数据的场景。数据可以实时传输,不需要等待固定的时序关系。 在汽车软件领域,C/S模式常用于ECU之间的通信,例如燃油泵模块向发动机控制模块发送请求;S/R模式常用于传感器和控制模块之间的通信,例如车速传感器向制动控制模块发送速度数据。 ### 回答2: Autosar是一种标准化的软件架构,旨在促进汽车电子系统的互操作性和可重用性,并允许跨功能域的有效通信和合作。Autosar C/S(Client/Server)和S/R(Sender/Receiver)是Autosar架构中两种不同类型的通信协议。 Autosar C/S协议是一种基于客户端/服务器模式的通信协议。在这种协议中,客户端和服务器分别是两个不同的软件组件,通过预定义的接口进行通信。客户端组件向服务器组件发送请求,请求可以是参数或者命令,服务器组件则根据请求返回相应的结果或者执行指定的操作。这种通信模式在Autosar架构中被广泛应用,使得不同组件之间的通信更加规范、可控和可靠。 Autosar S/R协议是一种基于发送者/接收者模式的通信协议。在这种协议中,发送者组件将数据发送到接收者组件,接收者组件从发送者组件处接收数据,并进行处理或者响应。这种通信模式通常用于异步通信场景,例如事件驱动的应用程序。Autosar S/R协议也是Autosar架构中的一种重要通信方式,它可以支持多个发送者同时向一个接收者发送数据,并且可以通过缓冲区或者队列来处理数据。 总之,Autosar C/S和S/R协议都是Autosar架构中重要的通信协议,它们分别适用于不同的通信场景,并且可以通过预定义的接口实现组件之间的规范化通信,从而提高汽车电子系统的互操作性和可重用性。 ### 回答3: Autosar是一种针对汽车领域的软件体系结构标准,其核心思想是将底层硬件与应用软件分离,通过统一的接口标准来实现不同层次软件间的通信。 在Autosar中,有两种常见的通信模式,分别是C/S和S/R。 C/S (Client/Server)通信模式是指通过定义请求和响应的方式来实现不同软件模块间的信息交互。其中,请求方称为客户端,提供响应的方称为服务器。客户端通过发送标准化的请求协议来获取服务端的响应,而服务器通过响应协议返回请求结果。C/S模式主要用于实时性要求不高,但对数据可靠性和安全性有较高要求的场合,例如车辆安全控制系统,发动机控制系统等。 S/R (Sender/Receiver)通信模式是指通过定义消息的方式来实现不同软件模块之间的信息传递。其中消息发送方被称为发送者,消息接收方被称为接收者。S/R模式主要用于实时性要求较高,但对数据安全性和可靠性要求相对较低的场合,例如车载娱乐系统等。 需要注意的是,C/S和S/R通信模式都是Autosar标准中的通信模式,而在具体的Autosar实现中,可能会因为厂商的不同而有所差异。同时,在不同汽车领域的具体应用中,也需要根据场景的不同来灵活运用这两种通信模式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老灰╮(╯-╰)╭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值