OSEK直接网络管理(NM)规范
发布时间:2014-02-25
OSEK直接网络管理(NM介绍
OSEK直接网络管理(NM赋予节点“消息地址”的概念,即每个网络上的节点有唯一的标识号。NM规范没有定义最大的节点标识号,但建议采用8位地址(0-255)。虽然底层物理网络不支持消息地址,但直接NM要求间接实现对消息地址的支持。一个网关节点可连接不同的网络,并且在每一网络中它的消息地址可能是不同的。如图3 2所示:
图3 2 两个总线网络中的逻辑环结构
在图3 2中,子网1的3个节点在逻辑上形成一个环,称之逻辑环(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的核心API。StartNM(初始化一个NM逻辑环;StopNM(改变NM的状态为NMShutdown,执行清除操作,然后进入NMOff状态。
其中,NMOn状态又有如下子状态(表3.1):
表3.1 NMOn的子状态
NMOn存在两组并行子状态:NMInit、NMAwake、NMBusSleep和NMActive、NMPassive。NMOn的并行子状态如图3 5所示:
图3 5 NMOn的并行子状态
当NM进入NMOn状态时,NMInit和NMActive是其缺省的初始化状态。NMInit是NM组件内部的瞬时初始化状态。完成初始化任务后,即转入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管理两个主要的操作模式,对应于内部状态的NMAwake(NMActive)和NMBusSleep。节点在NMAwake操作模式下,参与逻辑环组成并监视网络上所有同处于NMAwake模式的节点:如果一个节点进入NMBusSleep操作模式,就不再参与逻辑环上的NM通信。 NM消息包含NM协议数据单元(NMPDU)。NMPDU在通信网络上传输,其结构如图3 7所示:
图3 7 NMPDU的结构
地址域包含源消息地址和目的节点地址。控制域包含关于消息类型的信息,上述部分是必选部分,而数据域则是可选部分,它包含特定应用程序的数据。 为了易于标识NM消息和其它消息,NM采用基地址(ID_Base)和窗口(Window_Mask)机制,类似于