共同点:
1. 都属于直接网络管理。
2. 网络管理的目的都是协调各节点同步进入休眠及唤醒(主要是休眠)。
3. 都依靠特定的网络管理CAN报文,每个节点的网络管理ID都不一样。
4. 唤醒方法相同,第一个唤醒的节点发送网络管理帧即同时唤醒其它节点。
不同点:
1. 唤醒帧类型不一样:
网络唤醒后,OSEK要求节点发出的第一帧必须是Alive类型,不能是Ring, Limphome等。
AutoSar只要求是网络管理帧就行,条件宽松。
2. 休眠的同步算法不一样:
OSEK网络管理使用令牌环机制,令牌从网络地址低的节点传到网络地址高的节点,如果没有更高的节点,就传给最低地址节点。令牌环根据ECU的网络地址建立。每个ECU都会接受网络管理消息,只有和目的地址相同的一个节点才会得到令牌。
唤醒后建立逻辑环过程:
1) 控制器唤醒后想参与网络的节点会先发Alive报文申请加入逻辑环。
2)逻辑环建成后,各节点按顺序发Ring报文向后续节点传递“令牌”。
同步休眠过程:
1)如果逻辑环中有节点想休眠,就设置Ring报文中的Sleep.Ind指示位。
2)当逻辑环中所有的节点都设置了Sleep.Ind指示位,也意味着任何节点接收到所有其它节点的Sleep.Ind指示位。
3)逻辑环中所有的节点设置Sleep.Ack指示位
4)任何节点接收到所有其它的节点的Sleep.Ack指示位
5)所有节点同步进入等待睡眠状态
6)tWaitBusSleep时间内没有收到唤醒时间,所有节点同步进入睡眠状态。
AutoSar基于分布式策略,每个节点根据通信系统中发送或者接收到的NM消息来执行自给自足的网络活动。NM消息通过广播发送,所有网络中的所有节点都可以接收到。接收到NM消息表示发送这个NM消息的节点倾向保持网络工作模式(NETWORK MODE)。如果有节点准备好进入总线睡眠模式 (BUS SLEEP MODE),它就停止发送NM消息,但是只要它还能够接收到从其他节点发来的NM消息,它就延迟到总线睡眠模式的变迁。最终,在一定的时限内,由于不再接收到NM消息,每个节点都启动到总线睡眠模式的变迁。如果网络中的任何节点需要总线通信,它可以通过发送NM消息使网络从来总线睡眠模式中唤醒。概括如下:
1) 每个网络节点如果想保持总线通信,就会一直发送周期性的NM消息;如果它不再需要保持总线通信,它就不再发送NM消息。2) 如果总线通信已经被释放,并且在配置的一段时间内没有发送或者接收到NM消息,则执行到Bus-Sleep模式的转移。
2. PDU结构不一样
OSEK网络帧PDU包括自己地址,目标地址(下一个令牌环目标),命令状态,用户选择数据。而AutoSar网络帧PDU只包括自己地址,少量控制信息,用户选择数据。内容简单的多。
小结:
1. OSEK同步休眠时刻是所有节点都发送Ring请求休眠帧,且收到其它节点的Ring确认休眠帧。而AutoSar的同步休眠时刻是所有节点都停发NM帧,且不能收到其它节点的NM帧。比较而言,AutoSar要简单一些。
2. OSEK令牌环中有一个节点异常,其它节点就要重新建立环才能维持正常网络状态,策略比较复杂。而AutoSar网络管理中,一个节点异常时不影响其它节点的网络状态。比较而言,AutoSar要简单一些。