时间同步的概念
给出几个应用场景:
GPS授时
车载系统 传感器与处理器之间的时间同步
汽车上的各个ECU基本都是实时性非常强的控制器,在关联ECU之间或ECU内部各个软件模块之间通常需要在大致同步的时间节拍上运行,特别是在某些高速场景,些微时间的偏差可能引发的后果是灾难性的。以ADAS系统为例,感知模块检测到一个障碍物,控制决策模块需要知道这个障碍物是在什么时间检测到的,以此作出响应。如果感知模块和控制模块都在一个控制器内还好,延时不会很大,若是分布在不同的控制器中,感知模块发送的障碍物信息携带的时间戳与实际检测到的时间偏差太大,那么等控制模块作出响应时,可能汽车已经撞到障碍物上了。所以,时间同步显得尤为重要,各个ECU之间要有一个一致的时钟Global Time (GT)来提供相对准确、精度足够的绝对时间值,并且将此时间同步到各个ECU。
时间同步技术就是为了解决精确获取传感器采样时间的,在以太网、CAN、Flexray总线上都有相应的实现。时间同步信息以广播的形式从Master(TM)节点发送至各Slave节点(TS),或者通过时间网关将时间同步信息同步至其他子网络,用于解决各ECU因硬件时钟信号偏差、总线仲裁、总线传输、软件处理等原因带来的时间延迟。
标准时间授时
下面的知乎链接 详细给出了在互联网中时间同步的基本做法
(和上文相似的文章:一文读懂AUTOSAR CAN时间同步)
时间戳
时间戳就是对某一时刻对应时间点的记录,在硬件中打时间戳就是寄存器锁存当前时刻的syscnt值。
时间同步
时间同步的重要指标是时间精度,不同的精度要求会影响:
会对应不同的时钟源频率和相位稳定的要求
会对同步算法有不同的要求
直接决定了哪些同步过程中的延迟是可以忽略不记的。
比如上面链接中的两类同步:
soc和外部网关的时间同步,这一类存在以太网传输,以太网的传输延迟比较大,在时间同步时就会考虑传输延时。同样在互联网授时过程中也会考虑网络延时。不过在以太网上有专门的时间同步协议:网络时间同步现在有2种同步协议NTP和PTP(可参考链接网络时间同步是怎么实现的?怎样消除延迟带来的影响?及该文后面的评论)。
MCU与soc或mcu与CAN总线的时间同步 都没有考虑同步信息在两个芯片间的传递时间
这里面MCU与soc之间是通过GPIO的中断处理来时间同步,mcu与CAN也是硬线传递的时间戳。当时间精度不高时,这些传输时延都被忽略了。
如果时间同步精度要求较高,即使时间戳在soc内部也会考虑时延的影响。比如有以下几个因素
soc芯片过大,syscnt一般在AON中,不下电,要传到各个需要使用TS的模块,这些模块有的离syscnt近有的离syscnt远
时间戳被运行在各个不同时钟频率的IP锁存时,存在跨时钟域的影响(一般时间戳用gray码传递)
所以对于第一种情况,远近不同导致的delay不同,可以要求不论远近都加上相同的delay。对于异步导致的偏差是没法消除的,所以这些误差都在考虑在精度之内。