车载以太网时间同步之EthTsync

news2024/11/24 12:53:50

车载以太网时间同步之EthTsync

前言

首先,请问大家几个小小问题,你清楚:

  • 你知道EthTsync模块的主要作用是什么吗?
  • EthTsync模块与其他AUTOSAR基础软件模块交互关系;
  • Eth Tsync模块使用的时间同步协议是什么?
  • Eth Tsync模块与gPTP时间同步协议的关系是什么?

今天,我们就来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

在这里插入图片描述


正文

正如前文《车载以太网基础篇之Eth Driver》所述,小T讲到Eth Driver一般都具备硬件时间戳特性,该特性便是车载以太网实现时间同步的一个关键前提,在AUTOSAR标准规范中,EthTsync模块就是用来实现基于车载以太网的时间同步协议的一个独有的模块,该模块与时间同步管理模块StbM模块如前文《StbM链接》相互配合协作来共同实现完整的车载以太网时间同步方案。

因此,本文将重点介绍EthTsync模块在AUTOSAR模块中的层级关系,以太网时间同步原理,与EEE802.1AS定义的gPTP时间同步协议的关系,以及针对AUTOSAR模块中定义的PTP时间同步协议内容,以便大家能够由浅入深,循序渐见地对这个模块有个清晰地认识与理解。

AUTOSAR层级关系

按照AUTOSAR标准文档规范,有关EthTsync模块在整个AUTOSAR车载以太网协议栈的具体位置描述如下图1所示:
在这里插入图片描述

图1 EthTsync模块与以太网协议栈关系

如上图所示,可以得出如下几个基本结论:

  • 车载以太网时间同步方案会涉及到Eth Driver,EthIf模块,EthTsync模块以及StbM模块等,其中Eth Driver,EthIf模块提供时间同步报文的收发解析,EthTsync模块负责时间同步协议解析,StbM负责时间同步统一管理与分发,为应用层提供全局时间戳服务;
  • 按照AUTOSAR规范定义当前使用的车载以太网时间同步协议与IEEE802.1AS的gPTP(generalized Precision Time Protocal)协议一致;

EthTsync时间同步协议

EthTsync时间同步协议是基于IEEE 802.1AS规范中定义的gPTP标准协议发展出来的一套协议,该模块的时间同步原理与gPTP协议一致,只不过在协议内容方面,AUTOSAR规范进行了一些扩展,丰富了gPTP时间同步内容。

因此,本文将重点以IEEE 802.1AS定义的gPTP以太网时间同步原理与协议来跟大家讲解EthTsync模块的基本功能与作用,同时针对协议内容的差异也会指出区别与联系。

本节将会从如下几个方面针对EthTsync模块时间同步协议介绍:

  • gPTP拓扑结构:介绍gPTP协议应用在何种以太网节点网络中使用以及各节点如何进行交互;
  • gPTP时间同步流程:介绍gPTP时间同步协议实现的基本原理与过程;
  • gPTP与PTP协议区别与联系:介绍gPTP协议与IEEE 1588规范中定义的PTP协议区别与联系;
  • AUTOSAR中gPTP协议介绍:介绍在AUTOSAR规范中的gPTP协议的具体内容,包含报文格式定义等内容;
gPTP拓扑结构

如下图2所示展示了单一域时间敏感网络的gPTP域拓扑结构,根据gPTP协议规范了如下域内三种类型的以太网节点:

  • GrandMaster Node(简称GM):在一个gPTP域内有且仅有一个主时钟,即GrandMaster节点,简称GM;
  • Bridge Node:桥接节点,在一个gPTP域内可以存在多个,但是不能作为时钟节点,只能作为透明时钟;
  • Endpoint Node:边缘节点,作为该gPTP域内的从时钟节点;

在这里插入图片描述

图2 gPTP单一域节点拓扑结构

其中,gPTP协议是建立在主从时钟关系上的一种协议,也就是说,在一个网络内所有节点都要以Master节点作为主时钟,其余节点作为从时钟,从时钟将自己的本地时间与主时钟时间进行同步,同时时间同步是可以层次递进的,作为slave节点的时钟也可以作为另一个局域网内的主时钟,如网关节点。

在上图中框起来的区域如果发生link错误,导致current GM无法将时间同步信息传递进该区域,那么就会使用到BMCA算法来实现新的Master时钟选择, 若发生此类场景,图中GNSS边缘时钟节点将会被作为新的GM节点而存在,此时网络中将会存在两个gPTP域。

值得注意的是,AUTOSAR规范中的EthTsync模块明确表示不支持BMCA算法,主要是考虑到整车网络属于一个静态网络,整个ECU拓扑结构上下点电都不会发生变化,如果发生上述连接故障问题也就需要进行售后处理,软件无需处理该场景。

因此,在车载以太网拓扑结构中,gPTP域内的GrandMaster主时钟均已预先设定好,无需通过BMCA算法来进行动态选择。

gPTP时间同步流程

gPTP时间同步流程可以按照如下先后顺序来进行,彼此之间存在依赖关系:

  • 1. 最佳主时钟选择原理

    在gPTP时间同步协议中可能在同一域内存在多个可用的全局时间源,就需要通过一种方式来选择全局最佳主时钟,这种方法被称为Best Master Clock Algorithm,简称BMCA算法

    系统上电之后,所有设备都可以通过一条报文来参与主时钟的竞选,报文中包含各个设备的时钟信息,每个设备都会主动比较自身与其他节点时钟的信息,竞选失败的将退出,如此反复,直至最后选择最佳主时钟。

    针对车载以太网,无需通过考虑最佳主时钟选择,车载以太网属于静态网络,均已提前设定好。

  • 2. 频率同步原理

    我们知道主从时钟底层都是通过晶振驱动来进行计时,但是不可避免地是晶振会受到外部温度,老化等因素影响进而产生时钟偏移。

    因此为了更为精确地保证主从时钟的同步,因此需要将主从时钟之间的晶振频率差异考虑在内,进而解决主从端口晶振精度不准带来的时间同步误差。

    计算方法如下图3所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mycGF9d3-1683431704988)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/3-%E9%A2%91%E7%8E%87%E5%90%8C%E6%AD%A5%E6%B5%8B%E9%87%8F.png)]

图3 主从时钟频率同步测量原理

​ 基于图3中的两个周期性的sync报文与follow-up报文,其中followup报文传输的是sync报文在主时钟节点发送时刻的时间戳,考虑主从 时钟节点对于总线传输的延时都是固定的,T1,T2,T3,T4都是物理层获取的时间戳,因此主从时钟节点的时钟偏差可以通过如下公式来体现:

  • 3. Path延时时间测量原理

    从时钟节点为了能够跟主时钟同步,除了上述主从时钟节点的时钟频率偏差带来的差异外,还存在一个非常重要的延时即以太网总线传输延时需要进行精确测量,才能够保证时间同步的精度,测量原理如下图4所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYndfzpl-1683431704989)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/4-gPTP%E5%BB%B6%E6%97%B6%E6%B5%8B%E9%87%8F%E5%8E%9F%E7%90%86.png)]

    图4 gPTP延时时间测量原理

    注意,Pdelay_Req报文发起方既可以是Time Master也可以是Time Slave,本文只不过已Time Slave为例。

    延时时间Pdelay time的测量具体步骤如下:

    S1:Time Slave节点发送Pdelay_Req报文,Time Slave节点记录该报文发送时刻的时间戳T1

    S2:Time Master记录MAC层收到Pdelay_Req报文的时间戳T2

    S3:Time Master将上述T2时间通过Pdelay_Resp报文发送至Time Slave,同时Time Master记录发送该报文的时间戳T3,Time Slave记录收到该报文的时间戳T4

    S4:Time Master将上述T3时间通过Pdelay_Resp_Follow_Up报文发送至Time Slave,当Time Slave收到该报文时便知道了T1,T2,T3,T4时间戳;

    考虑到主从时钟之间的时钟频率偏差以及主从时钟之间的延时对称原理,因此Pdelay time的计算方法如下所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScYbiItS-1683431704990)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/5-pDELAY%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F.png)]

    值得注意的是上述公式中如果主从时钟频率一致,那么此时P=1。

  • 4. 时间同步原理

    基于上述计算出来的总线延时时间Pdelay time以及主从时间频率的比值,也被称为NeighborRateRatio,那么便可以完成从时钟节点与主时钟之间的同步,其同步原理如下图5所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsH2jFOW-1683431704990)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/5-gPTP%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5%E5%8E%9F%E7%90%862.png)]

图5 gPTP时间同步原理

​ 如上图5所示,基于gPTP的时间同步协议通过SYNC报文与FollowUp报文来实现同步,同步流程如下:

S1:Time Master发送SYNC报文,该报文如果是单步模式,那么就需要携带T1时间戳信息,如果是双步模式,该报文无需发送任何 有效信息;

S2:Time Slave收到SYNC报文之后,MAC层会记录对应时刻的时间戳T2

S3:若基于双步模式,Time Master再发送Follow up报文,该报文中携带着SYNC报文外发时刻的时间戳T1;

​ 基于上述流程,我们便可以得到从时钟节点与主时钟节点的时间同步关系,设某时刻Time Master的全局时间为T6,对应此时刻的 Time Slave 本地时间为T5,因此时间同步关系如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SNhj1cOQ-1683431704991)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F.png)]

​ 其中Pdelay time通过上述延时时间测量过程得到,最终得到的Time Master与Time Slave的同步时间关系。

注意:gPTP时间同步过程可分为单步模式与双步模式,单步模式(one step)对以太网PHY硬件要求较高,需要能够精准获取发送时 刻的时间,因此普遍采用双步模式来完成时间同步,以便降低集成难度,对于AUTOSAR规范中定义的gPTP时间同步协议而言,默认 采用双步模式(two step)。

gPTP与PTP协议区别与联系

前面讲到gPTP协议属于IEEE802.1AS规范中的内容,而对于PTP协议则是属于IEEE1588 协议中的内容,gPTP协议是基于传统意义上的PTP协议发展而来,两者存在很多的相似点,但也有很多差异,这种差异的来源主要还是两者针对时间同步的精度不同。

其中gPTP协议由TSN工作组进行制定,TSN工作组属于原先的AVB工作组。

对于gPTP协议而言专用于时间敏感网络(TSN),时间同步精度要求较高,而传统的PTP时间同步协议无法满足该要求,如下图6展示了两者协议的相似点与差异:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6z7MuuLT-1683431704992)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/6-gPTP%E4%B8%8EPTP%E5%8D%8F%E8%AE%AE%E5%8C%BA%E5%88%AB%E4%B8%8E%E8%81%94%E7%B3%BB.png)]

图6 gPTP与PTP协议区别

AUTOSAR中gPTP协议介绍

相比IEEE802.1AS规范中定义的gPTP协议,AUTOSAR组织结合车载网络应用场景针对其部分内容也做了进一步限制与约束,以便能够更加灵活应用,降低整个系统的集成难度。

AUTOSAR规范中的gPTP主要约束条件如下:

  • 由于车载网络属于静态网络,不支持BMCA算法;
  • 不支持Anounce与Signaling报文的发送与接收;
  • Pdelay_Req不作为开启发送SYNC报文的前置条件;
  • IEEE802.1AS规定不能发送带有VLAN信息的时间同步报文,但AUOTSAR允许使用带有VLAN信息的报文,前提是网关支持转发预留的多播地址01:80:C2:00:00:00 … 0F的报文;
  • 报文中的CRC保护措施不能作为信息安全的内容;

报文类型与格式

在AUTOSAR中的gPTP协议支持SYNC, Follow-up,Pdelay_Req,Pdelay_Resp, Pdelay_Resp_Follow_up 五类报文。

其中SYNC,Pdelay_Req, Pdelay_Resp报文属于事件型报文,因为都需要记录收发时刻的时间戳,而Follow-up,Pdelay_Resp_Follow_up则属于一般性报文,因为不记录该类收发时刻的时间戳,仅关注其承载信息,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q71g4BhY-1683431704993)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/7-%E4%BA%8B%E4%BB%B6%E5%9E%8B%E6%8A%A5%E6%96%87%E4%B8%8E%E4%B8%80%E8%88%AC%E6%80%A7%E6%8A%A5%E6%96%87.png)]

图7 gPTP时间同步报文类型定义

上述五类报文按照AUTOSAR定义可以通过参数MessageCompliance来进行统一控制,如果该参数为TRUE,则需要采用IEEE802.1AS规范下的报文格式,如果该参数为FALSE,则使用AUTOSAR规范下的报文格式。

该五类报文格式均由**头信息格式,Paload格式,数据类型(TLV若有)**组成,同一规范下的五类报文均具有相同的头信息格式定义。

以IEEE802.1AS规范下的SYNC报文头信息格式为例,如下图所示:

SYNC Message头信息定义(IEEE802.1AS)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-utkl3W8E-1683431704993)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/8-sync%E6%8A%A5%E6%96%87%E5%A4%B4%E4%BF%A1%E6%81%AF.png)]

图8 gPTP时间同步报文类型定义

上述各参数解释如下表:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxzPraLr-1683431704994)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/9-gPTP%E5%A4%B4%E4%BF%A1%E6%81%AF%E8%A7%A3%E9%87%8A%E8%AF%B4%E6%98%8E%E8%A1%A8802.1AS.png)]

图9 IEEE802.1AS规范下sync报文头信息定义

SYNC Message Payload定义(IEEE802.1AS)

如下图所示为SYNC报文的Payload定义以及说明:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRlXrY9X-1683431704995)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/10-%20sync%E6%8A%A5%E6%96%87payload%E5%AE%9A%E4%B9%89%E8%AF%B4%E6%98%8E.png)]

图10 IEEE802.1AS规范下Payload定义说明

根据IEEE802.1AS规范下的SYNC报文头信息总共占用34个字节,保留了10个字节作为备用,也就意味着SYNC报文除具备gPTP的头信息以外,不具备其他有效信息。

Follow_Up Message头信息定义(IEEE802.1AS)

如下图所示为Follow Up message的头信息定义说明,可以看出基本与上述SYNC报文基本一致。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tGqG3n9p-1683431704995)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/11-%20Follow%20up%20Message%20header%20802.png)]

图11 IEEE802.1AS规范下Payload定义说明

图11中每个参数的定义说明可直接参考图9,按照相应的报文类型对号入座即可。

Follow Up Message Payload定义(IEEE802.1AS)

在这里插入图片描述

图12 IEEE802.1AS规范下Follow up报文Payload定义

如下图13所示为IEEE802.1AS规范下Follow up报文Payload与标准TLV字段解释说明:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoqd9v9J-1683431704997)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/13-%20802.1%20Followup%20payload%E4%B8%8ETLV%E5%AE%9A%E4%B9%89.png)]

图13 IEEE802.1AS规范下Follow up报文Payload解释说明

SYNC Message头信息定义(AUTOSAR)

与IEEE802.1AS规范下的SYNC报文头信息相比,除了domain number有些区别以外,其余均相同,AUTOSAR规范下的domain ID为0-15,而IEEE802.1AS规范下的SYNC报文则固定为0。

SYNC Message Payload定义(AUTOSAR)

AUTOSAR规范下的SYNC报文与IEEE802.1AS规范下的SYNC报文Payload内容一致,不再过多赘述。

Follow_Up Message头信息定义(AUTOSAR)

AUTOSAR规范下的Follow_Up Message 与IEEE802.1AS规范下Follow_Up Message相比,再Length of Message长度方面多增加了一些字节,其余没有区别,原因是由于AUTOSAR规范下的Follow_Up Message增加了诸多TLV字段

Follow Up Message Payload定义(AUTOSAR)

新增的AUTOSAR TLV字段如下图14所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图14 AUTOSAR规范下Follow up报文新增TLV字段定义

由于AUTOSAR规范下的新增TLV内容较多,主要是针对各种TLV做的CRC计算规则会有些许差异,基本原理一致,不复杂,由于篇幅原因,小T就不过多对这些TLV进行赘述,大家可自行进行研究。

Pdelay_Req报文格式定义

如下图15所示为IEEE802.1AS定义的报文格式定义:

在这里插入图片描述

图15 Pdelay_Req报文格式定义

上图中header与SYNC Message头信息定义(IEEE802.1AS)中一致,该报文共占用54个字节,除了header信息外没有其他Payload信息。

Pdelay_Resp报文格式定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yj0r7RPT-1683431705003)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/Pdelay_Resp.png)]

图16 Pdelay_Resp报文格式定义

上图中header与SYNC Message头信息定义(IEEE802.1AS)中一致,该报文共占用54个字节, 图中两个变量解释如下:

  • requestReceiptTimestamp:该值是Pdelay_Req报文发送时刻的s与ns部分;

  • requestingPortIdentity:该值应与Pdelay_Req报文中的sourcePortIdentity字段一致;

Pdelay_Resp_Follow_Up报文格式定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-loeKK3Iz-1683431705004)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/Pdelay_Resp_Followup%E6%A0%BC%E5%BC%8F%E5%AE%9A%E4%B9%89.png)]

图17 Pdelay_Resp_Follow_up报文格式定义

上图中header与SYNC Message头信息定义(IEEE802.1AS)中一致,该报文共占用54个字节, 图中两个变量解释如下:

  • responseOriginTimestamp:发送Pdelay_Resp报文时刻的s部分与ns部分;
  • requestingPortIdentity:该值应与Pdelay_Req报文中的sourcePortIdentity字段一致;

除了解上述Path延时测量相关报文格式以外,AUTOSAR定义的Path延时时间测量机制还需要注意如下几个关键点:

  • EthTsync模块通过Pdelay_Req,Pdelay_Resp,Pdelay_Resp_Follow_Up报文来进行延迟测量;
  • Pdelay_Res超时发出接收节点将会中止本次延时测量,接收节点默认使用上次延时测量的结果;
  • 主从时钟节点均需要周期性发送Pdelay_Req报文来进行彼此的Path延时时间测量,发送报文周期可通过EthTSynGlobalTimeTxPdelayReqPeriod来控制;
  • Pdelay_Resp_Follow_Up报文的发送时间可以通过参数EthTSynGlobalTimeTxFollowUpOffset配置;
  • 上述五类报文的目标MAC地址均统一为01-80-C2-00-00-0E, 源MAC地址为各自报文发送的端口地址;
  • 上述五类报文的EtherType统一为88-F7;

Time Master行为

在gPTP网络中作为Time Master的节点存在着如下报文处理流程:

  • Time Master负责SYNC报文与Follow-Up报文的发送,SYNC报文可以通过设置参数EthTSynGlobalTimeTxPeriod来进行周期性发送,在发送SYNC报文的过程中需进行如下三个基本步骤:

    • 通过函数 EthIf_ProvideTxBuffer来获取空闲的buffer来存储发送的数据;

    • 如果参数EthTSynHardwareTimestampSupport设置为TRUE,那么可通过函数EthIf_EnableEgressTimeStamp来激活硬件时间戳功能;

    • 通过调用函数Ethif_Transmit来触发报文的发送;

  • 当参数EthTSynHardwareTimestampSupport设置为TRUE,通过调用函数EthTSyn_TxConfirmation来获取SYNC报文外发时刻的时间戳;

  • 通过设置参数EthTSynGlobalTimeTxFollowUpOffset来决定SYNC报文发送之后多久发送Follow_Up报文,Follow_Up报文发送需经过如下两个基本步骤:

    • 通过函数 EthIf_ProvideTxBuffer来获取空闲的buffer来存储发送的数据;

    • 通过调用函数Ethif_Transmit来触发报文的发送;

  • 通过函数 EthTSyn_TrcvLinkStateChg来获取当前使用的PHY状态,当PHY状态由 ETHTRCV_LINK_STATE_ACTIVE 切换成ETHTRCV_LINK_STATE_DOWN时就会重置所有时间同步报文的发送与接收状态机。

  • 通过函数 EthTSyn_TrcvLinkStateChg来获取当前使用的PHY状态,当PHY状态由 ETHTRCV_LINK_STATE_DOWN切换成ETHTRCV_LINK_STATE_ACTIVE时就会重启所有时间同步报文的发送与接收。

  • 可通过调用函数EthTSyn_SetTransmissionMode并设置成ETHTSYN_TX_OFF,所有发送的请求将会被禁止发送,设置成ETHTSYN_TX_ON则所有的报文发送请求均会被接受;

Time Slave行为

在gPTP网络中作为Time Slave的节点存在着如下报文处理流程:

  • 如果EthTSynHardwareTimestampSupport设置成TRUE, Time Slave节点可以通过函数EthTSyn_RxIndication来获取SYNC报文接收到的时间戳;

  • Time Slave可通过配置参数EthTSynGlobalTimeFollowUpTimeout来实现SYNC报文接收之后Follow_Up报文的超时监控,一旦发生超时,那么本次时间同步将失效,等待下次新的时间同步序列;

  • 如果EthTSynHardwareTimestampSupport设置成TRUE, Time Slave节点收到有效的Follow_Up报文之后,本地时间与Follow_Up发送的全局时间差距超过 EthTSynTimeHardwareCorrectionThreshold,那么就需要调用函数EthIf_SetCorrectionTime来进行重置本地时间;

  • 如果EthTSynHardwareTimestampSupport设置成FALSE, Time Slave就需要计算出全局时间,然后通过函数StbM_BusSetGlobalTime来实现时间同步;

常用函数接口

为了便于大家更好地使用EthTsync这个模块,小T整理了关于车载以太网时间同步模块这部分常用的函数接口与功能说明,如下图18所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NncGBjVh-1683431705005)(https://carthomas.oss-cn-shanghai.aliyuncs.com/%E8%BD%A6%E8%BD%BD%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%9F%BA%E7%A1%80%E7%AF%87%E4%B9%8BEthTsync/15-%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E.png)]

图18 常用函数接口说明

更多精彩内容,敬请关注公号"ADAS与ECU之吾见"!

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

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

相关文章

Java—JDK8新特性—函数式接口

目录 函数式接口 3.1 什么是函数式接口 3.2 functionalinterface注解 源码分析 3.3 Lambda表达式和函数式接口关系 3.4 使用函数式接口 函数式接口 3.1 什么是函数式接口 如果一个接口中只包含一个抽象方法,这个接口称为函数式接口 如果一个接口包含&#xff0…

mac php8 安装xdebug模块失败

安装 xdebug 模块,官网有详细介绍Xdebug: Documentation Installation 本机是mac php使用brew安装,想着可以直接使用以下方式安装,还是美滋滋的 但是安装途中发生了错误 PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/8.0.10/share/php/pear/System.php on…

解决报错ERROR: No matching distribution found for torchvision==0.11.2+cu111

目录 一、猜测 二、验证 三、解决方案 四、检验 该报错是在按官网方法用指令: pip install torch1.9.1cu111 torchvision0.10.1cu111 torchaudio0.9.1 -f https://download.pytorch.org/whl/torch_stable.html 安装pytorch时出现的,以下是分析&#…

粗糙集属性约简方法与Python实现【1】

1. 方法概述 1.1 定义 粗糙集是波兰理工大学Z.pawlak教授提出用来研究不完整数据,不精确知识的表达、学习,归纳等的一套理论。它是一种新的处理模糊和不确定性问题的数学工具,已被广泛应用于知识发现、机器学习、决策支持、模式识别、专家系统及归纳推理等领域。 粗糙集理…

开源相亲小程序

此项目目前已完成前台开发。源码结构清晰,完美实现模块化组件化思想,易维护。 曾经,作者也为寻求自己的另一半苦恼,因为平时工作繁忙,交际圈窄小,而父母又各种催婚,无奈上了“XX网”去碰碰运气。…

webpack5搭建react框架-antd组件库使用

antd组件库使用 一、前言 前面已经完成了webpack5 react框架的配置搭建,我们在进行项目开发的时候大多还会使用第三方的组件库,而antd组件库在react项目中使用是非常非常多的,所以就将react框架使用最多的antd组件库引入并使用。 二、ant…

京东给了兄弟姐妹们稳稳的幸福

“今天我看了宿舍楼,我真的是气得想打人;我原来一直说的是高级单身公寓!可实际情况呢?我说了多少遍了,要让员工、让兄弟们活的有尊严。而我们宿迁分公司的管理层是怎么做的呢,说难听的就是没有把员工当人去…

低代码平台的多租户SAAS系统实战解决方案—JeecgBoot

JeecgBoot免费低代码平台,提供一键切换多租户模式机制!快速实现全系统的saas租户方案,通过租户ID进行数据隔离。 租户设计思路 1、开启全系统租户隔离 开启方法 将 org.jeecg.config.mybatis.MybatisPlusSaasConfig#OPEN_SYSTEM_TENANT_CO…

RabbitMQ --- 消息可靠性

消息队列在使用过程中,面临着很多实际问题需要思考: 一、消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: …

(java)继承和多态 (详解)

目录 1 继承 1.1为什么需要继承 1.2 继承概念 1.3 继承的语法 1.4 父类成员访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法 1.5 super关键字 1.6 子类构造方法 1.7 super和this 1.7.1 this 1.7.2 super和this 1.8 再谈初始化 1.9 继承方…

软考信管高级——人力资源管理

人力资源管理内容 人力资源管理计划 内容: 角色与职责:定义项目所需的岗位、技能和能力项目组织图,说明项目所需的人员数量人员配备管理计划,说明需要每个团队的时间段以及有助于项目团队参与的其他重要信息 成功的项目团队的特…

Linux安装java jdk

1、检查系统中jdk 版本:java -version 2、检测 jdk 安装包:rpm -qa | grep java 3、卸载 openjdk rpm -e --nodeps tzdata-java-2017b-1.el7.noarch rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 rpm -e --nodeps java-1.8.0-open…

深度学习细节总结

计算机视觉 目标检测,语义分割,目标分类 自然语言处理NLP 数据结构 数据结构 访问元素 线性回归 可以看成是一个单层的神经网络,有显式的解 优化算法 梯度下降,超参数:学习率、批量大小 分类回归 单层感知机…

RuntimeError:cuDNN error:CUDNN_STATUS_EXECUTION_FAILED

背景 最近在服务器上跑Deeplabv3进行语义分割时,需要使用GPU版的pytorch。 我在Anaconda下配置了适配服务器CUDA的pytorch,但是报错如下,(下图无限接近于我的错误,但是我忘记截图我的报错了,所以用了下面这…

魔百盒CM211-1S_ZG_增强版2+16_当贝纯净版桌面-卡刷固件包

魔百盒CM211-1S_ZG_增强版216_当贝纯净版桌面-卡刷固件包-内有教程-华为鸿蒙动画 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的…

图灵java学习

反汇编 最后一行 效果是 程序计数器,保存下一个指令的地址 iadd. int加法 动态链接 Java动态链接(Dynamic Linking)是Java中的一种运行时特性,它允许在应用程序运行时动态地链接和加载库和组件。在编译时,Java程序不需…

逆向效率提升工具与方法汇总(持续更新...)

欢迎大家提供高效方法与工具 工具油猴插件SwitchyOmegaReresFiddler插件编程猫 奇淫技巧seleniumOptions常用参数防检测将浏览器navigator.webdriver重置为Falsestealth.min.js解决常见的指纹检测浏览器worker完美解决检测 小试牛刀chrome开发者工具设置中文调试代码如何友好格…

【MySQL】(创建,查看,使用,删除)数据库

目录 一.Cmd命令执行操作 1.使用cmd命令进入数据库(mysql -uroot -p) 2.查看数据库 3.创建数据库 4.使用数据库 5.删除数据库 二.数据库软件执行操作 1.查看数据库 2.创建数据库 3.数据库 4.删除数据库 一.Cmd命令执行操作 1.使用cmd命令进入数据库&#…

详解PostMan使用

目录 1.简介 2.管理用例集 3.断言 3.1.概述 3.2.判断响应状态码 3.3.判断响应体是否包含某个字符串 3.4.断言JSON数据 3.5.断言响应头 4.全局变量和环境变量 4.1.概述 4.2.创建环境 4.3.设置变量 4.4.获取变量 5.前置脚本 6.关联 7.批量执行 8.测试报告 1.简介…

传统机器学习(六)集成算法(2)—Adaboost算法原理

传统机器学习(六)集成算法(2)—Adaboost算法原理 1 算法概述 Adaboost(Adaptive Boosting)是一种自适应增强算法,它集成多个弱决策器进行决策。 Adaboost解决二分类问题,且二分类的标签为{-1,1}。注:一定是{-1,1},不能是{0,1} …