AutoSAR系列讲解(入门篇)3.3-RTE对Ports的支撑(上)

news2024/9/23 19:17:21

目录

一、特征

1、扮演SWCs和BSW的交流途径

2、其他特征

二、S/R接口的不同方式

1、直接调用(Direct)

2、缓存调用(Buffered)

3、队列调用(Queued)

三、跨ECU的方式


一、特征

1、扮演SWCs和BSW的交流途径

还是老生常谈的那么几点:

  • 作为VFB的具体实现
  • 作为S/R接口的通信实现
  • 作为C/S接口的通信实现
  • ECU内部通信/跨ECU(通过COM)
  • 实现AR-COM的回调功能,具体实现是在SWC中完成的,RTE负责完成这个回调机制

2、其他特征

  • 提供了实现数据一致性的机制(所谓的数据一致性,就是说简单一点:当多个SWC同时操作同一个数据时,可能会发生一些不想看到的问题,数 据一致性要求不能发生这些问题)
  • 支持简单和复杂的数据类型
  • 对SWC类型(SWC type,和SWC不同,SWC type是指SWC的一个类型,用这个类型可以实例化一个SWC,就好像用int这个类型实例化一个count一样)的实例化

二、S/R接口的不同方式

以下调用,在配置好Davinci后,是会自动生成到runnable上方的,可以直接复制。比如我复制了一段DaVinci生成的SWC中的代码,可以看到,其中 的 Rte_ 的函数都是列出来在runnable上方的

/********************************************************************************************************************** 
 * 
 * Runnable Entity Name: RAB_Core0_100us 
 * 
 *--------------------------------------------------------------------------------------------------------------------- 
 * 
 * Executed if at least one of the following trigger conditions occurred: 
 * - triggered on TimingEvent every 100us 
 * 
 ********************************************************************************************************************** 
 * 
 * Input Interfaces: 
 * ================= 
 * Explicit S/R API: 
 * ----------------- 
 * Std_ReturnType Rte_Read_AppPI_Can_ReceiverCore0_DEP_Can_Receiver(Idt_Can_Receiver *data) 
 * 
 * Output Interfaces: 
 * ================== 
 * Explicit S/R API: 
 * ----------------- 
 * Std_ReturnType Rte_Write_AppPI_Can_SenderCore0_DEP_Can_Sender(Idt_Can_Sender data, Rte_TransformerError *transformerError) 
 * 
 * Service Calls: 
 * ============== 
 * Service Invocation: 
 * ------------------- 
 * Std_ReturnType Rte_Call_ComM_UserRequest_GetCurrentComMode(ComM_ModeType *ComMode) 
 * Synchronous Service Invocation. Timeout: None 
 * Returned Application Errors: RTE_E_ComM_UserRequest_E_NOT_OK 
 * Std_ReturnType Rte_Call_ComM_UserRequest_GetMaxComMode(ComM_ModeType *ComMode) 
 * Synchronous Service Invocation. Timeout: None 
 * Returned Application Errors: RTE_E_ComM_UserRequest_E_NOT_OK 
 * Std_ReturnType Rte_Call_ComM_UserRequest_GetRequestedComMode(ComM_ModeType *ComMode) 
 * Synchronous Service Invocation. Timeout: None 
 * Returned Application Errors: RTE_E_ComM_UserRequest_E_NOT_OK 
 * Std_ReturnType Rte_Call_ComM_UserRequest_RequestComMode(ComM_ModeType ComMode) 
 * Synchronous Service Invocation. Timeout: None 
 * Returned Application Errors: RTE_E_ComM_UserRequest_E_MODE_LIMITATION, RTE_E_ComM_UserRequest_E_NOT_OK 
 * 
 *********************************************************************************************************************/ 
 /********************************************************************************************************************** 
 * DO NOT CHANGE THIS COMMENT! << Start of documentation area >> DO NOT CHANGE THIS COMMENT! 
 * Symbol: RAB_Core0_100us_doc 
 *********************************************************************************************************************/ 
 
 
 /********************************************************************************************************************** 
 * DO NOT CHANGE THIS COMMENT! << End of documentation area >> DO NOT CHANGE THIS COMMENT! 
 *********************************************************************************************************************/ 
 
 FUNC(void, SWCCore0Basic_Type_CODE) RAB_Core0_100us(void) /* PRQA S 0850 */ /* MD_MSR_19.8 */ 
 { 
 /********************************************************************************************************************** 
 * DO NOT CHANGE THIS COMMENT! << Start of runnable implementation >> DO NOT CHANGE THIS COMMENT! 
 * Symbol: RAB_Core0_100us 
 *********************************************************************************************************************/ 
 
 
 /********************************************************************************************************************** 
 * DO NOT CHANGE THIS COMMENT! << End of runnable implementation >> DO NOT CHANGE THIS COMMENT! 
 *********************************************************************************************************************/ 
 }

1、直接调用(Direct)

相当于有一个全局变量,runnable可以直接读写这个变量用的是下面的语法:

 

(注意 和 data 的区别,带<>的是指全局data的名字,不带<>的data是局部变量的名字,这里使用指针,就是说操作的是 同一个地址,没有复制使用;同时,这些函数都是在runnable中使用的,不要看是Rte,就以为是RTE中的代码,因为调用的是RTE的机制,所以这 里是Rte)

Std_ReturnType Rte_Read_port>_data> (DataType> *data)

Std_ReturnType Rte_Write_port>_data> (DataType> data)

2、缓存调用(Buffered)

相当于将全局变量先复制到一个runnable的局部变量中,再操作这个局部变量,最后把这个局部变量再赋值到全局变量中。在runnable操作这个局部 变量期间,全局变量是不会改变的。

 

使用方法如下:(都是由RTE管理的,用户只需要正确调用函数就ok)

DataType> Rte_IRead_r>_port>_data> (void)

void Rte_IWrite_r>_port>_data> (DataType> data)

3、队列调用(Queued)

因为数据不止一个,是一组队列的数据,就像我们常用的串口FIFO。因此,可以设置循环接收或者等待接收,等待的话是有超时管理的。

 

调用代码如下:

Std_ReturnType Rte_Receive_port>_data> (DataType> *data)

Std_ReturnType Rte_Send_port>_data> (DataType> data)

三、跨ECU的方式

假如是跨ECU的数据传输。那么,我在runnable中使用 Rte_Write_<port>_<Data>()这样的函数后,会需要走runnable

(ECU1) ->RTE (ECU1) ->BSW (ECU1) ->外部总线->BSW (ECU2)

->RTE (ECU2) ->runnable (ECU2)

,这里也列出了用于COM传输的两个函数名:

Com_SendSignal()

Com_ReceiveSignal()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析入门-SARIMA模型案例分析(超详细)

由于代码中注释已经非常的清晰&#xff0c;文章中就不过多叙述了&#xff0c;直接上代码。 代码如下: # 在开始之前先导入所需要的包import warnings # do not disturbe mode warnings.filterwarnings(ignore)import numpy as np …

ChatGPT批量生成文章软件:创意无限,智能驱动文章

随着人工智能技术的不断发展&#xff0c;ChatGPT批量生成文章软件成为了当今互联网世界中备受瞩目的创新之一。作为一种基于大规模预训练语言模型的自然语言处理工具&#xff0c;ChatGPT能够以人类般的方式与用户进行对话&#xff0c;并且能够生成高质量的文章。这一技术的出现…

【LLMs系列】没钱玩GPT-4?来试试Mini-GPT4吧!

一、MiniGPT-4尝鲜 还在苦苦等待GPT-4开放&#xff1f;开源项目MiniGPT-4就能提前体验类似GPT-4的多模态对话功能。 2023年4月17日&#xff0c;多模态问答模型MiniGPT-4发布&#xff0c;实现了GPT-4里的宣传效果 《MiniGPT-4: Enhancing Vision-language Understanding with …

GDB常用调试方法及其底层原理

本文分为两个大模块&#xff0c;第一部分记录下本人常用到的GDB的调试方法和技巧&#xff0c;第二部分则尝试分析GDB调试的底层原理。 一、GDB调试 要让程序能被调试&#xff0c;首先得编译成debug版本&#xff0c;当然release版本的也能通过导入符号表来实现调试&#xff0c…

Centos7下tensorflow 2.12无法找到NVIDIA Tesla T4 GPU终极解决方法

目录 背景 系统信息 GPU信息 关键软件信息 问题现象 原因分析

解决element-ui消息提示$message重叠问题

在进行表单校验的时候&#xff0c;当触发两个提示消息的时候会出现上面的叠加情况&#xff0c;没有将提示消息分开显示&#xff0c;这样就给用户造成不好的视觉效果 我们的预期效果是达到上面的显示效果&#xff0c;就是在进行提示的时候&#xff0c;如果叠加就需分开显示&…

Centos8同步时间(阿里云NTP服务为例)

一、安装chrony sudo dnf install chrony二、使用 sed 命令一键完成配置 #pool 2.centos.pool.ntp.org iburst给这一行加注释 sudo sed -i s/^pool 2.centos.pool.ntp.org iburst/#&/ /etc/chrony.conf #添加3个阿里云NTP服务器 echo -e "server ntp1.aliyun.com ib…

withContext CoroutineScope协程切换,kotlin

withContext CoroutineScope协程切换&#xff0c;kotlin <dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-coroutines-core</artifactId><version>1.4.2</version></dependency> import kotlinx.co…

python 上传包到pypi

参考 https://www.jianshu.com/p/81fe5a5cd27a 1.打包 在pypi注册账号&#xff0c;并新建token 需要在用户下创建一个.pypirc文件。username__ token __ 是固定的&#xff0c;password 填入刚刚的token。 使用下面两个命令把dist中文件推送到pypi python setup.py sdist…

AI读心重磅突破登Nature!AI破译大脑信号

近日&#xff0c;洛桑联邦理工学院团队在Nature上提出了一种名为CEBRA的可实现AI读脑的最新算法&#xff0c;以高精度捕捉到了动物大脑的动态。 利用AI&#xff0c;一个研究团队「看见」了老鼠眼中的电影世界。更神奇的是&#xff0c;这种机器学习算法&#xff0c;还能揭示大脑…

【以太坊】本地搭建以太坊测试网络,部署合约

文章目录 工具建议参考测试 工具 Ganache 建议 推荐使用 Ganache 搭建&#xff0c;简单易上手 参考 https://www.npmjs.com/package/ganache 测试 npm install ganache --global && ganache --help ganache

[230609] 阅读TPO57汇总|9:30-10:50

TPO57 01 Pests and Pesticides [3]修辞目的题 修辞目的题做题技巧&#xff1a;找观点&#xff01;不能推理&#xff01;一般找例子前后的观点&#xff01; P3段 段意即观点&#xff0c;观点在段首或段尾&#xff01; 考察比较的作用 主要理解In other words后面的话&#…

新老版本AndroidStudio删除无用资源方法总结

今年AndroidStudio版本更新比较快&#xff0c;一些常用的功能都在变化&#xff0c;其中删除项目中无用资源变化的有点大&#xff0c;特在此记录总结下。这里所说的新老版本的Android Studio其实就是看Android Studio最上面有没有&#xff1a;Anaylze 老版本是有的 新版本这个…

SeaTunnel 发布成为 Apache 顶级项目后首个版本 2.3.2,进一步提高 Zeta 引擎稳定性和易用性

近日&#xff0c;Apache SeaTunnel 正式发布 2.3.2 版本。此时距离上一版本 2.3.1 发布已有两个多月&#xff0c;期间我们收集并根据用户和开发者的反馈&#xff0c;在 2.3.2 版本中对 SeaTunnel Zeta Engine 进行了 Bug 修复&#xff0c;提高了引擎的稳定性和使用效率。 此外&…

【Java】Java核心 74:XML (下)

文章目录 **7** **Schema约束(能够看懂即可)****1** **书写schema约束****2** **在xml文件中引入schema约束** 7 Schema约束(能够看懂即可) 与dtd约束一样&#xff0c;schema它也是用来约束xml文件的。schema约束书写的时候&#xff0c;它遵守xml的语法规则。在书写schema的时…

vb.net 正则表达式解析一些奇奇怪怪的文件名为时间类型

Public Function 正则表达式A(f As String) As Date2023-02-06 1653830If New Regex("\d{4}.\d{2}.\d{2}.\d{6}").IsMatch(f) ThenDim nian Strings.Mid(f, 1, 4)Dim yue Strings.Mid(f, 6, 2)Dim ri Strings.Mid(f, 9, 2)Dim shi Strings.Mid(f, 12, 2)Dim feng…

什么是编程语言?||与编程相关的计算机硬件介绍

什么是编程语言&#xff1f; 学习编程语言之前&#xff0c;首先要搞清楚“编程语言”这个概念。 很小的时候&#xff0c;父母就教我们开口说话&#xff0c;也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习&#xff0c;我们竟然在不知不觉中学会了说话&#xff0c…

【从零开始学习JAVA | 第二十二篇】BigInteger

目录 前言&#xff1a; BigInterger&#xff1a; BigInteger常见的方法&#xff1a; 总结&#xff1a; 前言&#xff1a; 本篇我们将介绍BigInteger这个比较实用一点的API&#xff0c;这个API在我们实际写项目中都是很实用的API&#xff0c;因此大家应该对这个API有更加熟练的…

sublime text 打开 txt 文档乱码问题

对于 windows 系统使用系统自带的 txt 编辑工具&#xff0c;默认打开和保存文件的文件的格式是 GBK 或者 GB2312&#xff0c;而 sublime 默认仅支持 utf-8&#xff0c;所以当从 windows 系统拷贝文件在 mac 上浏览有时候会出现乱码的问题&#xff0c;这时候就需要安装插件使 su…

RDBMS 与 非RDBMS

RDBMS vs 非RDBMS 前言一、关系型数据库(RDBMS)1、实质2、优势 二、非关系型数据库(非RDBMS)1、介绍2、有哪些非关系型数据库3、NoSQL的演变4、小结 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注博主&#xff01;…