OSEK直接网络管理(NM)规范

发布时间:2014-02-25

OSEK直接网络管理(NM介绍
OSEK直接网络管理(NM赋予节点“消息地址”的概念,即每个网络上的节点有唯一的标识号。NM规范没有定义最大的节点标识号,但建议采用8位地址(0-255)。虽然底层物理网络不支持消息地址,但直接NM要求间接实现对消息地址的支持。一个网关节点可连接不同的网络,并且在每一网络中它的消息地址可能是不同的。如图3 2所示:

3 2 两个总线网络中的逻辑环结构

在图3 2中,子网13个节点在逻辑上形成一个环,称之逻辑环LogicalRi ng)。逻辑环通过环消息(Ring Message)序列实现消息传输。环消息自低地址节点(ID号小)向高地址节点(ID号大)发送,再由最高节点传回最低节点,形成一个环。逻辑环上的消息交换机制如图3 3所示:

3 3 逻辑环上的消息交换机制

直接NM还要求网络广播的实现,允许异步广播Alive消息和limpHome消息。Alive消息指定网络上一个新的节点;ImpHome消息指定一个不再能工作的节点。 NM通过传输NM消息来确定网络的内部状态,状态反映了NM当前运行时的信息。状态是分层级的,总的内部状态如图3 4所示:


3 4 OSEK网络管理总的内部状态

当系统复位时,NM进入NMOff状态;调用StartNM(使得NM进入NMOn状态;调用StopNM(使得NM进入NMShutdown状态。函数StartNM(StopNM(NM的核心APIStartNM(初始化一个NM逻辑环;StopNM(改变NM的状态为NMShutdown,执行清除操作,然后进入NMOff状态。
其中,NMOn状态又有如下子状态(表3.1):
3.1 NMOn的子状态

NMOn存在两组并行子状态:NMInitNMAwakeNMBusSleepNMActiveNMPassiveNMOn的并行子状态如图3 5所示:

3 5 NMOn的并行子状态

NM进入NMOn状态时,NMInitNMActive是其缺省的初始化状态。NMInitNM组件内部的瞬时初始化状态。完成初始化任务后,即转入NMAwake状态并
保持,直到转到总线睡眠的条件被满足才转入NMBusSleep状态。当系统处于NMBusSleep状态时,一旦接收到NM消息,即转入NMInit状态。
在并行状态图中,当系统处于NMActive状态时,NM通信正常运行;当SilentNM(被调用时,本地节点进入NMPassive状态,并停止参与逻辑环组成。为了返回NMActive状态,只需调用TalkNM(函数。
系统执行完NMInit状态所要求的动作后,即转入NMActive状态。NMAwake状态有如下子状态(表3.2):
3.2 NMAwake的子状态

NMAwake的状态图如图3 6所示:

3 6 NMAwake的状态图

NMReset子状态是进入NMAwake状态后的缺省状态,NM在此时重置NM的通信链路、有关的计数器、参数等。初始化完成,NM将检查NM消息是否正确的收发,然后转入NMNormal状态并保持。
一旦致命错误发生将切换到NMLimpHome状态。当系统处在NMLimpHome状态时,系统将会传输一个周期性的LimpHome消息。NM继续监听网络,以便确定消息传输是否已被恢复从而切换回NMNormal状态。
汽车网络上的节点是多种多样的,可能在不同时刻运行、开关或激活,也有可能因节点或网络的故障而失效,因此网络的配置是变化的。NM维护当前网络的配置,并可以按要求为应用程序提供这些信息。
NM识别两种配置:实际(Actual)配置和故障(LimpHome)配置,实际配置指示可访问的节点,而故障配置指示那些因故障退出逻辑环组成的节点。

NM并不管理应用程序的模式(APPMODE),但是NM管理两个主要的操作模式,对应于内部状态的NMAwakeNMActive)和NMBusSleep。节点在NMAwake操作模式下,参与逻辑环组成并监视网络上所有同处于NMAwake模式的节点:果一个节点进入NMBusSleep操作模式,就不再参与逻辑环上的NM通信。 NM消息包含NM协议数据单元(NMPDU)。NMPDU在通信网络上传输,其结构如图3 7所示:

3 7 NMPDU的结构

地址域包含源消息地址和目的节点地址。控制域包含关于消息类型的信息,上述部分是必选部分,而数据域则是可选部分,它包含特定应用程序的数据。 为了易于标识NM消息和其它消息,NM采用基地址(ID_Base)和窗口Window_Mask)机制,类似于IP中的网络号与子网掩码。如果一条消息的ID满足:
ID & WINDOW_MASK = = ID_BASE 则认为该消息是NM消息。假设有一个子网,网络配置中有4个节点,ID1-4如果采用8位消息地址和11位掩码,设定ID_BASE0x700WINDOW_MASK0x7F8,那么来自集合{0x701,0x 702,0x 703,0x 704}的任一条消息就是NM消息。
报警器的设计:
直接NM定义了5个报警器,并通过其控制逻辑环上消息的收发,进而监控网络配置和节点状态。比如节点从收到一个Ring消息到重传该Ring消息的间隔时间Ttyp就是报警器Ttyp控制的。详细定义如表3.3所示:
3.3 NM所用报警器的定义

逻辑环运行:

调用StartNM(启动直接NM时,NM执行一系列初始化操作,然后广播第一NM消息——Alive消息。Alive消息通知网络上的其它节点(如果有的话),当前节点加入逻辑环,并启动Ttyp报警器。当一个活动节点接收到一个Alive消息时,它将执行以下步骤:
1. 将发送节点作为在线节点添加到网络配置中; 2. 本地节点确定新节点是否为环中的逻辑后继节点。
任何时候,如果数据链路层通知NM消息失败,则启动Ttx报警器,并增加计数器的值。如果计数器超过一个设定的阀值,NM将进入LimpHome状态。否则,Ttx到时NM重传消息。
逻辑环与802.5令牌环类似,在网络中只有一个节点控制Ring消息。当节点接收到Ring消息并且Ttyp定时器到时,发送该消息。NM启动时在Alive息传输之后,网络处于瞬时状态,在该状态下总线上可能存在Alive消息和Ring消息,以及不同的情况:
1.如果接收到Alive消息,如前所述节点更新配置和后继节点;
2.如果在Tmax到时之前,节点接收到一个Ring消息,则取消定时器,并处Ring消息;
3.Ttyp到时,本地节点发送Ring消息;
4.如果在本地节点发送Ring消息到数据链路层和消息发送确认返回之间接收到一个Ring消息,节点将忽略该消息以确保Ring消息的唯一性。 当接收到一个Ring消息时,本地节点检查NMPDU的目的地址,根据该域的有效值,采取如下操作:
如果Ring消息的目的地址不是本地节点,取消Ttyp报警器,然后重启Tmax报警器。NM检查源地址、目的地址操作码,据此更新网络配置和切换状态; 如果Ring消息的目的地址是本地节点,取消Tmax报警器,然后重起Ttyp报警器。如果源节点在配置信息中标识为离线,则更新为在线。
当逻辑环中没有Alive消息传输,并且唯一的Ring消息沿逻辑环传递一周后,网络状态从瞬时状态切换到稳定状态。当网络处于瞬时状态时,数据中的数据无效。
NM提供了检测离线节点的机制,如果Tmax到时则NM将进入NMReset状态试图重建逻辑环从而返回NMNormal状态,这样离线节点将被排除在新的逻辑环组成之外;NM还提供了检测节点被跳过的机制,如果一个节点被挑过,它立即发送一个Alive消息,以通知其它节点它仍然在线。
当节点因故障进入LimpHome状态后,由报警器Terror控制周期性的发送LimpHome消息,当NM被停止,或总线进入睡眠,或接收到来自网络的一个有效消息时(意味着通信恢复),进入NMReset进行初始化。当节点收到其它节点的LimpHome消息时,更新LimpHome配置和Actual配置。


OSEK直接网络管理(NM)规范

相关推荐