AUTOSAR Transformer 详解

基于AUTOSAR 4.4.0标准的Transformer模块分析与说明

目录

  • 1. Transformer概述
    • 1.1 Transformer的作用
    • 1.2 Transformer的基本特性
  • 2. Transformer架构
    • 2.1 整体架构
    • 2.2 类层次结构
  • 3. Transformer类型
    • 3.1 SOME/IP Transformer
    • 3.2 COM Based Transformer
  • 4. Transformer处理流程
    • 4.1 SOME/IP Transformer处理流程
  • 5. 总结

1. Transformer概述

1.1 Transformer的作用

Transformer是AUTOSAR中基础软件服务层的重要组件,主要作用是对数据进行转换处理。根据SRS_Xfrm_00001的要求,Transformer负责接收来自RTE(运行时环境)的数据,对数据进行处理后,将结果返回给RTE。Transformer可以执行以下两类主要操作:

  • 序列化/线性化数据:将结构化数据转换为线性形式
  • 转换数据:修改或扩展线性数据,例如添加校验和

Transformer作为系统服务集群中的BSW(基础软件)模块,为RTE提供服务。它们由RTE调用执行,并可以保持内部状态,但也可以工作为无状态组件。

1.2 Transformer的基本特性

根据AUTOSAR SRS对Transformer的规范要求,所有Transformer应具备以下基本特性:

  • 固定接口:提供标准化接口供RTE调用(SRS_Xfrm_00002)
  • 缓冲机制:支持就地(in-place)和复制(copy)缓冲机制(SRS_Xfrm_00003)
  • 错误处理:支持将错误返回给RTE(SRS_Xfrm_00004)
  • 数据兼容性:能够处理比预期更多的数据(SRS_Xfrm_00005)
  • 并发执行:支持并发执行(SRS_Xfrm_00006)
  • 数据提取:反序列化转换器支持提取数据子集(SRS_Xfrm_00007)
  • 输出格式规范:明确指定其输出数据格式(SRS_Xfrm_00008)
  • 类别归属:每个Transformer属于特定的Transformer类(SRS_Xfrm_00011)

此外,Transformer可以组成转换器链,由RTE按照指定顺序调用链中的转换器。这种配置在系统模板中完成,转换器链的最大长度限制为255个转换器。


2. Transformer架构

2.1 整体架构

下图展示了AUTOSAR中Transformer的整体架构,包括其在AUTOSAR分层架构中的位置以及与其他组件的关系:

在这里插入图片描述

从图中可以看出,Transformer位于AUTOSAR架构的基础软件服务层,主要负责连接应用层的软件组件与通信服务层的各种通信模块。架构的关键组成部分包括:

  • 应用层:包含软件组件(SWC),是数据的最终来源和目的地
  • RTE层:包含运行时环境和Transformer管理器,负责协调Transformer的执行
  • 基础软件服务层
    • Transformer类:包括COM Based Transformer、SOME/IP Transformer和其他类型的Transformer
    • 通信服务:包括COM模块和SOME/IP堆栈等,负责底层通信实现

Transformer管理器是RTE的一部分,负责按配置顺序调用Transformer链、处理错误返回以及协调并发执行。所有Transformer都提供标准化接口,支持就地和复制缓冲、错误处理及并发执行。

2.2 类层次结构

下图展示了AUTOSAR中Transformer的类层次结构:

在这里插入图片描述

该图描述了Transformer的基类和派生类的层次关系:

  • Transformer基类:定义了所有Transformer必须实现的接口和功能要求(SRS_Xfrm_00001 - SRS_Xfrm_00011),包括:

    • 提供固定接口
    • 执行转换
    • 支持错误处理
    • 支持in-place/copy缓冲
    • 处理超长数据
    • 支持并发执行
    • 指定输出格式
    • 提供抽象错误集合
  • 派生类

    • SOME/IP Transformer:提供SOME/IP协议相关功能(SRS_Xfrm_00101 - SRS_Xfrm_00106)
    • COM Based Transformer:提供COM模块相关功能(SRS_Xfrm_00201 - SRS_Xfrm_00202)
    • 其他Transformer类型:提供其他特定功能

根据SRS_Xfrm_00009和SRS_Xfrm_00011的要求,AUTOSAR中存在固定的Transformer类集合,每个Transformer必须属于特定的Transformer类,同时每个类提供一组固定的抽象错误集合。


3. Transformer类型

3.1 SOME/IP Transformer

SOME/IP Transformer(可扩展面向服务中间件/IP)是一种专门处理SOME/IP协议通信的转换器。根据SRS_Xfrm_00101到SRS_Xfrm_00106的要求,SOME/IP Transformer提供以下功能:

  1. 数据序列化:将原子和结构化数据元素序列化为线性数组(SRS_Xfrm_00101)
  2. 通信协议:定义ECU间客户端/服务器通信的协议(SRS_Xfrm_00102)
  3. 异常通知:支持应用程序的异常通知(SRS_Xfrm_00103)
  4. 错误处理:支持服务器端客户端/服务器通信的自主错误反应(SRS_Xfrm_00105)
  5. 扩展数据支持:支持具有标记成员/参数的可扩展数据结构和方法的序列化(SRS_Xfrm_00106)

SOME/IP Transformer的创建动机是为了满足嵌入式环境中的资源消耗需求,同时兼容各种用例和通信伙伴,可以在不同的操作系统(AUTOSAR、GENIVI、OSEK)上实现,甚至可以在没有操作系统的嵌入式设备上使用。

代码示例:SOME/IP Transformer接口定义

/* SOME/IP Transformer接口示例 */
typedef struct {uint16 ServiceId;            /* 服务标识符 */uint16 MethodId;             /* 方法标识符 */uint8 InterfaceVersion;      /* 接口版本 */boolean ExtensibleFormat;    /* 是否使用可扩展格式 */
} SomeIp_ServiceConfigType;/* SOME/IP Transformer序列化函数 */
Std_ReturnType SomeIp_Serialize(const void* dataPtr,          /* 输入数据指针 */uint32 dataSize,              /* 输入数据大小 */uint8* targetBufferPtr,       /* 目标缓冲区指针 */uint32* targetBufferSizePtr,  /* 目标缓冲区大小指针 */const SomeIp_ServiceConfigType* configPtr  /* 服务配置 */
);/* SOME/IP Transformer反序列化函数 */
Std_ReturnType SomeIp_Deserialize(const uint8* dataPtr,         /* 输入数据指针 */uint32 dataSize,              /* 输入数据大小 */void* targetStructPtr,        /* 目标结构体指针 */uint32* targetSizePtr,        /* 目标大小指针 */const SomeIp_ServiceConfigType* configPtr  /* 服务配置 */
);/* SOME/IP Transformer错误处理函数 */
Std_ReturnType SomeIp_HandleError(uint8 errorId,                /* 错误标识符 */uint8* responseBufferPtr,     /* 响应缓冲区指针 */uint32* responseSizePtr       /* 响应大小指针 */
);

3.2 COM Based Transformer

COM Based Transformer是一种基于COM模块配置的转换器。根据SRS_Xfrm_00201和SRS_Xfrm_00202的要求,COM Based Transformer提供以下功能:

  1. 数据序列化:基于固定数据映射将原子和结构化数据元素序列化为线性数组(SRS_Xfrm_00201)
  2. 配置来源:从COM模块获取配置信息(SRS_Xfrm_00202)

COM Based Transformer使Transformer功能可用于使用固定通信矩阵和压缩数据表示的目标总线系统。它从系统描述中的固定数据映射获取序列化数据的信息,并从COM模块ECU配置中获取配置。

代码示例:COM Based Transformer接口定义

/* COM Based Transformer配置类型 */
typedef struct {uint16 ComHandleId;          /* COM句柄标识符 */uint8 ComSignalType;         /* COM信号类型 */uint8 ComBitSize;            /* COM位大小 */uint8 ComBitPosition;        /* COM位位置 */boolean ComSignalEndianness;  /* COM信号字节序 */
} ComBased_SignalConfigType;/* COM Based Transformer序列化函数 */
Std_ReturnType ComBased_Serialize(const void* dataPtr,          /* 输入数据指针 */uint32 dataSize,              /* 输入数据大小 */uint8* targetBufferPtr,       /* 目标缓冲区指针 */uint32* targetBufferSizePtr,  /* 目标缓冲区大小指针 */const ComBased_SignalConfigType* configPtr  /* 信号配置 */
);/* COM Based Transformer反序列化函数 */
Std_ReturnType ComBased_Deserialize(const uint8* dataPtr,         /* 输入数据指针 */uint32 dataSize,              /* 输入数据大小 */void* targetStructPtr,        /* 目标结构体指针 */uint32* targetSizePtr,        /* 目标大小指针 */const ComBased_SignalConfigType* configPtr  /* 信号配置 */
);

4. Transformer处理流程

4.1 SOME/IP Transformer处理流程

下图展示了SOME/IP Transformer的详细处理流程:

在这里插入图片描述

从图中可以看出,SOME/IP Transformer的处理流程主要包括以下步骤:

  1. 数据输入:软件组件发起数据传输或服务请求
  2. RTE处理:RTE接收数据并确定Transformer链
  3. SOME/IP处理
    • 序列化处理
      • 检查数据结构
      • 序列化原子和结构化数据
      • 对客户端/服务器通信添加SOME/IP协议头
      • 处理可选参数(使用Tag/Length/Value编码)
    • 反序列化处理
      • 接收线性数组
      • 解析SOME/IP协议头
      • 处理异常情况
      • 解析Tag/Length/Value编码
      • 跳过未知/不支持的字段
      • 反序列化数据结构
      • 提取需要的数据子集
  4. 结果返回:返回处理结果给RTE
  5. RTE后续处理:处理可能的错误或继续处理链中的下一个Transformer
  6. 完成处理:向软件组件返回最终结果

这一流程体现了SRS_Xfrm_00106中要求的可扩展数据结构支持,允许在发送方接口定义中任意位置扩展结构/方法,同时接收方如果不需要新成员/参数,则不需要进行适配。发送方也不需要发送可选但当前不可用的结构成员。


5. 总结

AUTOSAR Transformer作为AUTOSAR架构中重要的基础软件服务组件,通过提供标准化的数据转换机制,使应用层软件组件与底层通信细节解耦,为不同ECU之间的通信提供了强大的支持。

主要优势

  • 标准化接口:提供一致的接口,简化软件组件开发
  • 可扩展性:支持新数据结构和协议的扩展
  • 灵活性:支持多种转换器类型和转换器链
  • 兼容性:支持不同操作系统和嵌入式环境
  • 错误处理:提供完善的错误处理机制

应用场景

  • ECU间通信:实现不同ECU之间的数据交换
  • 协议转换:将应用数据转换为特定协议格式
  • 数据保护:添加校验和等保护机制
  • 数据优化:优化数据格式,提高传输效率

通过理解和正确使用Transformer,开发人员可以更好地实现AUTOSAR架构下的软件系统,确保系统的可靠性、可维护性和可扩展性。

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

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

相关文章

【算法专题训练】05、最大单词长度乘积

1、题目信息 https://leetcode.cn/problems/aseY1I/description/ 给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串…

Tenable 利用 AI 升级漏洞评级系统,提升风险优先级排序能力

网络安全公司 Tenable Holdings Inc. 今日宣布对其漏洞优先级评级系统(Vulnerability Priority Rating,VPR)进行人工智能驱动的升级,旨在帮助机构更准确地识别和应对最具威胁性的漏洞。从60%到1.6%的精准聚焦Tenable VPR 系统于20…

安全插座项目规划书

安全插座项目规划书 一、项目概述 本项目旨在设计并开发一款安全插座,通过集成多种安全保护功能,有效预防因电气故障引发的安全问题,如过载、短路、漏电等,为用户提供更加可靠的用电环境。 二、技术架构 (一&#xff0…

Logcat日志分析

1. AndroidRuntime关键字(跟整个系统代码相关) 一、AndroidRuntime的核心作用 AndroidRuntime是Android系统负责启动和运行应用程序的核心组件,当应用因未处理的异常(如空指针、数组越界等)导致崩溃时,Andr…

Apache Ranger 权限管理

编译 mvn install package -DskipTests -Dfast -Drat.skiptrue -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Denforcer.skiptrueinstall.properties PYTHON_COMMAND_INVOKERpython#DB_FLAVORMYSQL|ORACLE|POSTGRES|MSSQL|SQLA DB_FLAVORMYSQL ## # Location of DB client l…

tailscale+GitLab

1. 查看当前 LFS 的远程地址 bash 复制 git lfs env | grep Endpoint 你会看到类似: Endpointhttp://192.168.3.36/makeup/classicparking.git/info/lfs (authbasic) 2. 修改 LFS 的远程地址 使用以下命令将 LFS 的地址改为 http://100.125.163.56&#xff1…

微信通话自动录音器

—————【下 载 地 址】——————— 【​本章下载一】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【​本章下载二】:https://pan.xunlei.com/s/VOVvLpQuRxYadClkxTGwO2OnA1?pwdvind# 【百款黑科技】:https://uc…

05.原型模式:从影分身术到细胞分裂的编程艺术

目录序幕:当复制对象成为战略需求一、原型工厂的核心装备库1.1 Java原生的浅克隆术二、深度克隆的炼金法则2.1 手工克隆大法(硬核派)2.2 序列化克隆术(魔法派)三、原型模式的工业级装配3.1 原型注册管理局3.2 Spring框…

[NLP]如何在 Synopsys VCS 仿真脚本中处理多个 UPF 文件的加载

如何在 Synopsys VCS 仿真脚本中处理多个 UPF 文件的加载 摘要:我将详细解释在 Synopsys VCS(VCS)模拟脚本中如何处理多个 UPF 文件的加载,包括原理、命令选项、示例脚本以及注意事项。这基于 VCS 的 native low power verification 支持(IEEE 1801 UPF 标准)。如…

DNF: Decouple and Feedback Network for Seeing in the Dark

DNF:用于暗光视觉的解耦与反馈网络 摘要 RAW 数据的独特属性在低光照图像增强方面展现出巨大潜力。然而,现有架构在单阶段和多阶段方法中的固有局限性限制了其性能。跨两个不同域(噪声到干净和 RAW 到 sRGB)的混合映射&#xff0c…

论文精读《Frequency domain watermarking: An overview》

1. 数字水印技术基础概念与发展背景 数字水印技术作为信息隐藏领域的核心分支,其发展历程可以追溯到20世纪90年代中期计算机网络和信息技术的快速发展时期。随着大量版权作品以数字文件形式存在,电子出版逐渐普及,传统的版权保护方法面临前所未有的挑战。数字水印技术应运而…

北斗短报文兜底、5G-A增强:AORO P1100三防平板构建应急通信网络

公网中断的灾区现场,泥石流阻断了最后一条光缆。一支救援队却在废墟间有序穿行,队长手中的三防平板正闪烁着北斗卫星信号,定位坐标与伤亡信息化作一行行短报文,穿透通信孤岛直达指挥中心。这是AORO P1100三防平板搭载的北斗短报文…

Java排序算法之<冒泡排序>

目录 1、冒泡排序介绍 2、算法步骤 3、Java 实现(带优化) 4、算法复杂度分析 5、优点与缺点 前言 排序算法的“进化路线”: 冒泡排序 → 选择排序 → 插入排序 → 希尔排序 → 快速排序 → 归并排序 → 堆排序↓Java 内置排序&#xff…

生活毫无头绪就毫无头绪吧(7.24)

最近好长一段时间没有记录了明显感觉自己陷入了混乱中作息规律,专注力,心流,营养的饭菜如今下笔也没有什么头绪,前些日子本有感想但是又疲于记录,忘了许许多多最近在写论文,但尝试了游泳——蛙泳感觉太神奇…

vulhub-master 靶场Apache(httpd)漏洞

apache_parsing_vulnerability 漏洞原理在Apache1.x/2.x中Apache 解析⽂件的规则是从右到左开始判断解析,如果后缀名为不可识别⽂件解析,就再往左判断。如 1.php.xxxxx,Apache会试图识别你的代码,从右往左一个一个试。漏洞攻略参加一个1.php.jpg文件&…

Python 数据分析(一):NumPy 基础知识

目录 1. 简介2. 使用 2.1 ndarray2.2 数据类型2.3 索引与切片2.4 副本与视图2.5 轴的概念2.6 基本运算2.7 常用操作 1. 简介 NumPy(Numerical Python)是一个开源的 Python 科学计算扩展库,主要用来处理任意维度数组与矩阵,通常…

编程与数学 03-002 计算机网络 04_数据链路层功能

编程与数学 03-002 计算机网络 04_数据链路层功能一、数据链路层的基本任务(一)封装成帧(二)差错控制(三)流量控制二、差错检测与纠正方法(一)常用的差错检测码(二&#…

latex中既控制列内容位置又控制列宽,使用>{\centering\arraybackslash}p{0.85cm}

示例:\usepackage{array} % 为 >{...} 修饰符提供支持\begin{table*}[ht!]\centering \begin{tabular}{p{2.8cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\ce…

医疗数据挖掘Python机器学习案例

1. 医疗数据挖掘概述 医疗数据挖掘是从大量的医疗数据中提取有价值信息和知识的过程,旨在辅助医疗决策、疾病预测、治疗方案优化等。随着医疗信息化的发展,电子病历、医疗影像、基因数据等多源异构数据不断积累,为医疗数据挖掘提供了丰富的素…

人工智能概述

🌟 欢迎来到AI奇妙世界! 🌟 亲爱的开发者朋友们,大家好!👋 我是人工智能领域的探索者与分享者,很高兴在CSDN与你们相遇!🎉 在这里,我将持续输出AI前沿技术、实…