当前位置: 首页 > news >正文

Autosar RTE实现观测量生成-基于ETAS软件

文章目录

    • 前言
    • 观测量定义
      • 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.dtcms.com/a/289752.html

相关文章:

  • [Python] -项目实践2- 用Python快速抓取网页内容(爬虫入门)
  • python网络爬虫小项目(爬取评论)超级简单
  • 阶段1--Linux中的计划任务
  • 调试Claude code的正确姿势
  • 类型混淆、越界写入漏洞
  • 基于单片机出租车计价器设计
  • 重塑优化建模与算法设计:2024上半年大模型(LLM)在优化领域的应用盘点
  • Java入门-【3】变量、字符串、条件、循环、数组的简单总结
  • python 字典中取值
  • SQL189 牛客直播各科目同时在线人数
  • MySQL事物相关
  • Logback简单使用
  • 什么是SEO关键词优化的实战提升指南?
  • 如何系统化掌握角色设计与提示工程的深度整合
  • 基于Event Sourcing和CQRS的微服务架构设计与实战
  • 第十四届全国大学生数学竞赛初赛试题(非数学专业类)
  • 零基础入门 AI 运维:Linux 部署全栈项目实战(MySQL+Nginx + 私有化大模型)
  • 论文解读:Rethinking vision transformer through human–object interaction detection
  • 西门子 S7-1500 系列 PLC CPU 选型全指南:从类型到实战
  • 搭建大模型
  • 新人加入团队后如何快速理解看板?
  • 地图经纬度与地图切片像素坐标换算类
  • 2.组合式API知识点(1)
  • imx6ull-系统移植篇11——U-Boot 移植(下)
  • 不只是“能用”:从语义化到 ARIA,打造“信息无障碍”Web 应用的实战清单
  • Python关于numpy的基础知识数组的升维
  • leetcode丑数II计算第n个丑数
  • 操作系统总结
  • dify创建OCR工作流
  • springboot-profile