入门车载以太网(6) -- XCP on Ethernet

news2024/11/22 21:07:23

目录

1.寻址方式

2.数据帧格式 

3.特殊指令

4.使用实例 


了解了SOME/IP之后,继续来看看车载以太网在汽车标定领域的应用。

在汽车标定领域XCP是非常重要的协议,咱们先来回顾下基础概念。

XCP全称Universal Measurement and Calibration Protocol,主要作用就是对ECU进行数据标定和数据采集,加速ECU的开发。

既然是通用协议,理论上使用任何物理总线进行数据传输都是可以的;此外,XCP是由CCP(CAN Calibration Protoco)V2.1版本演变而来,因此XCP的"X"代表了多种传输层,例如XCP on CAN、XCP on TCP/IP、XCP on UDP/IP、XCP on USB,如下图:

那么从这个逻辑出发,我们也能分析出,XCP协议总体可分为两大部分:

  • 基础通用协议,包括协议描述、A2L接口描述、Seed&Key接口描述、通信示例等等;
  • 传输层协议,包括XCP on CAN\Ethernet\SPI\USB等等数据传输的描述。

 基础通用协议我们前面已经聊得很多了,今天看看XCP on Ethernet的一些特点。

1.寻址方式

 首先回顾下XCP的通信模型:

这张图很多人搞混淆,认为Master可以使用一个ID同时和不同Slave节点通信,实则不然(瞬间打脸,例外:Master通过CAN\ETH发送GET_SLAVE_ID获取在线的Slave等);

实际上,XCP是标准Single-Master/Single-Slave的通信,即Master在建立通信连接时,是需要特定的slave ID,进行点对点且连续的连接,此外关闭连接时也要通知Slave。

但是,在上图中可以看到XCP它是允许同时建立多个Single-Master/Single-Slave通信,例如,Master不同的CAN ID,发送相同连接指令给到不同Slave,如下:

这是最常见的XCP on CAN的寻址方式。 

 那么假设传输层使用以太网呢?这就需要IP地址和端口号(Port Number)。根据通信协议又可以分为TCP/IP 和UDP/IP。

  • TCP/IP:Slave一直处于监听状态,当然一次只能接受一个连接,由于该协议本身面向连接,且具备重传机制,因此可以防止数据丢失;
  • UDP/IP:当Slave未连接时,接收到CONNECT命令时是向命令发送方给定的IP地址和端口发送回复进行相应,对于所有后续响应,它将继续响应此IP地址和端口。当连接时,即使使用另一个端口,它也只响应来自发送CONNECT命令的IP地址的信息。

2.数据帧格式 

我们首先将XCP帧从车载以太网传输层(Layer4)解封装出来,如下:

根据标准,其中细节如下图所示:

与XCP on CAN Message相比,以太网帧多了一个XCP Header,即以太网控制域。

以太网控制域参数包括LEN、CTR,长度WORD(XCP中2byte)。

LEN:表示XCP Packet的数据长度,单位为Bytes;

CTR:用于检测丢包。TCP/IP丢包后可重传,因此这个位域主要为UDP/IP服务,Master在发送第一条消息时,CTR进行自增;Slave在本地维护同样的计数器,以相同方式响应,每发送一帧就增加自己的计数器。这和SecOC维护FvM比较类似,为了发挥UDP/IP本身的性能,一般用于数据采集,当然丢帧会产生测量间隙,如果确实影响了观测,建议使用TCP/IP。

3.特殊指令

既然是基于以太网进行数据传输,在指令上也会有所变化,具体包括了如下几条指令:

  • GET_SLAVE_ID

Master发送该指令,用于探测Slave节点,因此只能用于UDP/IP。具体来讲,主机发送一条IPv4的多播消息,IPv4地址固定为239.255.0.0,端口号固定为5556,无论XCP Slave是否已经与Master建立了连接,Slave都必须处理请求并返回响应,响应的信息包括从机IP地址、端口号、Slave自身是否可用、使用TCP还是UDP或者都全部使用等。

  • GET_SLAVE_ID_EXTENDED

获取slave的额外信息,主要是MAC地址等;

  • SET_SLAVE_IP_ADDRESS

该指令用于Master给Slave分配IP地址,当然这个IP地址就是自定义,不在标准范围。Slave也需要进行响应,保证IP 地址是否有效,是否需要手动激活IP地址等;

  • GET_DAQ_CLOCK_MULTICAST
该指令主要是Master需要更好关联多个Slave的时间,因此需要同一传输总线的Slave在同一时刻返回一个时间戳。这个比较理想化,不仅需要每个Slave响应速度一致,还需要Slave->Master的传输延迟一致。

Master下发指令后,Slave会回复EV_TIME_SYNC(该帧带有时间戳) ,如下所示:

 EV_TIME_SYNC报文格式如下:

4.使用实例 

目前来看,XCP on Ethernet主要用于高速测量和标定系统,通信速率可达50MBytes/s,实现方法可以参考Vector的POD技术或者ETAS的ETK技术。

以Vector VX1000为例,它为ECU的XCP on Ethernet提供了可能。首先这个硬件盒子自带以太网端口,其次Vector针对主流车规MCU设计了POD硬件,该硬件可通过Debug接口(例如DAP、JTAG、Nexus)等接口直接访问ECU的数据并返回给VX1000这个小盒子,换句话说,CANape是上位机作为Master,VX1000+POD作为Slave,因此理论上讲ECU内部就不需要再实现XCP on Slave的软件协议栈。如下图所示:

看到这里,不由得想到英飞凌TC4xx在Trace设计时特意数据传输路径给到ETH,只需要XCP Slave的实现,就可以不用POD。看来从芯片的迭代和设计上也能看到芯片厂、Tier 1 、OEM之间的博弈。

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

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

相关文章

Python中常用的函数介绍

Python中常用的几种函数 1、input函数 input()函数:主要作用是让用户输入某个内容并接收它。 #输入你的年龄 >>> age input("my age is :") my age is :20 执行代码后输入年龄,年龄被存放到age变量中,执行print后终端会…

Ubuntu从入门到精通(二)远程和镜像源配置齐全

Ubuntu从入门到精通(二) 1 常见操作配置 1.1 英文语言配置 1.1.1 打开设置 1.1.2 设置语言为英文 1.1.3 重启生效 1.1.4 再次进入,选择更新名字 1.1.5 再次进入,发现已经变成了英文 1.2 输入法配置 1.3 rustdesk安装 1.3.1 Windows系统配置 登陆:https://github.com…

卷积神经网络(CNN)中的池化层(Pooling Layer)

池化层(Pooling Layer),也被称为下采样层,是深度学习神经网络中常用的一种层级结构。它通常紧跟在卷积层之后,对卷积层输出的特征图进行下采样操作。 一、定义与功能 池化层的主要作用是通过减少特征图的尺寸来降低计算…

【linux硬件操作系统】计算机硬件常见硬件故障处理

这里写目录标题 一、故障排错的基本原则二、硬件维护注意事项三、关于最小化和还原出厂配置四、常见故障处理及调试五、硬盘相关故障六、硬盘相关故障:硬盘检测问题七、硬盘相关故障:自检硬盘报错八、硬盘相关故障:硬盘亮红灯九、硬盘相关故障…

《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)

实验内容 实验二 编程实现进程(线程)同步和互斥 1.实验的目的 (1)通过编写程序实现进程同步和互斥,使学生掌握有关进程(线程)同步与互斥的原理,以及解决进程&#xf…

智慧路面管理系统平台 智慧照明 智慧市政 智慧交通

智慧路面管理系统平台   智慧路面管理系统平台,旨在提高城市道路的智能化水平和交通效率。该系统通过集成传感器、摄像头、监控设备、大数据、云计算等多种技术手段,实现对道路状况和交通流量的实时监测与分析,从而提供精准的交通数据和智能…

数据结构 ——— 判断一棵树是否是完全二叉树

目录 满二叉树和完全二叉树示意图 手搓一个完全二叉树 代码实现 满二叉树和完全二叉树示意图 注意区分满二叉树和完全二叉树 满二叉树的每一层都是满的,也就是除了叶子节点,其他节点都有左右节点 完全二叉树的最后一层不一定是满的,但是从…

Vue_Router权限控制:不同角色显示不同路由

写在前面 在Vue中,Router是一个官方提供的用于处理应用程序路由的插件。它允许我们创建单页应用程序(SPA),其中不同的页面和组件可以通过URL进行导航和展示。使我们可以轻松地创SPA,并实现可复用和可组合的组件…

java多线程并发执行方法或者调用接口

在开发过程中有时需要检查某个接口或者某个方法是否存在并发安全问题,我们会用到jmeter 、AB 等压测工具辅助我们完成代码测试,虽然这些工具功能很强大,也很好用,但是在开发过程中来使用还是不如直接执行Test 或者main 方法来的方…

Python小游戏28——水果忍者

首先,你需要安装Pygame库。如果你还没有安装,可以使用以下命令进行安装: 【bash】 pip install pygame 《水果忍者》游戏代码: 【python】 import pygame import random import sys # 初始化Pygame pygame.init() # 设置屏幕尺寸 …

测评部署和管理 WordPress 最方便的面板

新版宝塔面板快速搭建WordPress新手教程 - 倚栏听风-Morii - 博客园 初学者使用1Panel面板快速搭建WordPress网站 - 倚栏听风-Morii - 博客园 可以看到,无论是宝塔还是1Panel,部署和管理WordPress都有些繁琐,而且还需要额外去配置Nginx和M…

OpenAI Adjusts Strategy as ‘GPT’ AI Progress Slow

注:本文为两篇关于当前大模型方向讨论的文章。 OpenAI 大改下代大模型方向,scaling law 撞墙?AI 社区炸锅了 机器之心 2024 年 11 月 11 日 11:57 北京 机器之心报道 编辑:Panda、泽南 大模型的 scaling law 到头了&#xff1f…

Java开发者必备:23种设计模式全面解析

文章目录 一、创建型模式1、工厂模式简单工厂工厂方法 2、抽象工厂模式3、原型模式4、建造者模式5、单例模式 二、结构型模式1、适配器模式2、桥接模式3、组合模式4、装饰模式5、外观模式6、享元模式7、代理模式 三、行为型模式1、解释器模式2、模板方法模式3、策略模式4、观察…

LeetCode:1008. 前序遍历构造二叉搜索树

目录 题目描述: 代码: 第一种: 第二种: 第三种:分治法 题目描述: 给定一个整数数组,它表示BST(即 二叉搜索树 )的 先序遍历 ,构造树并返回其根。 保证 对于给定的测试用例,总是有可能找到具有给定需求的二叉搜索树。 二叉搜索树 是一棵…

STM32F103 GPIO和串口实战

本节我们将会对STM32F103的硬件资源GPIO和串口进行介绍。 一、GPIO 1.1 电路原理图 LED电路原理图如下图所示: 其中: LED1连接到PA8引脚,低电平点亮;LED2连接到PD2引脚,低电平点亮; 1.2 GPIO引脚介绍 STM32…

Statsmodels之OLS回归

目录 Statsmodels基本介绍OLS 回归实战实战1:实战2: Statsmodels基本介绍 Statsmodels 是 Python 中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检验等等的功能。Statsmodels 在计量的简便性上是远远不及 Stata 等软件的&…

在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录 1、在 macOS 和 Linux 中,波浪号 ~macOS示例 Linux示例 区别总结其他注意事项示例macOSLinux 结论 2、root 用户的主目录通常是 /root解释示例切换用户使用 su 命令使用 sudo 命令 验证当前用户总结 1、在 macOS 和 Linux 中,波浪号 ~ 在 macO…

人工智能之机器学习5-回归算法2【培训机构学习笔记】

培训班ppt内容: 个人精进总结: 可解释方差 定义 可解释方差的回归评分函数是一种用于评估回归模型性能的指标,以下从其定义、计算公式、取值范围及意义、应用场景等方面进行详细介绍: 可解释方差(Explained Varian…

vue2中引入cesium全步骤

1.npm 下载cesium建议指定版本下载,最新版本有兼容性问题 npm install cesium1.95.0 2.在node_models中找到cesium将此文件下的Cesium文件复制出来放在项目的静态资源public中或者static中,获取去github上去下载zip包放在本地也可以 3.在index.html中引…

数据结构(顺序栈——c语言实现)

栈的基本概念: 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈” 特点:先进后出(FI…