文章目录

    • 前言
    • 观测量定义
      • arTypedPerInstanceMemory
      • Ports Measurable
    • 工具链配置及使用
      • Port中的配置
      • arTypedPerInstanceMemory观测量
    • 生成文件分析
    • 总结

前言

之前我们在XCP中,对于标定量和观测量并没有严格按照Autosar标准中定义,Autosar RTE中对标定量和观测量都有对应的定义,本文基于标准介绍观测量在ETAS软件中的实现。

观测量定义

RTE中提供几种观测的方式:

  1. communication between Ports Measurable are
    • VariableDataPrototypes of a SenderReceiverInterface used in
    a PortPrototype (of a SwComponentPrototype) to capture sender receiver communication or between SwComponentPrototypes
    • VariableDataPrototypes of a NvDataInterface used in a PortPrototype (of a SwComponentPrototype) to capture non volatile data communication or between SwComponentPrototypes
    • ArgumentDataPrototypes of an ClientServerOperation in a ClientServerInterface to capture client-server communication between SwComponentPrototypes
  2. communication inside of AUTOSAR SW-Cs Measurable are implicitInterRunnableVariable, explicitInterRunnableVariable or arTypedPerInstanceMemory
  3. data structures inside a AUTOSAR NvBlockSwComponent Measurable are ramBlocks and romBlocks of a NvBlockSwComponent’s NvBlock
  4. Communication inside of AUTOSAR Basic Software Modules Measurable are VariableDataPrototypes defined in role of arTypedPerInstanceMemory.

主要就是:
1.SWC中的Port可以作为观测量,CS接口中的参数可以作为观测量

2.SWC内部也可以定义观测量

3.Nvmblock也可以作为观测量

4.BSW模块中的通信变量也可以作为观测量

观测量定义需要在SwDataDefProps中配置swCalibrationAccess,规范原文如下:
在这里插入图片描述
只有配置为readOnly or readWrite的才能作为观测量,否则会被忽略作为观测量

注意:作为观测量后,会生成对应的变量信息到Rte_McSupportData.arxml中以便后面生成a2l

arTypedPerInstanceMemory

该内存定义是ETAS推荐的观测量定义方式,标准中描述如下:在这里插入图片描述
这种方式定义的Memory需要在SwcInternalBehavior中配置

该方式定义的内存需要配置对应的数据类型,实际访问时通过Rte_Pim接口访问在这里插入图片描述
该类型生成的Rte_Pim接口为Rte_Pim_<name>

Ports Measurable

以SenderReceiverInterface为例,只需要设置对应Port中的VariableDataPrototypes中的swCalibrationAccess即可

工具链配置及使用

Port中的配置

对于SenderReceiverInterface的Port,需要配置对应的swCalibrationAccess在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
配置好后即可作为观测量使用

arTypedPerInstanceMemory观测量

需要在InternalBehaviors中配置arTypedPerInstanceMemory
在这里插入图片描述
设置对应Type中的swCalibrationAccess
在这里插入图片描述
需要注意的是:由于设置swCalibrationAccess是针对于ImplementationDataTpye的,如果多个Port引用了同一个ImplementationDataTpye,则可能会出现不期望观测的变量或者不存在的变量做为观测量出现。

配置好后,需要进行EcuExtract,然后生成RTE

生成文件分析

对于Port中的观测量来说,之前已经有了对应的变量,现在只是生成对应的a2l所需的信息到Rte_McSupportData.arxml中

                           <MC-DATA-INSTANCE><!--This is Sender-Receiver DataItem /Interfaces/ETAS_SenderReceiverInterface_sint8/sint8 in port /ETAS_BIP/INP_SWC/PP_Bsw_AmbTemp on Application Software Component Instance /SUM_FlatView/SwComponentTypes/SUM_FlatView/CPT_INP_SWC--><!--Reported because the data prototype is marked as measurable and is referenced by a FlatInstanceDescriptor and RTE measurement support is enabled--><SHORT-NAME>sint8</SHORT-NAME><LONG-NAME><L-4 L="EN">signed integer 8bit</L-4></LONG-NAME><CATEGORY>VALUE</CATEGORY><ADMIN-DATA><SDGS><SDG GID="ETAS-RTARTE"><SD GID="MC-DATA-CLASS">DATA-ITEM</SD></SDG></SDGS></ADMIN-DATA><FLAT-MAP-ENTRY-REF DEST="FLAT-INSTANCE-DESCRIPTOR">/SUM_FlatView/SUM_FlatMap/sint8</FLAT-MAP-ENTRY-REF><RESULTING-PROPERTIES><SW-DATA-DEF-PROPS-VARIANTS><SW-DATA-DEF-PROPS-CONDITIONAL><BASE-TYPE-REF BASE="Rte_MCSD_SwBaseTypes" DEST="SW-BASE-TYPE">AUTOSAR_PlatformTypes_SwBaseTypes_sint8</BASE-TYPE-REF><SW-CALIBRATION-ACCESS>READ-ONLY</SW-CALIBRATION-ACCESS><SW-REFRESH-TIMING><CSE-CODE>4</CSE-CODE><CSE-CODE-FACTOR>1</CSE-CODE-FACTOR></SW-REFRESH-TIMING></SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-VARIANTS></RESULTING-PROPERTIES><SYMBOL>Rte_Ms_000042</SYMBOL></MC-DATA-INSTANCE>

例如,此处关联的变量为Rte_Ms_000042,后面会通过该文件生成a2l

对于arTypedPerInstanceMemory观测量,生成的代码示例如下:

#define RTE_START_SEC_EcucPartition_ComCore_VAR_CLEARED_32
#include "Rte_MemMap.h"
VAR(uint32, RTE_APPL_DATA) Rte_ArPim_INP_SWC_TestMea;
#define RTE_STOP_SEC_EcucPartition_ComCore_VAR_CLEARED_32
#include "Rte_MemMap.h"

对应变量的命名为Rte_ArPim_+SWC名+定义的变量名

对应的SWC的RTE头文件中,生成了对应的接口函数

#define Rte_Pim_TestMea()  ( (P2VAR(uint32, AUTOMATIC, RTE_APPL_DATA)) &Rte_ArPim_INP_SWC_TestMea )

后面在SWC中通过Rte_Pim_TestMea访问变量的地址,进而访问其中的数据

示例访问如下:

uint32* Pim_TestMea;
Pim_TestMea = Rte_Pim_TestMea();

生成的a2l信息如下:

                           <MC-DATA-INSTANCE><!--This is ArTyped Per-Instance Memory /ETAS_BIP/INP_SWC/IB_INP_SWC/TestMea on Application Software Component Instance /SUM_FlatView/SwComponentTypes/SUM_FlatView/CPT_INP_SWC--><!--Reported because the ArTyped PIM is marked as measurable and RTE measurement support is enabled--><SHORT-NAME>TestMea</SHORT-NAME><LONG-NAME><L-4 L="EN">unsigned integer 32bit</L-4></LONG-NAME><CATEGORY>VALUE</CATEGORY><ADMIN-DATA><SDGS><SDG GID="ETAS-RTARTE"><SD GID="MC-DATA-CLASS">AR-TYPED-PER-INSTANCE-MEMORY</SD></SDG></SDGS></ADMIN-DATA><FLAT-MAP-ENTRY-REF DEST="FLAT-INSTANCE-DESCRIPTOR">/SUM_FlatView/SUM_FlatMap/TestMea</FLAT-MAP-ENTRY-REF><RESULTING-PROPERTIES><SW-DATA-DEF-PROPS-VARIANTS><SW-DATA-DEF-PROPS-CONDITIONAL><BASE-TYPE-REF BASE="Rte_MCSD_SwBaseTypes" DEST="SW-BASE-TYPE">AUTOSAR_Platform_BaseTypes_uint32</BASE-TYPE-REF><SW-CALIBRATION-ACCESS>READ-ONLY</SW-CALIBRATION-ACCESS><SW-REFRESH-TIMING><CSE-CODE>1000</CSE-CODE><CSE-CODE-FACTOR>1</CSE-CODE-FACTOR></SW-REFRESH-TIMING></SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-VARIANTS></RESULTING-PROPERTIES><SYMBOL>Rte_ArPim_INP_SWC_TestMea</SYMBOL></MC-DATA-INSTANCE>

后面可以通过RTA-A2L工具将Rte_McSupportData.arxml中的变量生成到a2l中,然后就是更新a2l中的地址信息了。

生成的a2l MEASUREMENT 示例如下:
···
/begin MEASUREMENT Rte_ArPim_INP_SWC_TestMea
“unsigned integer 32bit”
ULONG
NO_COMPU_METHOD
0
0
0
4294967295
DISPLAY_IDENTIFIER TestMea
ECU_ADDRESS 0x00000000
MAX_REFRESH 1000
1
/end MEASUREMENT
···

总结

通过Autosar工具链的方式,可以自动生成对应的A2L信息,但开发过程中很多时候都会加一些全局变量来调试,一般手动添加一次a2l,也不会有太大的工作量,反而用工具生成可能更加麻烦一些。对于应用层开发有大量观测量的,可以使用Simulink来生成对应的a2l信息~

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

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

相关文章

【REACT18.x】creat-react-app在添加eslint时报错Environment key “jest/globals“ is unknown

今天在创建新项目的时候&#xff0c;给cra创建的项目添加eslint支持&#xff0c;出现如下报错 添加eslint npx eslint --init页面报错 Compiled with problems:ERROR [eslint] package.json eslint-config-react-app/jest#overrides[0]:Environment key "jest/globals&…

Linux的例行性工作 -- (练习)

1、atd和crond两个任务管理程序的区别 答&#xff1a; atd 专为一次性任务设计&#xff0c;允许用户在特定未来时间点&#xff08;绝对或相对时间&#xff09;执行单次命令后就结束。 crond 则是周期性任务的调度核心&#xff0c;通过配置文件&#xff08;crontab&#xff09;实…

《Java语言程序设计》1.6 复习题

1.6.1 什么是Java语言规范?计算机有严格的使用规则。如果编写程序时没有遵循这些规则&#xff0c;计算机就不能理解程序。Java语言规范和Java API定义了Java的标准。Java语言规范(Java language specification)是对Java程序设计语言的语法和语义的技术定义。应用程序接口(Appl…

【机器学习深度学习】什么是量化?

目录 前言 一、量化的基本概念 1.1 量化对比示例 1.2 量化是如何实现的&#xff1f; 二、为什么要进行量化&#xff1f; 2.1 解决模型体积过大问题 2.2 降低对算力的依赖 2.3 加速模型训练和推理 2.4 优化训练过程 2.5 降低部署成本 小结&#xff1a;量化的应用场…

告别 T+1!解密金融级实时数据平台的构建与实践

在数字金融浪潮下&#xff0c;数据处理的“实时性”已不再是加分项&#xff0c;而是逐渐成为决定业务价值的核心竞争力。然而&#xff0c;金融机构在追求实时的道路上&#xff0c;往往陷入一个新的困境&#xff1a;实时分析系统与离线大数据平台形成了两套独立的“烟囱”&#…

[Python] -项目实战7- 用Python和Tkinter做一个图形界面小游戏

一、为什么从小游戏入门GUI? 趣味性强:小游戏直观、有趣,一学就上手。 系统掌握事件驱动:了解按钮点击、键盘响应、图形刷新机制。 扎实基础:为日后构建更复杂应用奠定 GUI 编程基础。 二、选定游戏:猜数字小游戏 🎯 这个小游戏界面简单,核心机制是:3 个按钮分别…

【18】MFC入门到精通——MFC(VS2019)+ OpenCV 显示图片的3种方法

MFC (VS2019)+ OpenCV,显示图片的3种方法 1 方法介绍 2 方法一:嵌套OpenCV窗口显示图片 2.1 建立供工程 添加控件 2.2 引用头文件 2.3 找到OnInitDialog()函数,在其中添加如下代码 2.4 在button触发函数中加入代码(就是你双击button进入的函数) 2.5 注意事项 3 方法二:…

以“融合进化 智领未来”之名,金仓Kingbase FlySync:国产数据库技术的突破与创新

目录开篇&#xff1a;国产数据库的历史性跨越一、KFS 产品定位及发展历程回顾1.1 Kingbase FlySync 发展1.2 Kingbase FlySync与Oracle GoldenGate的对比分析1.2.1 Kingbase FlySync 功能优势1.2.2 技术架构对比1.2.3 性能与扩展性二、数字化时代的新挑战2.1 决策实时性要求越来…

服务器配置错误漏洞

文章目录一、文件解析漏洞1.Apache HTTPD多后缀解析漏洞二、目录遍历漏洞1.Apache目录遍历漏洞2.Nginx目录穿越漏洞服务器配置错误漏洞指因服务器&#xff08;含系统、Web服务、数据库等&#xff09;的参数设置、权限分配、组件配置等不当&#xff0c;导致的安全问题&#xff0…

大模型预测输尿管上段结石技术方案大纲

目录 1. 术前阶段 2. 术中阶段 3. 术后阶段 4. 并发症风险预测 5. 根据预测定手术方案 6. 麻醉方案 7. 术后护理 8. 统计分析 9. 技术验证方法 10. 实验证据 11. 健康教育与指导 12. 完整术方案流程图(Mermaid) 1. 术前阶段 步骤 关键要素 可编辑字段 1.1 影像采集 CT-IVU / …

docker compose 编排容器 mysql Springboot应用

写一个docker-compose.yml文件 内容如下&#xff1a; services:db:image: "docker.xuanyuan.me/library/mysql:8.3.0"restart: unless-stoppedhostname: dbports:- "3306:3306"container_name: mysqlenvironment:- "MYSQL_ROOT_PASSWORD1234"m…

React 中 props 的最常用用法精选+useContext

✅ React 最常用 props 用法 10 例✅ 1. 传递字符串 / 数字 / 布尔值function UserCard({ name, age, isVip }) {return (<div>{name} - {age} - {isVip ? VIP : 普通用户}</div>); }<UserCard name"张三" age{18} isVip{true} />✅ 2. 传递函数&…

离散型制造企业的可视化破局:设备OEE动态看板与工艺路径模拟实践

内容摘要离散型制造企业面临着设备效率低下、生产过程不透明、工艺路径复杂等诸多挑战。如何通过可视化手段提升设备效率和生产透明度&#xff0c;成为企业亟待解决的问题。设备整体效率&#xff08;OEE&#xff09;动态看板和工艺路径模拟是两个关键的可视化工具&#xff0c;能…

在Tailwind Css中如何书写flex布局

仅供参考 文章目录一、启用 flex 布局二、行内 flex 布局三、方向控制四、对齐方式五、子元素控制1、控制子元素的宽度是否可伸缩2、控制子元素顺序3、控制子元素间的间隙4、控制子元素是否可换行显示一、启用 flex 布局 设置 class“flex” 启用 flex 布局 <template>…

交通出行大前端与 AI 融合:智能导航与出行预测

交通出行类大前端应用&#xff08;导航APP、打车软件、公交地铁小程序等&#xff09;是连接用户与出行服务的核心载体&#xff0c;其核心价值在于“高效规划路径、精准规避拥堵、适配个性化需求”。传统导航依赖固定规则&#xff08;如“最短路径优先”&#xff09;和历史数据&…

csc(x)积分推导

在MATLAB中同时绘制 sin⁡(x), csc(x) 和 ln⁡∣tan⁡(x/2)∣的函数图像&#xff0c;需要处理函数的奇点&#xff08;如 csc⁡(x) 在 sin⁡(x)0 时无定义&#xff0c;ln⁡∣tan⁡(x/2)∣ 在 xkπ 时无定义&#xff09;&#xff08;deepseek生成matlab代码&#xff09;% 定义x范…

rtsp协议之.c++实现,rtsp,rtp协议框架,模拟多路音视频h264,265,aac,数据帧传输,接收(二)

rtsp协议之.c实现&#xff0c;rtsp&#xff0c;rtp协议框架&#xff0c;模拟多路音视频h264&#xff0c;265&#xff0c;aac&#xff0c;数据帧传输&#xff0c;接收&#xff08;二&#xff09; 1、RTSP 服务器核心&#xff1a;处理 RTSP 会话管理、请求解析和响应生成 2、媒体…

网络性能与应用性能的协同优化研究:基于小波变换与CNN的图像分类系统

网络性能与应用性能的协同优化研究&#xff1a;基于小波变换与CNN的图像分类系统 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 摘要 本文研究了网络性能&#xff08;延迟、带宽、丢…

【网络安全领域】CTF竞赛指南:赛事详解、热门平台与信息获取方式

CTF&#xff08;Capture The Flag&#xff09;&#xff0c;中文称为夺旗赛&#xff0c;是网络安全领域中一种备受关注和欢迎的竞赛形式。以下是关于 CTF 竞赛的详细介绍&#xff0c;以及一些参赛平台和相关咨询途径&#xff1a; CTF 竞赛详解 起源&#xff1a;CTF 起源于 199…

进程(以及系统调用和库函数概念)

计算机管理硬件&#xff1a;先去组织起来再去描述起来&#xff08;类比先去组织小组&#xff0c;再去详细描述工作&#xff09;系统调用和库函数概念&#xff1a;系统就像是银行&#xff0c;会去防着我们&#xff0c;但是会释放一些接口用于我们使用&#xff0c;这个就是叫做系…