一种时间触发总线集群启动和重启方法及装置与流程

文档序号:18471218发布日期:2019-08-20 20:19阅读:407来源:国知局
本发明属于计算机应用
技术领域
:,一种时间触发总线集群启动和重启方法。
背景技术
::时间触发构架(tta)是由欧洲委员会资助开发的分布式实时容错系统构架,为下一代汽车、铁路、航空等高可靠性应用领域提供了通用的底层解决方案,提供一个分布式实时高可靠性计算平台,从而降低应用业务的复杂度。时间触发总线(ttp/c)在tta构架的基础上达到了sae(汽车工程师学会)c类标准的要求。ttp采用总线型架构,基于时分复用(tdma)的通信调度策略,总线上各个节点按照预先定义的消息描述表(medl),基于全局时间基的时间槽进行数据传输的调度。由于控制系统高安全性的需求,ttp总线提出了一种分布式的高精度时钟同步算法。通过多个授时节点同时发出授时帧对网络进行同步,避免了传统的集中式时钟同步技术中的授时端单节点故障问题;通过达到十纳秒级的高精度同步过程,提高传输过程中帧到达的“准点率”,使得由于同步偏差导致的时间预留尽可能的减小,从而提高了系统通信的效率。时间槽的组成,由预发送阶段(psp)起始点开始,到下一个时间槽的psp起始点结束。传输阶段(tp)的开始时刻表示数据帧预计被发送或者接收的时刻。这个时刻被称作发送的时间点(at),at应该被集群上所有的节点在同一个精度范围内的时间点知晓,两个传输阶段中间的部分是内部帧间隔(ifg),ifg由psp、空闲阶段(edle)和接收阶段(prp)三部分组成。ttp总线的数据帧包含i、n、coldstart以及x帧共四种类型,其中能够用于集群启动和重启的帧有i、coldstart和x帧,他们的格式如下:(1)i帧a.帧类型设置为1,意指包含显式的c-state;b.模式更该请求使用主机接口中的模式更改请求值;c.控制器状态c-state包含全局时间、集群位置(其中roundslot代表当前所处的时间槽)、64位的成员关系向量;d.crc校验基于帧头和c-state进行。coldstart帧格式与i帧相同,但模式更改请求域只能处于关闭状态。(2)x帧a.帧类型设置为1,意指包含显式的c-state;b.模式更改请求设置为0(“norequest”);c.c-state中的全局时间域设置为主机接口的启动时间域中的内容,环槽位置域设置为节点发送环槽的环槽号,集群模式域设置为冷启动id;成员关系向量中除了冷启动节点,其它所有节点的成员关系向量标志位都置0;d.crc1校验基于帧头和c-state计算,crc2校验基于所有域进行计算。时间触发总线启动过程是集群内部各个节点之间由异步到同步状态的过渡过程。启动过程中各个节点的时间差异可能会发生总线访问冲突,这可能导致启动失败;此外,当系统发生瞬态多故障后需要快速重启总线通信系统。本发明通过在启动过程建立时间同步和全局一致的成员关系来实现时间触发总线容错、快速的集群启动和重启过程。技术实现要素:本发明的目的:本发明提供一种时间触发总线集群启动和重启方法,用于实现时间触发总线快速、可靠的集群启动和重启。第一方面,本申请提供一种时间触发总线集群启动和重启方法,所述方法包括:初始化总线控制器;对所述总线控制器进行监听和监听超时控制;若所述总线控制器满足冷启动触发条件,则对所述总线控制器进行冷启动和冷启动超时控制。可选的,所述初始化总线控制器,具体包括:在总线控制器上电使能后,检测本地medl(messagedescriptorlist:消息描述列表)表配置的可用性,并通过crc校验验证medl表中配置数据的完整性。可选的,所述对总线控制器进行监听和监听超时控制,具体包括:总线控制器在预设的监听超时时间内检查是否接收到带有显式控制器状态的有效帧。可选的,所述冷启动触发条件,具体包括:总线控制器被配置为允许发送冷启动帧;总线控制器的当前冷启动计数低于预设的最大允许冷启动次数;主机生命标记正确更新。可选的,所述对总线控制器进行冷启动和冷启动超时控制,具体包括:总线控制器发送冷启动帧,并对总线控制器进行冷启动的次数进行统计。可选的,在所述对所述总线控制器进行冷启动和冷启动超时控制之后,所述方法还包括:当在一个tdma环槽时间耗尽且到自身的发送时间槽时,执行派系检测:若总线控制器在大多数派系中,则报告有效c-state(controler-state:控制器状态)信息到主机;若总线控制器在少数派系中,则从冷启动状态转换到监听状态;若总线控制器在一个tdma环槽时间内没有收到其他节点的有效帧,则等待一个启动超时时间后重新发送冷启动帧。第二方面,本申请提供一种时间触发总线集群启动和重启装置,所述装置包括初始化单元、监听单元和冷启动单元,其中:所述初始化单元,用于初始化总线控制器;所述监听单元,用于对所述总线控制器进行监听和监听超时控制;所述冷启动单元,用于在所述总线控制器满足冷启动触发条件时,对所述总线控制器进行冷启动和冷启动超时控制。可选的,所述初始化单元,具体用于:在总线控制器上电使能后,检测本地medl(messagedescriptorlist:消息描述列表)表配置的可用性,并通过crc校验验证medl表中配置数据的完整性。综上所述,本发明表述了一种时间触发总线集群启动和重启方法,通过总线控制器初始化、监听和监听超时控制、冷启动和冷启动超时控制以及成员关系的全局整合统一过程,建立有效的同步全局时钟和一致的成员关系,从而快速完成容错的时间触发总线集群启动或重启过程。附图说明图1是本申请实施例提供的冷启动操作示意图;图2是本申请实施例提供的时间触发总线配置场景示意图;图3是本申请实施例提供的启动帧传播时延大于传输时延示意图;图4是本申请实施例提供的派系检测和确认操作的协同示意图。具体实施方式实施例一本发明的目的:本发明提供一种时间触发总线集群启动和重启方法,用于实现时间触发总线快速、可靠的集群启动和重启。本发明的技术方案:一种时间触发总线集群启动和重启方法。时间触发总线集群启动或重启方法通过总线控制器初始化、监听和监听超时控制、冷启动和冷启动超时控制以及成员关系全局整合统一过程,建立有效的同步全局时钟和一致的成员关系,从而快速完成容错的时间触发总线集群启动或重启过程。本发明所述的时间触发总线集群启动和重启方法的步骤如下:(1)总线控制器初始化总线控制器上电使能后首先检测本地medl表配置的可用性,并通过crc校验验证medl表中配置数据的完整性。当medl表通过crc校验时,控制器初始化冷启动计数器为0,并在所有初始化任务成功执行后向主机报告初始化完成,并将控制器转化为监听状态。当检测到有crc错误时总线控制器向主机报告初始化错误,并关闭控制器使其处于freeze状态。(2)监听和监听超时控制处于监听状态的总线控制器,在监听超时时间内等待带有显式控制器状态(c-state)的帧(x帧、i帧或冷启动帧)。当分别在两个通道上接收到符合上述条件的帧,总线控制器检查两个帧是否含有相同的控制器状态。如果控制器状态不一致,总线控制器丢弃掉这两个帧并重新转换到监听状态。当总线控制器收到包含正确控制器状态的帧时,根据帧类型进行如下操作:x帧和i帧:核对帧头中的模式请求域是否被设置以及是否与medl表中的设置相符,如不符则丢弃此帧并等待接收和处理下一个包含正确控制器状态的帧;如果符合要求,总线控制器基于接收到的帧的成员关系向量设置本地控制器状态的成员关系向量,同时整合计数器设置为1并将控制器转化为静默状态,此时控制器接收所有的数据帧并持续的更新本地控制器状态直到成功获取一个发送时间槽,此时控制器设置为活动状态即同步状态。冷启动帧:总线控制器根据接收帧中状态控制字内的环槽号设置本地成员关系向量对应位,并将其他位复位。如果接收到的冷启动帧是发送端的第一个冷启动帧,则丢弃该帧并且标记后重新进入监听状态。整合计数器应该被设置为阈值,表示不再须要正确的接收帧。每个节点的总线控制器监听超时时间设置为两个tdmaround再加上本节点的启动超时时间。listen_timeouti=2*tdma_round+startup_timeouti如果监听超时耗尽并且没有接收到能用于同步的正确帧,总线控制器会重新进入监听状态。如果下述条件满足,总线控制器将会进入冷启动状态:a.控制器被配置为允许发送冷启动帧;b.总线控制器的当前冷启动计数低于最大允许冷启动次数;c.主机生命标记正确更新。(3)启动超时与冷启动帧间隔控制进入冷启动状态的总线控制器通过发送冷启动帧来发起同步。总线控制器的操作如下:a.发送冷启动帧后增加冷启动计数器的值;b.设置控制器状态变量failedslotscounter为0;c.整合计数器设置为阈值(表示不需要接收额外的正确帧来获取节点时间槽);d.设置时钟同步fifo为0。当一个tdma环槽耗尽并且到自身的发送时间槽时,总线控制器执行派系检测。如果控制器在大多数派系中,控制器报告有效c-state信息到主机,并且根据主机生命标记和集群模式请求立即转换到活跃或者静默模式。如果控制器在少数派系中,控制器从冷启动状态转换到监听状态。如果总线控制器在一个tdma环槽时间内没有收到其他节点的有效帧则等待一个启动超时时间后重新发送冷启动帧,两次冷启动帧的发送间隔受冷启动超时时间限制,如1所示。启动超时定时器按照下面公式设置,其中节点0的启动超时定时值配置为0。冷启动超时定义了一个冷启动节点连续发送两个冷启动帧的间隔时间,超时时间设置如下公式所示:coldstart_timeouti=tdma_round+startup_timeouti+δjitter-δpsp其中△jitter是由ttp节点上的总线监护模块引入的抖动,取值为200 ̄300microtick,△psp为时隙起始到at时间点的间隔,取值为760microtick。microtick取值为25ns。(4)成员关系全局整合和统一集群中每个节点的总线控制器均重复进行派系检测和确认操作直至所有节点控制器的成员向量达到一致状态,当所有节点的成员关系达到全局一致时集群启动或重启完毕。之后进行持续维护的过程,保证ttp总线通信系统启动后集群中没有派系存在。发送过冷启动帧的总线控制器在tdma环槽时间结束并且到自身的发送时间槽时进行派系检查。通过对比agreedslot与failedslot的值来判断自己是否同步于集群中的多数派系,如果属于多数派系则控制器进入同步的活动状态并上报主机;如果属于少数派系则控制器重新进入监听状态并等待接收带有正确c-state的数据帧进行再同步,直至派系检测通过,本地控制器状态同步与集群的多数派系。派系检测用来对节点的接收故障进行探测和隔离,防止整个集群分离成几个并行的子集群。总线控制器维护两个计数器agreedslot和failedslot,其中agreedslot统计正常节点个数,failedslot统计故障节点个数,两个计数器在运行中遵循累加原则:a.每个节点在发送数据后agreedslot加1,并在成员关系列表中进行标记;b.若本地节点判定当前时隙无效或者错误,failedslot加1;c.若本地节点判断当前时隙有效,agreedslot加1;d.若节点判定当前时隙为空,那么两个计数器都保持不变,但成员关系列表中对应节点进行错误标记。节点控制器每次执行发送命令前都会进行派系避免检测;当确认计数器小于失效计数器时,则认为当前节点发生故障且当前节点进入冻结状态;否则,将两个计数器清零节点执行数据发送命令。隐式确认用来对节点的发送故障进行探测和隔离,接收节点无需专门的应答帧来告知发送节点是否发送成功,节点的总线控制器通过使用第一、第二后继节点数据帧中的成员向量扩展crc校验来实现对发送节点的隐式确认,具体过程为:a.当节点1没有从后续节点2收到至少一个有效帧,节点1将本地成员关系向量中将节点2复位,并继续选择节点3作为第一后续节点;b.当节点1收到第一后继节点2发送的有效帧后,进行确认1操作(两次crc校验):·check1a:节点1读取本地成员关系向量并将其中节点1和2的成员标志位置位为1,再与从节点2接收到帧进行crc校验;·check1b:节点1读取本地成员关系向量并将其中节点1和2的成员标志位分别置位为0、1,再与从节点2接收到的帧进行crc校验。c.当节点1收到第一后继节点2发送的有效帧且check1a校验通过时,节点1被节点2确认为状态正确可以继续保持在成员关系中;d.当节点1收到第一后继节点2发送的有效帧且check1b校验通过时,则代表节点1或2有错误,还要通过第二后继节点3发送的有效帧进行确认2操作。如果check2a校验通过则确定节点1正确而节点2错误,如果check2b校验通过则确定节点1错误而节点2正确;如果check2a和check2b校验均未通过则选择节点4为第二后继节点重复确认工作。两次校验方法如下:·check2a:节点1读取本地成员关系向量并将其中节点1和2的成员标志位分别置位为1、0,再与从节点3接收到的包进行crc校验;check2b中,节点1读取本地成员关系向量并将其中节点1和2的成员标志位分别置位为0、1,再与从节点3接收到的包进行crc校验。实施例二下面结合具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。一种时间触发总线集群启动和重启方法是通过总线控制器初始化、监听和监听超时控制、冷启动和冷启动超时控制以及成员关系的全局统一过程,建立有效的同步全局时钟和一致的成员关系,从而快速完成容错的时间触发总线集群启动或重启过程。本实施例的配置场景包含4个ttp节点,配置总线循环周期为1ms且每个簇周期包含两个循环周期。其中,单个循环周期内每个节点时间槽均配置为250us,如2所示节点1和4配置为冷启动使能。使用ttpplan、ttpbuild工具生成总线上每个节点的通信配置文件medl表。(1)总线控制器初始化当节点上电后并打开总线控制器后,总线控制器首先检查本地medl表的可用性即medlheader中的配置版本号和globalentrytable的校验和。存在可用的medl表时进而检查表中每一部分的校验和的正确性:a.schedule/protocolparameters区域的调度参数和配置参数校验和计算;b.medlidentifier区域的配置表id和调度id等信息的校验和计算;c.modetable区域分别进行modecontrolentry和roundslotentry校验和的计算,其中roundslotentry分为8个子区域,每个时间槽占其中一个子区域,检查每一个子区域的校验和是否正确。当上述任何一项crc校验错误时,均会导致总线控制器初始化错误,控制器状态从初始化转变冻结状态。当所有crc校验均通过时,总线控制器初始化控制器内部的状态变量例如将冷启动计数器设置为0,之后控制器上报主机初始化完成并将控制器状态从初始化转化为监听状态。(2)监听和监听超时控制总线控制器进入监听状态后,根据medl表中配置的监听超时时间设置定时器。节点1的监听超时时间为2ms,节点2的监听超时时间为2.25ms,节点3的监听超时时间为2.50ms,节点4的监听超时为2.75ms。节点在各自的监听超时时间内等待接收包含控制器状态c-state的有效帧,即正确的冷启动帧。考虑到当总线长度大且传播延迟大于冷启动帧的传输时延时,如3所示,由于各节点上电时间的不同节点2和节点3可能会各自分别同步于发送冷启动帧的节点1和节点4。为了避免上述情况发生,在集群启动或重启时所有节点接收到的第一个冷启动帧将被丢弃,同时总线控制器将重新进入监听状态,通过各节点不同的监听超时和启动超时设置来解决这一问题。。总线控制器在监听定时器超时后仍未收到包含c-state的有效帧时,则根据medl表中的冷启动允许标识选择进入冷启动或重新进入监听状态。例如根据上电时间的不同节点1和4在监听超时后可能进入冷启动状态,节点2和3在监听超时后将重启监听定时器。(3)冷启动和冷启动超时控制节点1和4在各自的侦听超时时间内没有收到i帧或冷启动帧,则根据两者启动时间的不同都有可能会进入冷启动阶段。冷启动的实现分为以下几个步骤:a.设置本地的c-state中全局时间设为控制器启动时间;b.设置本地c-state中时间槽为本节点在第一个tdmaround中的发送时间槽;c.清空本地成员关系向量并置位成员关系向量中本节点的成员标志位;d.将本地c-state赋值给冷启动帧并发送;e.控制器中的冷启动计数器加一、错误时间槽计数器清零,当冷启动计数器达到所配置的最大允许值时控制器进入监听状态。当总线多个节点被配置为冷启动允许时,在集群启动或重启时就可能发生冷启动帧的碰撞,或由于各节点启动时间的先后差异导致tdma周期内除了一个冷启动帧之外没有其他帧的传输,这两种情况下均需要重新发送冷启动帧。结合本实例介绍的配置场景,根据冷启动超时公式计算节点1和节点4的冷启动帧发送间隔分别设置为1.025ms和1.775ms,从而使得冷启动阶段可以正常引导集群中各节点的启动和同步。(4)成员关系的全局统一在本实例所介绍的配置场景下,全局统一的成员关系建立即为节点1、2、3和4的本地成员关系向量均达到0x000f,各总线控制器中各节点的成员关系位均被置位。以节点1为例,如4所示节点2为其第一后继节点、节点3为其第二后继节点,其他节点(例如2和3)在收到冷启动帧并整合完成后的成员关系维护方法也与节点1相似,因此不再赘述。总线广播式的通信方式优点就是节点2和3不需要额外带宽来发送对节点1的确认帧,节点1通过后继节点的数据帧中就能验证自己是否发送成功并被集群中其他节点认可。节点1通过接收第一后继节点2和第二后继节点3发送的有效帧进行确认。当节点1收到第一后继节点2发送的有效帧后,按照确认1中的方法进行两次crc校验从而判别节点1是否发送成功并被认可;如果确认1检查失败但派系检测正确,则仍不能确定是节点1发送错误还是节点2接收错误,节点1将继续等待接收第二后继节点3的有效帧后启动确认2中的两个crc校验,根据校验结果和派系检测结果判断出节点1是否正确以及是否要将节点4作为第二后继节点。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1