Autosar Time Sync 时间同步
引入车载以太网之后,很好地解决了有大量数据交换或者发布/订阅模式需求的场景,不过呢,车内也有不少对通信过程中包含时间约束的应用场景,本文将介绍Classic AUTOSAR中和时间同步有关的内容。
前言
首先,我们考虑以下场景:
- 我们创建了两个不同的Runnable,它们都需要根据某一操作指令,控制对应的执行机,为了保证执行能正确达到预期,我们需要保证它们能同时(或者以固定的偏移量)去控制执行机。
- 车身周围的环视摄像头,我们需要读出图像数据并且做融合,需要保证处理的各个摄像头数据时同步的;或者是发生故障时记录当时的故障数据,也需要保证能记录到当前时间点的所有数据
无论是哪一种情况,关键词就是“同步”,我们需要有一个模块来管理同步时间基准。当然,在AUTOSAR的规范里,被称作为StbM——Synchronized Time-base Manager。
时间基准既可以代表运行时长,时间基准来源,也可以是真实世界时间。例如:
- GPS时间(绝对时间)
- 车辆总运行时间(相对时间)
- ECU启动时间(相对时间)
StbM
我们首先来看一下官方文档如何说明这个模块的。
作为管理模块,StbM并不会指定,也不提供任何网络时间协议,一切和总线类型和时间协议有关的工作都需要由上图蓝色框所示的<bus>TSyn来完成。
收到<bus>TSyn提供的信息之后,StbM就可以来同步它与其他节点的时间基准。
作为时间基准的“代理”,StbM提供的时间信息,会提供给对应的“消费者”(OS & SWC)。
一般地,硬件参考时钟被用来作为基准时间的实现。由于硬件参考时钟达到寄存器最大值时会“溢出”再次从0开始增加,软件中会增加计数器共同来实现虚拟本地时间。
引入频分(Rate Deviation)以及偏移(Offset)之后,虚拟本地时间可以用来作基准时间。
三种时间“消费者”
还是这张图,我们来看看各个消费者是如何与StbM进行交互的。
Active Customer
- 从StbM读取时间信息(箭头2)
- 根据应用信息,由StbM更新时间基准(箭头3)
Triggered Customer
- 仅和OS调度表同步功能有关(箭头1)
Notification Customer
- 时间基准状态改变(例如发生了timeout时间)(箭头4)
- 时间基准达到给定值(箭头4),这个给定值是由消费者设定的(箭头5)
时间服务
在汽车当中,为了完成时间同步,我们会定义不同的Master与Slave,它们之间靠<Bus>Tsync来完成时间信息的传送。
例如上图,我们可以有一个系统级的Master---Global time master,其他的ECU可以形成不同的time domain,并定义各自的time master与slave。
如何做时间同步
如上图所示,Master提供时间基准给其他ECU,由于同步前每个ECU都有自己的基准时间,为了能够更新本地的基准时间保持和Master同步,需要知道两个基准时间的偏移量(offset)。
Master周期性地发送Sync帧给Slave,那么Slave能够在t2时间收到Sync帧并记录t2时间。由于发送时的t1时间只有发送时刻才能得到,t1时间是无法和Sync帧一块儿发送的,因此需要再发送一次Followup帧,将t1时间作为数据传送给Slave。
Slave收到之后就能根据t2-t1-d得出这个offset,修正自己的基准时间,完成同步。
不过呢,你肯定会发现一个问题,就是总线上传输时间d,包括经由路由或交换机的延时没有被考虑在内,算式虽有,可还是无法完成计算。
为了计算出d的大小,我们可以采取这样的方案:
- Slave发送PathDelayReq帧给到Master,并记录发送时间t1,相应的,Master记录接收时间t2。
- Master回送PathDelayResp帧,记录t3时间,Slave记录接收时间t4。
- Master再发送一个PathDelayRespFollowup帧,将t2, t3时间作为数据发送给Slave。
- Slave根据算式 ((t4-t1)-(t3-t2))/2得到传输时间d。
硬件时间戳
如果以太网控制器集成有时钟,能够为以太网消息加上硬件时间戳,那么时间同步的精确度可以进一步提高。如果你使用的是EB的以太网驱动,那么有无硬件时钟的两种情况,都能支持。
Best Master Clock Algorithm (BMCA) 最佳主时钟算法
在实际工程中,为了精确度或是冗余度,可能会存在多个Master的情况,这个时候需要用到BMCA算法。
Master会发送Announce消息,来向各个Slave声明自己是主时钟,Slave会选择更好的那一个。
时间同步网关
查了下我司软件,如果同时配置了本节点为Master和Slave,那么就会作为Gateway的角色参与时间同步。(强烈要求广告费= =..)
任务同步
之前有说到,OS是目前定义的唯一一个triggered customer,需要提供接口给到Stbm做调度表同步,也即修改调度表对应的Time Base。
在同步之前,Stbm会检查OS调度表的状态,只有当状态处于WAITING,RUNNING或者RUNNING_SYNCHRONOUS时才能进行同步操作。
QoS
待更新
以太网时间同步EthTsync
以太网时间同步机制基于PTP (Precision Time Protocol) ,在IEEE1588和IEEE802.1AS 中有对应描述。
IEEE802.1AS, 也被称作gPTP (generalized Precision Time Protocol), 可以被视为IEEE1588的一个子集。
然而, 无论是IEEE1588还是IEEE802.1AS,本身都不是基于车载需求而开发出来的,因此,目前所用的以太网时间同步机制基于IEEE802.1AS有一定的扩展以及限制。
由于车载以太网中,硬件拓扑,ECU等都是静态的,所以BMCA算法往往也是不需要的。
Autosar Time Sync 时间同步相关推荐
- VovSoft Time Sync(时间同步软件)v1.8官方版
VovSoft Time Sync是一个轻量级的Windows系统时间同步软件,只需简单的点击几下即可将计算机的时间同步到服务器时间.VovSoft Time Sync的主要目的是使您的Windows ...
- AUTOSAR时间同步
本文为大家详细介绍了AUTOSAR时间同步,主要分为以下5个部分 为什么需要时间同步 AUTOSAR时间同步StbM模块介绍 CanTSync同步机制介绍 EthTSync同步机制介绍 总结 为什么需 ...
- Kvaser Memorator Pro 2xHS v2
功能强大的专业级记录仪 Kvaser Memorator Pro Kvaser 拥有超过 30 年 CAN 总线技术的研发经验与超过 60 种各类 CAN 总线产品.高品质,高可靠性与全面的第三方配套 ...
- autosar 时间同步
时间同步 Autosar就是让ECUs的软件架构标准化: 1.让软件和硬件分的清清楚楚 2.让不同功能的软件模块分的清清楚楚 3. 非常方便模块再利用 4. 减少开发成本,提高质量和效率 就像是统一了 ...
- Autosar BSW开发必知的“术语”+“缩写”概念-1-诊断通信篇
如何使用该博文? ==>您可以将该篇博文当做"字典",遇到疑惑的Autosar"关键字",使用组合键Ctrl+F,快速查找该关键字. 推荐Autosar培 ...
- 车载以太网时间同步之EthTsync
车载以太网时间同步之EthTsync 前言 首先,请问大家几个小小问题,你清楚: 你知道EthTsync模块的主要作用是什么吗? EthTsync模块与其他AUTOSAR基础软件模块交互关系: Eth ...
- 【小猫爪】AUTOSAR学习笔记10-Communication Stack之CanTsyn模块
[小猫爪]AUTOSAR学习笔记10-Communication Stack之CanTsyn模块 前言 1 时间同步的引入 2 时间同步的角色 3 时间同步过程 3.1 四种报文 3.2 时间同步过程 ...
- Ubuntu 18.04时间同步
Ubuntu 18.04时间同步 原文连接: 原文链接 内容: Sync Clock with Time Servers through the Command Line Check Current ...
- linux实现时间服务器视频,linux实现时间同步有哪几种方法
原标题:linux实现时间同步有哪几种方法 方法一:用ntpdate从时间服务器更新时间 如果linux系统没有ntpdate这个命令,可以输入以下代码进行安装 yum install ntp 安装完 ...
最新文章
- 【bzoj1951】 Sdoi2010—古代猪文
- 拿高薪的程序员,都学习了什么编程语言?
- Java编程的逻辑 (29) - 剖析String
- 【转】pdf 中如何把几页缩小成一页打印
- 娓娓道来Promise
- Android 欢迎页面的编写
- pugixml解析Word
- 秒懂机器学习---当机器学习遇上决策树....
- JYmusic音乐网站管理系统源码
- dicom文件转raw以及mhd时一些注意事项总结
- SQL Server Profiler(二)
- python零基础自学教材-Python零基础入门到精通自学视频教程
- 一个基于protobuf的极简RPC
- 十一、JAVA接口的定义和使用
- 小程序apkg还原_如何禁用微信小程序(适合任何机型的完美解决方案)
- Array Implementation of min-Heaps 最小堆数组实现
- 中华神话传说中神仙全表(ZZ)
- _WIN32_WINNT not defined
- 关于Java中Match类的appendReplacement()方法的一个坑{ character to be escaped }
- 力扣-股票的资本损益