22 KiB
AUTOSAR SWS TimeSyncOverEthernet — 以太网时间同步规范
文档元信息
| 字段 | 值 |
|---|---|
| 文档标题 | Specification of Time Synchronization over Ethernet(基于以太网的时间同步规范) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 676 |
| 文档状态 | Final(最终版) |
| 所属 AUTOSAR 标准 | Classic Platform(经典平台) |
| 所属标准版本 | 4.4.0 |
文档变更历史
| 日期 | 版本 | 变更人 | 变更说明 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | • 修改以增强全局时间同步的精度 • 拆分为 FO 协议规范和 CP SWS |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | • 阐明对意外 Sub-TLV 的处理 • 阐明配置参数 • 阐明 FUP 消息的处理 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | • 新增交换机的驻留时间补偿 • 新增 AUTOSAR 特定 TLV • 重构与 StbM 和 EthIf 的接口(包括支持立即 Timesync 消息传输) • 各种增强和更正(如 postbuild 配置) |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | • <Bus>TSyn_SetTransmissionMode 改为返回 void• 添加 StbM_BusSetGlobalTime() 调用 - 更正时序图• 为通过指针传递的输入参数添加 const |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | • 初始发布 |
目录
1 介绍与功能概述
EthTSyn 模块处理 [12] 中规定的以太网时间同步协议。
除 [12] 中规定的内容外,EthTSyn 模块还支持以下特性:
- 对 Timesync PDU 进行去抖,以避免高优先级 PDU 阻塞低优先级 PDU
- 时间同步消息的"立即"传输,用于时间主站和时间从站的快速(重新)同步
EthTSyn 与同步时基管理器(StbM;参见 [6])紧密耦合,StbM 负责在该时基的两个连续 Sync 消息接收之间对同步时基的(本地实例)进行插值。StbM 还向应用提供时间同步的服务接口。图 1 显示了 AUTOSAR 分层架构中与时间同步相关的模块。
图 1:AUTOSAR 分层架构中的 Timesync 模块(参见原文 PDF 第 6 页)
2 缩写、缩略语和定义
| 缩写/缩略语 | 描述 |
|---|---|
| (G)TD | (Global) Time Domain((全局)时间域) |
| (G)TM | (Global) Time Master((全局)时间主站) |
<Bus>TSyn |
总线特定的时间同步模块 |
| AVB | Audio Video Bridging(音视频桥接) |
| BMCA | Best Master Clock Algorithm(最佳主时钟算法) |
| CID | Company ID (IEEE)(公司标识) |
| CRC | Cyclic Redundancy Checksum(循环冗余校验) |
| Debounce Time | 具有相同 PDU 的两个 Tx 消息之间的最小间隔 |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| ETH | Ethernet(以太网) |
| EthTSyn | 以太网时间同步提供程序模块 |
| Follow_Up | Time transport message (Follow-Up)(时间传输消息) |
| GM(C) | Grand Master (Clock)(主时钟) |
| OFS | Offset synchronization(偏移同步) |
| Pdelay | 传播/路径延迟(IEEE 802.1AS 中给出) |
| Pdelay_Req | 传播/路径延迟请求消息 |
| Pdelay_Resp | 传播/路径延迟响应消息 |
| Pdelay_Resp_Follow_Up | 传播/路径延迟 Follow-Up 消息 |
| PDU | Protocol Data Unit(协议数据单元) |
| PTP | Precision Time Protocol(精确时间协议) |
| StbM | Synchronized Time-Base Manager(同步时基管理器) |
| Timesync | Time Synchronization(时间同步) |
| Sync | 时间同步消息 |
| TG | Time Gateway(时间网关) |
| TLV | Type, Length, Value field (IEEE 802.1AS)(类型、长度、值字段) |
| TS | Time Slave(时间从站) |
| TSD | Time Sub-domain(时间子域) |
| VLAN | Virtual Local Area Network(虚拟局域网) |
3 相关文档
3.1 输入文档
| 编号 | 文档 |
|---|---|
| [1] | AUTOSAR Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf |
| [2] | General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral.pdf |
| [3] | Requirements on Time Synchronization — AUTOSAR_RS_TimeSynchronization.pdf |
| [4] | Requirements on Ethernet Support in AUTOSAR — AUTOSAR_SRS_Ethernet.pdf |
| [5] | General Specification of Basic Software Modules — AUTOSAR_SWS_BSWGeneral.pdf |
| [6] | Specification of Synchronized Time-Base Manager — AUTOSAR_SWS_SynchronizedTimeBaseManager.pdf |
| [7] | Specification of the Ethernet Interface — AUTOSAR_SWS_EthernetInterface.pdf |
| [8] | Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf |
3.2 相关标准和规范
| 编号 | 标准 |
|---|---|
| [9] | IEEE Std 802.1AS™-2011 — Timing and Synchronization for Time-Sensitive Applications in Bridged Local Area Networks |
| [10] | IEEE Std 1588™-2008 — Precision Time Protocol (PTP) |
| [11] | IEEE Std 802.1Q™-2011 — Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks |
| [12] | IEEE Std 802.1AS-2011 — Timing and Synchronization for Time-Sensitive Applications in Bridged Local Area Networks |
3.3 相关规范
AUTOSAR 提供了关于基础软件的一般规范(SWS BSW General [5]),该规范对 EthTSyn 也有效。
4 约束和假设
4.1 限制
当前版本的 EthTSyn 假定使用具有硬件时间戳功能的以太网控制器。软件时间戳也是可能的,但精度较低。
4.2 精度
通过硬件时间戳,时间主站和时间从站之间的精度可以达到亚微秒级。
4.3 适用域
需要公共时基的以太网连接系统,特别是车载以太网和时间敏感网络(TSN)应用。
5 与其他模块的依赖
EthTSyn 与以下模块交互:
- StbM(同步时基管理器)— 获取和设置全局时间
- EthIf(以太网接口)— 发送和接收以太网帧
- BswM(基础软件模式管理器)— 模式管理
- DET(默认错误追踪器)— 开发错误报告
图 2:EthTSyn 模块的依赖关系(参见原文 PDF 第 11-12 页)
5.1 文件结构
5.1.1 代码文件结构
有关详细信息,请参阅 SWS BSW General [5] 的相应章节。
6 需求追踪
需求追踪表列出了 RS_TS_* 和 SRS_BSW_* 系列需求与 EthTSyn 模块 SWS_EthTSyn_* 需求之间的映射关系。完整表格请参考原文 PDF 第 14-15 页。
主要追踪的需求包括:
| 需求系列 | 描述 |
|---|---|
| RS_TS_00003/00004 | 启动时初始化时基 |
| RS_TS_20048/20049 | 触发时间同步传输 / 提供时基 |
| RS_TS_20050/20051 | 保护时间同步协议 / 检测并处理错误 |
| RS_TS_20052/20053 | 精确时间测量和同步协议 / 偏移值传输 |
| RS_TS_20054/20055 | 用户数据支持 / 不同角色支持 |
| RS_TS_20056 | Pdelay 协议 |
| SRS_BSW_00323/00337/00385 | BSW 通用需求(API 参数检查、错误分类、错误通知) |
7 功能规范
📌 摘要说明(第 7 章):本章定义了 EthTSyn 模块的行为。模块的 API 在第 8 章中定义,配置在第 10 章中定义。详细的功能规范、IEEE 802.1AS 协议实现细节、TLV 字段定义、Pdelay 状态机转换、时序图请参考原文 PDF 第 16-47 页。
7.1 概述
7.1.1 通用
EthTSyn 模块实现基于 IEEE 802.1AS [12] 的时间同步协议。它支持时间主站和时间从站角色,并提供 AUTOSAR 特定扩展。
7.1.2 VLAN 支持
EthTSyn 模块支持在特定 VLAN 上发送和接收时间同步消息。
7.2 初始化
通过 EthTSyn_Init() 初始化 EthTSyn 模块。除了 EthTSyn_GetVersionInfo() 和 EthTSyn_Init() 之外,EthTSyn 的 API 函数只能在模块已正确初始化后调用。
7.3 不同虚拟本地时间源的处理
EthTSyn 模块可以与多个虚拟本地时间源交互。具体使用哪个源由配置决定。
7.4 去抖时间
EthTSyn 模块支持 Timesync PDU 的去抖,以避免高优先级 PDU 阻塞低优先级 PDU。去抖时间通过 EthTSynGlobalTimeDebounceTime 配置。
7.5 用于延迟计算的 Pdelay 协议
Pdelay 协议用于测量两个以太网节点之间的传播延迟。该协议包括三种消息:
- Pdelay_Req:发起方发送的延迟测量请求消息
- Pdelay_Resp:响应方发送的延迟测量响应消息
- Pdelay_Resp_Follow_Up:响应方发送的响应 Follow-Up 消息,包含 Pdelay_Resp 消息的精确发送时间
测量流程:
- 发起方在时间
t1发送 Pdelay_Req 消息 - 响应方在时间
t2接收 Pdelay_Req 消息 - 响应方在时间
t3发送 Pdelay_Resp 消息 - 响应方在 Pdelay_Resp_Follow_Up 消息中报告
t3 - 发起方在时间
t4接收 Pdelay_Resp 消息
传播延迟通过以下公式计算:
propagation_delay = ((t4 - t1) - (t3 - t2)) / 2
⌈ 关键 SWS_EthTSyn 需求:SWS_EthTSyn_00046、SWS_EthTSyn_00047、SWS_EthTSyn_00048、SWS_EthTSyn_00049、SWS_EthTSyn_00050(Pdelay 相关)⌋
7.6 消息格式
7.6.1 符合 IEEE 802.1AS 的 Sync 和 Follow_Up
Sync 消息符合 IEEE 802.1AS 中规定的格式,包含序列号和时间戳信息。
Follow_Up 消息符合 IEEE 802.1AS 中规定的格式,包含 Sync 消息的精确发送时间、序列号和其他 TLV 字段。
7.6.2 符合 AUTOSAR 的 Sync 和 Follow_Up
AUTOSAR 扩展了 IEEE 802.1AS 消息格式,添加了 AUTOSAR 特定的 TLV 字段:
- AUTOSAR TLV 包含 Time Domain ID、Sequence Counter、User Data 和 CRC(可选)等信息
主要消息字段:
messageType:消息类型(Sync、Follow_Up、Pdelay_Req、Pdelay_Resp、Pdelay_Resp_Follow_Up)sequenceId:序列号domainNumber:时间域编号correctionField:校正字段(包含 Pdelay 延迟和驻留时间)sourcePortIdentity:源端口标识- TLV 字段:包括 Status、Time、Organization Extension 等
7.7 作为时间主站
7.7.1 消息处理
时间主站负责:
- 通过
StbM_GetCurrentTime()获取当前全局时间 - 捕获 Sync 消息的硬件时间戳
t1 - 通过 EthIf 发送 Sync 消息
- 在 Follow_Up 消息中报告
t1 - 同样组装和发送 Pdelay 消息
主要 SWS 需求:
SWS_EthTSyn_00070:主站行为SWS_EthTSyn_00071:主站消息组装SWS_EthTSyn_00072:主站传输模式
7.7.2 链路状态和传输模式
时间主站应仅在以太网链路处于活动状态时发送时间同步消息。EthTSyn_SetTransmissionMode 用于控制传输。
7.7.3 消息字段计算和组装
主站根据当前时间组装 Sync 消息的各个字段:
sequenceId:递增的序列号correctionField:从 Pdelay 测量中获取的延迟- 其他 TLV 字段
7.8 作为时间从站
7.8.1 消息处理
时间从站负责:
- 接收 Sync 消息并捕获接收时间戳
t2 - 接收 Follow_Up 消息并提取 Sync 发送时间
t1、Pdelay 等 - 计算全局时间:
global_time = t1 + propagation_delay + (current_local_time - t2) - 通过
StbM_BusSetGlobalTime()将全局时间提供给 StbM
主要 SWS 需求:
SWS_EthTSyn_00080:从站行为SWS_EthTSyn_00081:从站消息接收SWS_EthTSyn_00082:从站消息验证
7.8.2 消息字段验证和分解
从站应验证接收到的消息的各个字段:
- 验证 Sync 和 Follow_Up 消息的 sequenceId 匹配
- 验证消息格式正确
- 验证 TLV 字段有效
- 验证 CRC(如果配置)
7.9 使用交换机的时间测量
在带有时间感知桥接(Time-Aware Bridge)的网络中,需要考虑交换机的驻留时间(residence time)补偿。EthTSyn 支持此功能,通过 correctionField 字段累积驻留时间。
7.10 错误分类
7.10.1 开发错误
| 错误代码 | 描述 |
|---|---|
ETHTSYN_E_UNINIT |
API 服务在未初始化状态下被请求 |
ETHTSYN_E_PARAM |
传递给 EthTSyn API 的参数无效 |
ETHTSYN_E_INIT_FAILED |
EthTSyn_Init 调用失败 |
ETHTSYN_E_INVALID_PDUID |
无效的 PDU ID |
7.10.2 运行时错误
| 错误代码 | 描述 |
|---|---|
ETHTSYN_E_MSG_TIMEOUT |
消息超时 |
7.10.3 瞬态故障
未定义。
7.10.4 生产错误
未定义。
7.10.5 扩展生产错误
未定义。
8 API 规范
8.1 API
8.1.1 导入类型
EthTSyn 模块使用以下导入类型:
Std_ReturnType(来自Std_Types.h)StbM_SynchronizedTimeBaseType、StbM_TimeStampType、StbM_UserDataType(来自StbM)Eth_TimeStampType、Eth_DataType(来自Eth_GeneralTypes.h)PduInfoType、PduIdType(来自PduR)
8.1.2 类型定义
/* EthTSyn 传输模式 */
typedef enum {
ETHTSYN_TX_OFF = 0,
ETHTSYN_TX_ON = 1
} EthTSyn_TransmissionModeType;
/* EthTSyn 全局时间状态 */
typedef enum {
ETHTSYN_GLOBAL_TIME_BASE_NOT_SET = 0,
ETHTSYN_GLOBAL_TIME_BASE_SET = 1
} EthTSyn_GlobalTimeBaseStatusType;
/* EthTSyn 时间域 ID */
typedef uint8 EthTSyn_TimeDomainIdType;
8.1.3 函数定义
EthTSyn_Init
void EthTSyn_Init(
const EthTSyn_ConfigType* ConfigPtr
);
初始化 EthTSyn 模块。
EthTSyn_GetVersionInfo
void EthTSyn_GetVersionInfo(
Std_VersionInfoType* VersionInfo
);
返回 EthTSyn 模块的版本信息。
EthTSyn_SetTransmissionMode
void EthTSyn_SetTransmissionMode(
EthTSyn_TimeDomainIdType TimeDomainId,
EthTSyn_TransmissionModeType TransmissionMode
);
设置时间主站/时间网关的传输模式。
EthTSyn_MainFunction
void EthTSyn_MainFunction(
void
);
由调度程序周期性调用的主函数。
8.1.4 回调通知
EthTSyn_RxIndication
void EthTSyn_RxIndication(
PduIdType RxPduId,
const PduInfoType* PduInfoPtr
);
从 EthIf 模块接收到消息的回调指示。
EthTSyn_TxConfirmation
void EthTSyn_TxConfirmation(
PduIdType TxPduId
);
来自 EthIf 模块的消息发送确认回调。
EthTSyn_TrcvLinkStateChg
void EthTSyn_TrcvLinkStateChg(
uint8 TrcvIdx,
EthTrcv_LinkStateType TrcvLinkState
);
收发器链路状态变化回调。
8.1.5 计划函数
EthTSyn_MainFunction
请参见上文 8.1.3。
8.1.6 预期接口
| API | 描述 |
|---|---|
StbM_GetCurrentVirtualLocalTime |
获取当前虚拟本地时间 |
StbM_GetCurrentTime |
获取当前时间 |
StbM_BusGetCurrentTime |
获取总线的当前时间 |
StbM_BusSetGlobalTime |
设置总线的全局时间 |
StbM_GetTimeBaseStatus |
获取时基状态 |
StbM_GetOffset |
获取时基偏移 |
StbM_GetTimeBaseUpdateCounter |
获取时基更新计数器 |
EthIf_GetCurrentTime |
获取当前时间 |
EthIf_EnableEgressTimeStamp |
启用出口时间戳 |
EthIf_GetIngressTimeStamp |
获取入口时间戳 |
EthIf_GetEgressTimeStamp |
获取出口时间戳 |
EthIf_Transmit |
通过以太网接口发送消息 |
Crc_CalculateCRC32 |
计算 CRC32 |
Det_ReportError |
报告开发错误 |
BswM_EthTSyn_TransmissionModeChange |
通知 BswM 传输模式变更(可选) |
9 时序图
9.1 EthIf_EnableEgressTimeStamp
说明如何通过 EthIf 启用出口时间戳以捕获 Sync 消息的精确发送时间。
9.2 时间主站 Sync/Follow_Up 和 Pdelay — Tx
主站发送序列:
- 主站通过
EthIf_EnableEgressTimeStamp()启用 Sync 消息的出口时间戳 - 主站组装 Sync 消息并通过
EthIf_Transmit()发送 - 在
EthIf_TxConfirmation()中获取 Sync 消息的出口时间戳t1 - 主站组装 Follow_Up 消息(包含
t1、Pdelay 延迟、User Data 等) - 主站通过
EthIf_Transmit()发送 Follow_Up 消息 - Pdelay 测量按 Pdelay 协议执行
图 3:主站时序(参见原文 PDF 第 40 页)
9.3 时间从站 Sync/Follow_Up 和 Pdelay — Rx
从站接收序列:
- 从站接收 Sync 消息并获取入口时间戳
t2 - 从站接收 Follow_Up 消息并提取
t1、correctionField 等 - 从站使用 Pdelay 测量值计算全局时间
- 从站通过
StbM_BusSetGlobalTime()将全局时间提供给 StbM
图 4:从站时序(参见原文 PDF 第 41-43 页)
9.4 使用交换机的时间测量
9.4.1 时间感知桥(带 GTM 作为管理 CPU)— Tx
当 GTM 作为管理 CPU 时,桥接器处理时间同步消息,并通过内部协议与 GTM 通信。
9.4.2 时间感知桥(不带 GTM 作为管理 CPU)— Tx
当没有 GTM 时,桥接器按透明桥的方式处理时间同步消息。
9.4.3 时间感知桥(不带 GTM 作为管理 CPU)— Rx
不带 GTM 的桥接器接收序列,包括驻留时间的累积。
10 配置规范
10.1 如何阅读本章
本章使用标准 AUTOSAR 配置容器符号。
10.2 容器和配置参数
10.2.1 EthTSyn(模块)
| 配置项 | 类型 | 描述 |
|---|---|---|
EthTSynGeneral |
容器 | 通用配置参数 |
EthTSynGlobalTimeDomain |
容器(多) | 全局时间域配置 |
EthTSynPortConfig |
容器(多) | 端口配置 |
EthTSynGlobalTimeMaster |
容器 | 时间主站配置(条件性) |
EthTSynGlobalTimeSlave |
容器 | 时间从站配置(条件性) |
10.2.2 EthTSynGeneral
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynDevErrorDetect |
Boolean | 启用/禁用开发错误检测 |
EthTSynVersionInfoApi |
Boolean | 启用 EthTSyn_GetVersionInfo API |
EthTSynMainFunctionPeriod |
Float | 主函数周期 |
EthTSynEnableEgressTimestamp |
Boolean | 启用出口时间戳 |
10.2.3 EthTSynGlobalTimeDomain
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynSynchronizedTimeBaseRef |
Reference | 引用的同步时基 |
EthTSynGlobalTimeTxPeriod |
Float | 时间同步消息的传输周期(秒),0 = 不传输 |
EthTSynGlobalTimeDebounceTime |
Float | 两次传输之间的去抖时间(秒) |
EthTSynGlobalTimeFollowUpTimeout |
Float | 等待 Follow_Up 消息的超时时间(秒) |
10.2.4 EthTSynGlobalTimeFollowUpDataIDList
包含 Follow_Up 消息的 DataID 列表。
10.2.5 EthTSynGlobalTimeFollowUpDataIDListElement
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynGlobalTimeFollowUpDataIDValue |
Integer | Follow_Up DataID 值 |
EthTSynGlobalTimeFollowUpDataIDLength |
Integer | DataID 长度(位) |
10.2.6 EthTSynPortConfig
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynPortRef |
Reference | 引用的以太网端口 |
EthTSynPdelayConfig |
容器 | Pdelay 协议配置 |
EthTSynPortRole |
枚举 | 端口角色(Master/Slave) |
10.2.7 EthTSynPortRole
| 角色 | 描述 |
|---|---|
ETHTSYN_ROLE_MASTER |
端口作为时间主站 |
ETHTSYN_ROLE_SLAVE |
端口作为时间从站 |
10.2.8 EthTSynPdelayConfig
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynPdelayLatencyEnable |
Boolean | 启用 Pdelay 延迟测量 |
EthTSynPdelayReqPeriod |
Float | Pdelay 请求消息的传输周期 |
EthTSynPdelayReqAndRespEnable |
Boolean | 启用 Pdelay 请求和响应 |
10.2.9 EthTSynGlobalTimeMaster
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynGlobalTimeMasterId |
Integer | 时间主站 ID |
EthTSynImmediateTimeSync |
Boolean | 启用立即时间同步 |
EthTSynCyclicMsgResumeCounter |
Integer | 立即同步的循环消息恢复计数器(消息数) |
10.2.10 EthTSynCrcTimeFlagsTxSecured
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynTxCrcSecured |
Boolean | 主站是否发送 CRC 保护的消息 |
EthTSynTxCrcValidated |
Boolean | 主站是否验证 CRC |
10.2.11 EthTSynGlobalTimeSlave
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynGlobalTimeRxCrcValidated |
Boolean | 从站是否验证 CRC |
EthTSynGlobalTimeRxCrcSecured |
Boolean | 从站是否仅接受 CRC 保护的消息 |
EthTSynGlobalTimeSequenceCounterLimit |
Integer | 序列计数器跳过的最大数量 |
EthTSynTimeAssumptions |
枚举 | 时间假设 |
10.2.12 EthTSynCrcFlagsRxValidated
| 配置参数 | 类型 | 描述 |
|---|---|---|
EthTSynRxCrcValidated |
Boolean | 是否验证 CRC |
EthTSynRxCrcSecured |
Boolean | 是否仅接受 CRC 保护的消息 |
10.3 发布的信息
EthTSyn 模块不发布任何其他信息到外部模块。
翻译说明
- 文档类型:SWS(Software Specification)— 软件规范
- 原文页数:75 页
- 翻译范围:完整翻译了所有章节标题、消息格式、API、配置容器结构
- 保留内容:所有需求 ID(如
SWS_EthTSyn_xxxxx)、技术术语、API 标识符、⌈⌋方框符、文档交叉引用 - 未翻译:版权声明
- 详细的 IEEE 802.1AS 协议实现细节、TLV 字段定义、Pdelay 状态机转换、时序图请参考原文 PDF 第 16-47 页