徽州骆驼 · 6月4日

AUTOSAR如何将全局时间同步到本地时间?

01 时间同步

车载时间网络系统架构中包含一个核心的时间主节点以及至少一个时间从节点。时间主节点通过发送时间同步消息,向每一个时间域内与之相连的时间从节点精准地分发全局时间基准。这样的机制确保了整个车载网络在时间上的高度一致性和准确性。

图片

Global时基示意

针对不同的通信协议,时间从节点的处理方式有所不同。对于CAN和以太网环境,时间从节点会结合来自发送端的时间戳以及自身生成的接收时间戳,对接收到的全局时间基准进行细致的校正。这一步骤可以消除传输延迟、提升时间同步的精度至关重要。而对于FlexRay其时间同步机制则更加依赖于FlexRay总线自身的本地时间。

此外,每个时间从节点都维护着一个时间基准的本地实例,这个实例的源头是硬件参考时钟。每当接收到新的、有效的全局时间基准值时,这个本地实例都会立即进行更新,以确保其始终与全局时间基准保持同步。而在接收到下一个全局时间基准值之前,这个本地实例则能够自主运行,为车载网络提供稳定的时间参考。这样的设计不仅提升了系统的灵活性,也确保了即使在全局时间同步消息暂时缺失的情况下,车载网络依然能够维持一个相对准确的时间基准。

02 时基类型

时间基准(Time Base)的类型由特定的配置参数定义,具体类型包括:

  • 同步时间基准(Synchronized Time Base):通过时间同步机制所达到的共同时间参考点;
  • 偏移时间基准(Offset Time Base):指本地时间基准与同步时间基准之间的差异,用于校正绝对时间偏差;
  • 本地时间基准(Pure Local Time Base):ECU内部的时钟所表示的时间;

同步和偏移时间基准

每个时间基准都被分配了一个介于0到127之间的时间基准标识符,这些标识符在StbM(Synchronized Time-Base Manager,时间同步管理器)中配置。此外,对于每个偏移时间基准和同步时间基准,时间同步(Timesync)模块都会定义一个时间域(Time Domain)标识符。该标识符实际上是通过网络上的时间同步消息由时间同步模块发送和接收的。

时间域标识符在时间同步模块中配置,并且独立于StbM中的时间基准标识符。对于CAN和FlexRay,时间域标识符的范围是0到15;对于以太网,范围是0到127。由于StbM中的时间基准标识符独立于时间同步模块中的时间域标识符,因此以下示例表示有效的配置:

一个全局时间主节点包含一个同步时间基准,其时间基准标识符为0,在以太网上作为时间域0传输,在CAN上作为时间域1传输。一个时间从节点在以太网上接收时间域0并将其存储为时间基准0,同时也在CAN上接收时间域1并将其存储为时间基准2。时间域与时间基准的实际关联是通过时间同步模块中每个时间域的参数完成的。

对于时间基准标识符为17的偏移时间基准,其底层同步时间基准的时间基准标识符可能为1。另一个时间基准标识符为18的偏移时间基准也可能基于底层同步时间基准1。

03 StbM扮演的角色

根据配置,StbM在时间基准方面可以扮演以下三种角色之一:

  • 全局时间主节点
  • 时间从节点
  • 时间网关

图片

按时基配置StbM角色

在上图中,时间基准StbMSynchronizedTimeBase1被两个时间域(CanTSynGlobalTimeDomain 1和FrTSynGlobalTimeDomain 1)分别引用,这两个时间域分别来自一个CanTSyn时间同步模块和一个FrTSyn时间同步模块。CanTSynGlobalTimeDomain 1配置为时间主节点,而FrTSynGlobalTimeDomain 1配置为时间从节点。这使得StbM成为时间基准StbMSynchronizedTimeBase1的时间网关。

如果时间基准StbMSynchronizedTimeBase1仅被其中一个时间域引用,那么StbM将分别成为时间基准StbMSynchronizedTimeBase1的时间主节点或时间从节点。

全局时间主节点是给定时间基准在整个系统中的起源。其时间基准值通过网络分发给时间从节点。

时间从节点的角色中,StbM根据相应时间同步模块提供的全局时间基准值,更新其内部维护的本地时间基准

StbM中的时间网关是一个被一个时间从节点和一个或多个时间主节点引用的时间基准。引用StbM时间网关的时间从节点在相应的总线上接收时间同步消息,并将接收到的时间基准值传递给StbM。每个引用时间网关的时间主节点都会从StbM中获取网关时间基准值,并在总线上进行传输。根据配置,从节点侧的接收可以自动触发主节点侧的传输,也可以不触发。

因此,时间同步消息不会直接通过AUTOSAR时间网关进行路由。这是因为需要补偿路由延迟。

04 虚拟本地时间

虚拟本地时间这一概念源自于硬件参考时钟,是由硬件参考时钟驱动的时间,并且反过来又驱动同步时基。所支持的硬件参考时钟涵盖以下几种:

  • 操作系统计数器:直接利用操作系统的内部计时机制。
  • GPT(通用目的定时器)计数器:一种专门设计用于时间测量的硬件定时器。
  • 以太网free-running计数器:特别用于记录网络数据包入口和出口的时间戳,确保时间信息的精确性。

为了确保每个同步和本地时间基都能有效地推进其全局时间的本地实例,系统会为每个这样的时基分配一个虚拟本地时间。这一时间被称为相应时基的主虚拟本地时间。此外,当系统支持时间验证等高级功能时,每个同步时间基还可以选择性地分配一个次要虚拟本地时间,即备用虚拟本地时间,以增强系统的容错性和可靠性。

主虚拟本地时间的配置依赖于时基引用的配置容器。这意味着,不同的时基可以根据实际需求配置不同的主虚拟本地时间。例如,当GPT通道被指定为同步时间基的本地时间源时,系统会从相应的GPT定时器值中派生出虚拟本地时间。同样地,如果虚拟本地时间源自GPT或操作系统计数器,系统会将这些硬件参考时钟的时间转换为虚拟本地时间的实际表示。

系统还提供了对特定网络协议支持的灵活性。如果为同步时间基启用了“以太网Global Time支持项”,系统将从相应的以太网控制器自由运行硬件计数器中直接获取虚拟本地时间的当前值。这一机制确保了以太网环境下时间同步的精确性和一致性。类似地,当为同步时基启用“CAN Global Time支持项”时,系统也会从相应的CAN控制器自由运行硬件计数器中派生出虚拟本地时间的当前值,以适应CAN网络中的时间同步需求。

通过这些配置和支持机制,虚拟本地时间得以在复杂多变的系统环境中提供稳定、可靠的时间基准。

05 全局时间的本地实例

StbM需要在以下更新之间完成同步或本地时间基准的全局时间本地实例(TL):

  • 来自时间同步模块(针对同步时间基准的从时间设备)
  • 或来自应用程序(针对全球时间主设备或本地时间基准)

TL的推进可以通过以下方式实现:

  • 基于自由运行的硬件时钟(HW Clock)的软件计算
  • 或通过可调速率和偏移的受控硬件时钟(Disciplined HW Clock)。

通过free-running的硬件时钟完成全局时间的本地实例

下面细阐述如何依据自由运行的硬件时钟来更新全局时间的本地实例(TL)。StbM通过软件中的速率校正机制,从硬件时钟中推导出TL。

在时间基准的确定上,若存在以下情况:

  • 主虚拟本地时间(TV_Primary)可用;
  • 硬件时钟不支持速率和偏移的调整;

则StbM需基于主时间元组和应用速率来计算时间基准的全局时间本地实例TL。具体公式为:

TL = TL_Main + r * (TV_Primary – TV_Main)

该公式适用于同步时间基准和偏移时间基准两种场景。不过,在偏移时间基准的应用中,偏移值本身并不随时间推进而变化,而是保持相对稳定。换言之,对于偏移时间基准,TL和TL_Main所代表的实际是偏移值,而非这些偏移值加上底层同步时间基准的绝对数值。简而言之,它们反映的是相对于某个固定偏移点的时间差异,而非绝对时间点。

主时间元组

显然,StbM在上述公式中运用外推方法时的精度,会受到舍入效应以及用于推导主虚拟本地时间TV_Primary的硬件计数器粒度的影响。

此外,时间基准的精确度还依赖于主时间元组[TL_Main, TV_Main]的处理细节,包括StbM何时及如何对这些时间元组进行插值处理;对于时间从节点或时间网关而言,Time sync模块如何接收并处理这些时间元组,以及全局时间主节点的Time sync模块如何有效地传输它们。

主时间元组由StbM统一负责管理。在每次更新TL_Main时,必须同步更新TV_Main,反之亦然,以保持两者的一致性。

在时间基准的设定上,若存在以下情况之一:

  • 硬件时钟不支持速率和偏移的调整;
  • 配置了备用虚拟本地时间;

则StbM应在以下情形下更新该时间基准的主时间元组:

对于全局时间主节点:

  • 应用程序设定了新的全局时间或新的速率校正值;
  • 从一个时间基准复制生成了另一个时间基准;

对于时间从节点:

  • Timesync模块接收到了新的有效时间元组;
  • 速率适应的偏移校正间隔已到期;

此外,若超过3秒未进行更新,StbM同样会更新主时间元组。这一3秒的间隔是基于32位计算结果值范围(例如,在计算虚拟本地时间差时约为4.29秒)并预留一定安全裕量而确定的,旨在避免主时间元组更新过于频繁,从而减少舍入误差的累积。

值得注意的是,如果应用程序频繁请求全局时间并导致主时间元组不断更新,这种高频率的请求可能会因上述舍入效应而降低精度。因此,必须确保主时间元组的更新不会过于频繁,以免对精度造成不必要的影响。

主时间三元组

当备用虚拟本地时间被启用时,StbM会将主时间元组扩展为主时间三元组,具体包括主本地时间(TL_Main)、主虚拟本地时间(TV_Main)以及备用虚拟本地时间(TV_Fallback_Main)。

StbM负责维护这个主时间三元组,并在需要时通过读取三元组的相关成员来派生主时间元组。每当StbM更新主时间元组时,它会立即使用当前的备用虚拟本地时间值来更新主时间三元组中的备用虚拟本地时间(TV_Fallback_Main)。如果在更新过程中无法确定备用虚拟本地时间,StbM会将TV_Fallback_Main设置为0。这里的“立即”意味着主时间元组和备用虚拟本地时间的采样是在同一时间点进行的,理想情况下是在一个原子操作中完成的。然而,由于备用虚拟本地时间主要用于合理性检查和场景保持,因此对其采样的时间约束相较于主时间元组本身来说并不那么严格。

不过,将虚拟本地时间设置为0是对“卡住”或不可用计数器的一个合理选择,因为在正常的系统设置中,虚拟本地时间永远不会返回0。另外,如果在更新主时间三元组时无法确定主虚拟本地时间(例如,因为底层硬件计数器尚未激活),StbM会将主时间元组中的主虚拟本地时间(TV_Main)设置为0。

通过受控硬件时钟完成全局时间的本地实例

这一小节会介绍在受控硬件时钟(即由底层硬件驱动、支持偏移和速率调整的硬件时钟)的支持下,全局时间本地实例(TL)的推进机制。

目前,受控硬件时钟主要支持引用底层以太网硬件时钟的同步功能和本地时间基准。

在StbM推进受控硬件时钟的值时,会利用以下两个API调整硬件时钟:

  • EthIf_SetPhcTime:用于设定绝对值。例如,ECU重置后,从NvM中恢复时间时,在全球时间主节点侧使用。
  • EthIf_SetPhcCorrection:用于平滑调整硬件时钟的速率,并校正微小的偏移量。在时间从节点侧,这通常在接收到新的时间元组后,或当通过速率调整进行偏移校正的适应间隔已过期时适用。  

在StbM推进受控硬件时钟的值时,还会使用以下两个API来读取其值:

  • EthIf_GetPhcTime:用于获取当前全局时间的本地实例(TL)。
  • EthIf_GetCurrentTimeTuple:用于获取当前时间元组[TL, TV],即当前全局时间的本地实例(TL)和相关时间戳的虚拟本地时间(TV)。 

在以下条件下,StbM应通过调用上面的API(EthIf_GetCurrentTimeTuple)来获取当前时间元组[TL, TV]:

  • 已配置受控硬件时钟;
  • StbM使用相同的硬件时钟单元来推导虚拟本地时间和全局时间的本地实例。 

在以下条件下,StbM应通过连续调用以下API来获取当前时间元组[TL, TV]:

  • 已配置受控硬件时钟;
  • 但StbM不使用相同的硬件时钟单元来推导虚拟本地时间和全局时间的本地实例。

此时,应首先调用EthIf_GetPhcTime从参数timeStampPtr中获取全局时间(TL),然后调用StbM_GetCurrentVirtualLocalTime获取虚拟本地时间(TV)。需要注意的是,API的调用顺序应保持连续性,不应被中断。

在缺少主虚拟本地时间时处理全局时间的本地实例

当主虚拟本地时间可用时,时间基准的全局时间的本地实例将基于该主虚拟本地时间推导得出。然而,若时间基准的主虚拟本地时间失效,但系统已为该时间基准配置了备用虚拟本地时间,StbM仍能利用此备用虚拟本地时间来推算出时间基准的全局时间的本地实例。备用虚拟本地时间在这种情况下起到了维持本地推算全局时间实例的能力。

“本地”一词在此处特指全局时间的本地实例仅在本地应用请求时被提供,并不会在网络上进行分发。这种情况之所以重要,是因为时间同步模块当前依然依赖于StbM_GetCurrentVirtualLocalTime函数的调用。一旦主虚拟本地时间不可用,该函数将返回E_NOT_OK错误,进而使得时间同步模块无法正常处理任何发送或接收的时间同步请求。

以下图说明如果主虚拟本地时间发生故障,然后从中断中恢复,则如何导出时基全球时间的本地实例

图片
主虚拟本地时间临时中断

END

作者:不可说
来源:汽车电子与软件

推荐阅读:

更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5795
内容数
526
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息