SOME/IP学习笔记3

news2024/11/26 13:54:32

目录

1.SOMEIP Transformer

1.1 SOME/IP on-wire format

1.2 协议指定

2. SOMEIP TP

2.1 SOME/IP TP Header

3.小结


1.SOMEIP Transformer

       根据autosar CP 相关规范,SOME/IP Transformer主要用于将SOME/IP格式的数据序列化,相当于一个转换器。总体框架如下:

       如上图,SWC通过RTE处理数据,然后RTE执行相关的SOME/IP转换,将数据序列化转换为线性模式;接收端进行反序列化,最后传给另一个SWC。

1.1 SOME/IP on-wire format

        车载网路中PDU数据格式如下:

  • 报文长度限制

        当前用于CAN或FlexRay的数据长度限制为4095bytes;因此一个包含Header的SOME/IP报文不应该超过4095bytes。

  • 大小端

        Header均以大端表示,payload由SOMEIPTransformationDescription表示。

  • Header

        详见报文格式Some/IP学习笔记-CSDN博客

  • 参数和数据结构的序列化   

        支持序列化的基础数据类型如下:

        结构体的序列化:

        按照深度优先遍历的顺序进行序列化;如果需要对齐,在AUTOSAR数据类型中插入保留/填充元素,因为SOME/IP实现不会自动添加此类填充。

        例如,如果一个结构包含一个uint8和一个uint32,它们只是顺序写入缓冲区。这意味着uint8和uint32的第一个字节之间没有填充;因此,uint32可能没有对齐。因此,系统设计者必须考虑向数据类型添加填充元素,以实现所需的对齐或全局设置。

        如果SomeiptTransformationProps的属性sizeOfStructLengthField设置为大于0的值,则应在为其定义SomeiptTransformationProps的序列化结构之前插入长度字段。结构体的序列化有如下两种方式:

1.2 协议指定

        协议又分为Client/Server和Sender/Receiver

  • Client/Server通信

对于SOME/IP的请求message,Client端的SOME/IP transformer对payload和header做以下处理:

  1.  构建payload、设置独立的request ID、设置协议版本、设置接口版本、设置请求的message类型,returncode=0;
  2.  Server端的SOME/IP transformer应构建header,并处理payload、设置messageType为RESPONSE。
  • Sender/Receiver通信

        这里留个记录,暂时没有看到这里来

2. SOMEIP TP

        SOME/IP TP主要是将SOME/IP packet碎片化(UDP packet无法存放完整帧),接收端重新组装。

2.1 SOME/IP TP Header

        当MessageType中TP-Flag置1后,header变为如下结构:

        这里多出了4字节的内容,分别是28bit的offset、3bit的reserved bits和1bit 的More Segment Flag

  • TP-Flag处于第18位。
  • Offset Field:紧跟在return code,随着SOME/IP segment的发送或接收增加。每增加1相当于16个bytes已经接受或传输,例如offset值为92,表示已经传输了92*16=1472个字节的数据。
  • More Segment Flag置1,表示继续有SOME/IP PDU segment传输。

        现在假设要发送一个5571byte的SOME/IP报文、数据长度为8+5571;表示报文长度为8字节,总长为5571.

        现在将其分为5个连续的SOME/IP segments,每个最长payload为1392bytes。那么对应划分如下:

        8为报文长度、4为offset+res+m、1392为payload长度。

        结合上述,前4个segment总体结构如下:

        最后一个为:

3.小结

        总结一下,目前对于SOME\IP的认知还比较浅显,全是基础概念,所以接下来要进一步深入,搭建测试环境,入门车载以太网

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

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

相关文章

1、NPC 三电平SVPWM simulink仿真

1、SVPWM时间计算函数,是从matlab的SVPWM3L_TimingCalculation.p文件中反汇编出来的函数: function [TgABC_On ,TgABC_Off ,Sn ]SVPWM3L_TimingCalculation_frompfile (Vref ,DeltaVdc ,Fsw ) %#codegen %coder .allowpcode (plain ); TgABC_On [0 ,0 ,…

超级 App 的前端框架也可以足够轻量

小程序技术自微信2016年提出并大力推动,如今已经成为了中国前端研发的“潮流”,或者说是“趋势”。早期,微信小程序是微信公众平台推出的一种应用形态。微信小程序开放平台允许开发者在微信内直接开发和发布应用,用户无需下载安装…

使用Python轻松实现科研绘图

当撰写在学术期刊上发表的文章时,图表的布局和风格应符合预定义的格式要求。这样可以确保该出版物的所有文章都具有一致的风格,并且任何包含的图表在打印时都是高质量的。 Python在科学界广泛使用,并提供了创建科学绘图的好方法。然而&#…

如何正确使用 JavaScript 中的 slice() 方法

在 JavaScript 中,slice() 是一个常用的数组方法,用于从现有数组中提取一部分元素,然后返回一个新的数组。它是一个非常有用的工具,可以帮助你在不改变原始数组的情况下操作数组的子集。本文将介绍 slice() 的基本概念、使用方法、…

云课五分钟-02第一个代码复现-终端甜甜圈C++

前篇 云课五分钟-01课程在哪里-无需安装网页直达- 代码复现通过云课,会非常快捷。 视频 云课五分钟-02第一个代码复现-终端甜甜圈C 文本 如何使用g 使用g编译和链接C程序的基本步骤如下: 编写源代码:首先,你需要编写C源代码&…

关于dinput8.dll丢失的问题,提供六种解决办法

不知dinput8.dll文件大家是否有所了解,或者你的电脑中是否出现过关于dinput8.dll文件丢失问题。如果你的电脑中出现了关于dinput8.dll丢失的问题,那么这篇文章给大家提供六种解决dinput8.dll丢失的办法。希望能够帮助大家解决dinput8.dll丢失。 一.dinpu…

XETUX 软件 dynamiccontent.properties.xhtml 远程代码执行漏洞

XETUX 软件 dynamiccontent.properties.xhtml 远程代码执行漏洞 一、漏洞描述二、FOFA资产三、漏扫复现自动化检测 四、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果…

在PKPM中主梁与次梁有哪些区别?

在PKPM中主梁与次梁有哪些区别? 一、按主菜单1输入次梁比较方便,按主菜单2输入的次梁只能以房间为单元输入,比较麻烦; 二、按主菜单1输入次梁会增加大量无柱连接节点,增加大量房间,平面房间碎小&#xff…

从申请服务器到Docker部署Java项目至最后运行完结

目录 1.申请服务器篇 2.配置安全组篇 3.Docker安装篇 4.代码编写打包篇 目录结构 Maven Controller DockerFile 开始打包 5.所需文件上传及镜像构建篇 上传准备 上传jar包及DockerFile文件 指令构建 验证 6.镜像启动服务验证篇 启动镜像 使用云服务器地址进行…

Android Matrix的使用详解(通过矩阵获取到图片缩放比例和角度)

网上查了好久相关的资料,都没有明确的答案。最终通过多次测试结果,结合安卓定义的矩阵含义,推算出来矩阵的数学含义以及相关的计算公式 1.获取Matrix矩阵: Matrix matrix new Matrix(); float[] matrixValues new float[9]; …

给正在做自动化测试工程师的一些小建议

什么自动化测试? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念,广义上来讲&#…

Vue项目的学习一

1、Vue项目里面的.js文件里面对象添加属性 例如:在对象:row,需要在对象row里面添加一个属性状态:type,使用里面的Vue.set函数 Vue.set(参数1,参数2,参数3) Vue.set(row,type,false)解析: 参数1&#xff1…

【Hello Algorithm】单调栈(未完待续)

单调栈解决的问题 我们单调栈的提出主要是为了解决这么一个问题 现在给我们一个数组 现在要求你建立一张表 这张表中能够查询到两个信息 这两个信息分别是 当前数字左边小于该数字并且下标位置最相近的下标当前数字右边小于该数字并且下标位置最相近的下标 同理 大于也可以…

海康设备接入安防监控系统EasyCVR平台实现语音对讲的必要操作步骤

安防监控系统EasyCVR平台可拓展性强、视频能力灵活,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析接入等功能。其中,在语音对讲方面,EasyCVR平台目前可兼容海康设备的对讲。…

Vue3弹性布局(Flex)

效果如下图:在线预览 APIs 参数说明类型默认值必传width区域总宽度string | number‘auto’falseverticalflex 主轴的方向是否垂直,vertical 使用 flex-direction: columnbooleanfalsefalsewrap设置元素单行显示还是多行显示;参考 flex-wrap…

Word或者WPS批量调整文中图片大小的快捷方法

文章目录 0、前言1、编写宏代码2、在文档中调用宏实现一键批量调整3、就这么简单! 0、前言 不知道大家是不是也和我一样,经常需要在编写的Word(或者WPS)文档里插入大量的图片,但是这些图片的尺寸大小一般都不一样&…

Accelerate 0.24.0文档 二:DeepSpeed集成

文章目录 一、 DeepSpeed简介二、DeepSpeed集成(Accelerate 0.24.0)2.1 DeepSpeed安装2.2 Accelerate DeepSpeed Plugin2.2.1 ZeRO Stage-22.2.2 ZeRO Stage-3 with CPU Offload2.2.3 accelerate launch参数 2.3 DeepSpeed Config File2.3.1 ZeRO Stage-…

Git 安装配置

目录 Linux 平台上安装 Debian/Ubuntu Centos/RedHat 源码安装 Windows 平台上安装 Mac 平台上安装 Git 配置 用户信息 文本编辑器 差异分析工具 查看配置信息 在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git …

简单描述下微信小程序的相关文件以及类型?

目录 前言 相关文件类型 1. JSON 配置文件 2. WXML 文件 3. WXSS 文件 4. JavaScript 文件 图片、音频、视频等资源文件 小程序配置文件(project.config.json) 理解 优缺点 优点: 缺点: 总结 结尾 前言 微信小程序…

工作流引擎是什么?

工作流引擎是用来实现工作流的一种组件化工具,它是一整套解决方案,比如说一般工作流引擎包含这些功能:流程节点管理、流向管理等,是为了减小开发成本而推出的。因为在软件开发过程中,如果是从零开始实现工作流&#xf…