引入车载以太网之后,很好地解决了有大量数据交换或者发布/订阅模式需求的场景,不过呢,车内也有不少对通信过程中包含时间约束的应用场景,本文将介绍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 时间同步相关推荐

  1. VovSoft Time Sync(时间同步软件)v1.8官方版

    VovSoft Time Sync是一个轻量级的Windows系统时间同步软件,只需简单的点击几下即可将计算机的时间同步到服务器时间.VovSoft Time Sync的主要目的是使您的Windows ...

  2. AUTOSAR时间同步

    本文为大家详细介绍了AUTOSAR时间同步,主要分为以下5个部分 为什么需要时间同步 AUTOSAR时间同步StbM模块介绍 CanTSync同步机制介绍 EthTSync同步机制介绍 总结 为什么需 ...

  3. Kvaser Memorator Pro 2xHS v2

    功能强大的专业级记录仪 Kvaser Memorator Pro Kvaser 拥有超过 30 年 CAN 总线技术的研发经验与超过 60 种各类 CAN 总线产品.高品质,高可靠性与全面的第三方配套 ...

  4. autosar 时间同步

    时间同步 Autosar就是让ECUs的软件架构标准化: 1.让软件和硬件分的清清楚楚 2.让不同功能的软件模块分的清清楚楚 3. 非常方便模块再利用 4. 减少开发成本,提高质量和效率 就像是统一了 ...

  5. Autosar BSW开发必知的“术语”+“缩写”概念-1-诊断通信篇

    如何使用该博文? ==>您可以将该篇博文当做"字典",遇到疑惑的Autosar"关键字",使用组合键Ctrl+F,快速查找该关键字. 推荐Autosar培 ...

  6. 车载以太网时间同步之EthTsync

    车载以太网时间同步之EthTsync 前言 首先,请问大家几个小小问题,你清楚: 你知道EthTsync模块的主要作用是什么吗? EthTsync模块与其他AUTOSAR基础软件模块交互关系: Eth ...

  7. 【小猫爪】AUTOSAR学习笔记10-Communication Stack之CanTsyn模块

    [小猫爪]AUTOSAR学习笔记10-Communication Stack之CanTsyn模块 前言 1 时间同步的引入 2 时间同步的角色 3 时间同步过程 3.1 四种报文 3.2 时间同步过程 ...

  8. Ubuntu 18.04时间同步

    Ubuntu 18.04时间同步 原文连接: 原文链接 内容: Sync Clock with Time Servers through the Command Line Check Current ...

  9. linux实现时间服务器视频,linux实现时间同步有哪几种方法

    原标题:linux实现时间同步有哪几种方法 方法一:用ntpdate从时间服务器更新时间 如果linux系统没有ntpdate这个命令,可以输入以下代码进行安装 yum install ntp 安装完 ...

最新文章

  1. 【bzoj1951】 Sdoi2010—古代猪文
  2. 拿高薪的程序员,都学习了什么编程语言?
  3. Java编程的逻辑 (29) - 剖析String
  4. 【转】pdf 中如何把几页缩小成一页打印
  5. 娓娓道来Promise
  6. Android 欢迎页面的编写
  7. pugixml解析Word
  8. 秒懂机器学习---当机器学习遇上决策树....
  9. JYmusic音乐网站管理系统源码
  10. dicom文件转raw以及mhd时一些注意事项总结
  11. SQL Server Profiler(二)
  12. python零基础自学教材-Python零基础入门到精通自学视频教程
  13. 一个基于protobuf的极简RPC
  14. 十一、JAVA接口的定义和使用
  15. 小程序apkg还原_如何禁用微信小程序(适合任何机型的完美解决方案)
  16. Array Implementation of min-Heaps 最小堆数组实现
  17. 中华神话传说中神仙全表(ZZ)
  18. _WIN32_WINNT not defined
  19. 关于Java中Match类的appendReplacement()方法的一个坑{ character to be escaped }
  20. 力扣-股票的资本损益

热门文章

  1. C语言学习书籍 零基础入门篇
  2. 计算机网络设备装配调试员高级,计算机及外部设备装配调试员
  3. Android模拟时钟和数字时钟示例
  4. 将你的老旧Android平板或手机改造成服务器
  5. Linux系统下利用Impost3r劫持sudo命令窃取凭据
  6. java 文件大小计算
  7. Android Webview加载网页内容不全
  8. matlab int 32,Matlab数字
  9. Android创建杀不死的Service
  10. 小学奥数思维训练题(十一)