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

目录

  • 关键词
  • 平台说明
  • 一、显式(Explicit)和隐式(Implicit)
    • 1.1 显式模式
      • 1.1.1code
  • 二、隐式模式
    • 2.1 code
  • 三、区别

  

关键词

嵌入式、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.实时性:参考第二条,在实时性上显示>隐式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/289206.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ITIL® 4 Foundation​,12月23日即将开课~想了解点击查看

ITIL 4 Foundation即将开课~ 想报名的必须提前预约啦 &#x1f447;&#x1f447;&#x1f447; 培训地点&#xff1a; 远程直播&#xff1a;线上平台学习 开课时间&#xff1a; 周末班&#xff1a;12月23日、24日&#xff1b; 什么是ITIL&#xff1f; 信息技术基础架构…

Gin之GORM事务(转账操作)

禁用默认事务的操作 为了确保数据一致性,GORM 会在事务里执行写入操作(创建、更新、删除)。如果没有这方面的要求,您可以在初始化时禁用它,这将获得大约 30%+ 性能提升。 // 全局禁用 db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{SkipDef…

高并发神经网络推理部署

高并发的神经网络推理框架部署 highport 是一款封装神经网络推理的高并发的软件架构&#xff0c;已在ESWEEK 2023年皮肤病检测比赛中获得第一名。 这里记录一下highport的软件架构和几个trick优化 软件架构图 解密模块&#xff1a;我们训练完的模型文件是带加密的&#xff0c;…

AOSP 源码编译android 12

目录 一、python安装 a. python2安装 b. python3安装 二、repo管理多个git a.第一步, 新建一个空白文件夹保存repo引导文件,并包含你的路径 b.下载启动器 c.将git-repo中的repo文件复制到 1 创建的.bin目录中 d.修改权限 e. 执行版本检查 三、初始化工程 a.执行创建文件…

【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param

determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数&#xff0c;强烈建议…

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案

[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近&#xff0c;我在使用CSDN插件浏览 MOOC 网站时&#xff0c;遇到了一些网络故障。具体表现为&#xff1a; MOOC 中国大学慕课网&#xff1a;www.icourse163.org点击CSDN插件首页的 MOOC&#xff08…

实验:使用ADC读取烟雾传感器的值

CubeMX 配置 3.3/4096 * smoke_value 这个表达式的含义是将ADC的原始数值 smoke_valuesmoke_value 转换成相应的电压值&#xff0c;假设ADC的范围是0到4095&#xff0c;电源电压是3.3V。这是一个将ADC的数字值映射到实际电压值的线性转换。 具体来说&#xff1a; 3.33.3 是电…

diffusers-Inpainting

原文链接&#xff1a;添加链接描述 白色mask区域仅使用生成出来的&#xff0c;非白色mask区域使用原始影像&#xff0c;但是图像有点不平滑 import PIL import numpy as np import torchfrom diffusers import AutoPipelineForInpainting from diffusers.utils i…

Linux5.2、进程等待

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 进程等待的必要性 进程等待的方法 获取子进程status 进程等待的必要性 首先&#xff0c;子进程退出&#xff0c;如果父进程不去回收子进程资源&#xff0c;读取子进程的PCB&#xff0c;那么就会使子进程变成僵尸进程…

如何通过MT-Bench评估大模型

如何评估LLM在开放性问题的回答能力 前面三篇博客中介绍了如何评估大模型&#xff0c;内容包括评估大模型时常用的指标&#xff0c;每个指标背后的含义&#xff0c;如何通过编写代码实现指标的收集。对于passk指标&#xff0c;还进行了专门的说明。在前面的博客中&#xff0c;我…

如何使用 TailwindCSS 画一条0.5px的线条

背景 在移动端项目&#xff0c;一般为了让线条看起来更细、更锐利&#xff0c;此时使用0.5px的线条是非常合适的。那么如何使用TailwindCSS画一条0.5px的线条呢&#xff1f; 在实现这个需求的时候&#xff0c;首先去TailwindCSS官网查了一下border有没有对应的内置工具类&…

mysql:查看服务端为了处理连接而创建的线程数量

使用命令show global status like Threads_created;可以查看服务端为了处理连接而创建的线程数量。 例如&#xff1a;