分享

AutoSAR中的时钟同步机制

 ZHAOHUI 2023-09-27 发布于上海

图片

Fig 1

AutoSar CP中的时间同步部分主要由StbmTimeSyncOverEth和底层的以太网模块组成。

底层的以太网模块主要负责收发报文和时间戳。

如果系统设计决定使用网卡NIC的时钟作为全局的时钟源,则网卡硬件需要在Sync等报文进出网口的时候,使用自身的时钟给这些报文打时间戳,并把这些时间戳提供给上层的TimeSyncOverEth

要注意这里打时间戳不是说把时间戳打到Sync等报文上。而是记录下这个时间点,并通过别的接口单独提供给TimeSyncOverEth

系统设计不使用网卡NIC的时钟作为全局时钟源的情况暂时不讨论。

StbmTimeSyncOverEth模块共同完成1588802.1as协议。总的来说,TimeSyncOverEth偏重于报文的收发和从报文中计算出时间值。Stbm偏重于将TimeSyncOverEth计算出来的时间和ECU的具体结合。

Fig 1展示了这些模块之间的关系,Eth NIC负责通信和使用自身的HwClock对报文打时间戳。同时VirtualLocalTime也可以使用Eth NIC中的HwClock作为时钟来源。Virtual Local Time中的HwCounter会从Eth NIC中读取HwClock的值。SwCounter的作用就是扩展HwCounter的计数范围,所以基本上将Virtual Local Time中的SwCounterHwCounter一起看作一个大寄存器就好了。

注意VirtualLocalTimeNIC中的HwClock都没有具体的UTC时间信息,只是简单的timer读数。

TimeSyncOverEth模块收到各个报文后,根据Sync中的时间值,FollowUp中的correction和相应的Pdelay值,计算出真实的时间值,并把这个时间值和相应的时间戳(即相应的Sync报文到达网口的时候NIC记录下的timer读数)给到Stbm。计算过程详见1588/802.1AS

图片

Fig 2

Stbm的内部逻辑可综合参考Fig 1Fig 2。我觉得我画的Fig 1autosarFig 2更容易理解一点。

Stbm内部主要的概念有三个,一个是Virtual Local Time,一个是Synchronized Time Base,一个是Offset Time Base

上面已经说过,Virtual Local Time没有具体的UTC时间,只是一个软硬结合的大计时器,只能用来记录时间的流逝(也就是计时器读数的增长),而不能表示具体的时间。

具体的UTC时间的表示是Synchronized Time BaseOffset Time Base维护的。其中Offset Time Base的时间是从Synchronized Time Base的时间加上一个offset得到的,其余没有什么特别。所以初步理解的时候主要看Synchronzied Time Base。下面简称Time Base

AutosarStbm允许维护32个不同的Time base,主要是备份用。在系统层面,一个Timebase会对应系统中的一个Time domain

各个Timebase的主要任务就是维护Virtual Local Time和具体的UTC时钟之间的关系。不同的time base会和不同的time master同步,不同的time master频率不一样,所以不同time base对时间的“理解”也不一样。这里的“理解”包含两个意思,一个是时间的绝对值,一个是时间走的快慢。比如,time base 1认为virtual local time +10UTC时间就+1mstime base 2认为virtual local time +12UTC时间+1ms。这样的区别是因为time base 1time base 2同步到了不同的time master上了。

图片

Fig 3

Fig 3对于理解Stbm的工作原理更有帮助。

Fig 3中可以看到,NICtimer读数=8的时候收到了Sync报文,最终TimeSyncOverEth将“time = 10.11LocalTime = 8”这样的信息给到了Stbm。所以现在StbmTimeBase1知道,“在Virtual Local Time =8(同时NIC HwClock也是8)的时候,实际时间是10.11

AppTimeBase1查询时间(Stbm_GetCurrentTime())时,TimeBase1发现现在Virtual Local Time1919要怎么读到autosar没定义,我理解是非标的操作)。

所以current time = 10.11 + 19-8* factor。这就是autosar时间同步机制的基本思路。APCP一样的。

autosar的设计中,时钟的调谐其实就是调上面公式的factor,也就是说autosar的设计是通过微调factor来使slave的频率和master一致。但是如果某个ECU选用的时钟源是可调的,比如PLL,那也可以在硬件层面调整频率。但那样的话就不能支持多time domain的系统设计了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多