AUTOSAR—聊聊AP AUTOSAR NM模块的设计
最新更新时间:2024-11-01
阅读数:
作者
|
不可说
出品
|
汽车电子与软件
#01
AP AUTOSAR NM
AP AUTOSAR(Adaptive Platform of AUTOSAR)平台是一个高度集成且模块化的汽车中间件解决方案,专为现代汽车电子系统架构设计而生。该平台通过一系列基础功能或服务功能模块,构建了一个强大而灵活的软件架构框架,旨在促进汽车制造商、供应商及开发者之间的协作,加速汽车电子系统的开发与集成。
自适应网络管理(Adaptive Network Management,NM)旨在独立于所使用的通信栈工作。其主要目的是协调底层网络(物理和部分网络)的正常运行和总线休眠模式之间的转换。通过发送命令和制定规则,来实现各个ECU的协同睡眠和唤醒,从而优化网络资源的利用并减少功耗。
NM架构视图
目前,AP NM的功能范围相对狭窄,存在诸多应用上的局限性。具体而言,现有的AP NM系统实际上仅支持UdpNM,并且在功能实现上存在明显短板。例如,它无法进行节点检测,即无法识别和处理重复消息的状态,这在一定程度上限制了其在复杂网络环境中的适用性。此外,AP NM仅负责处理传入的网络请求,对于网络中的其他交互行为则缺乏相应的处理能力。更重要的是,当前的AP NM系统无法被配置为主网络协调节点,这进一步限制了其在大型或复杂网络架构中的部署和应用。
在启动模式方面,AP NM同样存在不足。它不支持被动模式和被动启动。被动启动是一种特定的网络启动方式,即在网络已被另一个节点唤醒并正常运行的情况下,某个节点才开始启动并进入正常工作模式。由于AP NM缺乏对此类启动模式的支持,它在某些需要灵活节点管理的网络场景中可能无法发挥预期的作用。
另外,在状态管理(State Management,SM)方面,网络请求和发布的控制变得尤为重要。为了明确网络状态的变更来源,需要澄清用户数据的更改或声明是通过SM系统间接完成的,还是直接由应用程序本身完成的。这一点对于维护网络的一致性和稳定性至关重要,也是在网络设计和实施过程中需要特别注意的方面。
综上所述,当前的AP NM系统在功能、启动模式以及状态管理方面都存在一些限制和不足之处,这在一定程度上影响了其在各种网络环境中的广泛应用和部署。
#02
NM技术架构
Adaptive Network Management 提供的服务应该允许请求和查询可映射到物理或部分网络的逻辑网络句柄的网络状态。为此,提供了以下功能:
1) 用于请求和释放逻辑网络句柄的接口
2) 支持部分网络通信
NM提供的服务
上图展示了SM和NM之间的交互以及逻辑网络、局域网络和物理网络之间的示例映射。
NM框架构建于一种分散式直接网络管理策略之上。这一策略的核心在于,网络中的每一个节点都具备自主决策的能力,它们仅依据在通信系统内部接收到的或自身传输的NM数据包(指除 NM 消息外,还包含 IP 和 UDP 报头的以太网帧)来执行相应的活动。
NM规则的运行依赖于周期性发送的NM数据包。在一个NM Cluster集群环境中,所有的网络节点都会通过组播的方式接收这些数据包。每当一个节点发送NM数据包时,它实际上是在向集群中的其他节点表明,它希望整个NM集群保持唤醒状态,以便随时进行通信。这种机制确保了当集群中有节点正在进行数据交换时,整个网络都能保持活跃。
如果集群中的某个节点已经完成了其当前的任务,并准备进入休眠模式以节省能源,那么它会停止发送NM数据包。然而,只要该节点还继续接收到来自集群中其他节点的NM数据包,它就会推迟自己进入休眠模式的计划。这种设计确保了只有当整个集群都确认没有节点需要通信时,网络才会进入休眠状态,从而优化了能源使用。
最终,如果在一个特定的时间段内,一个节点没有接收到任何来自其他节点的NM数据包,并且这个时间段已经超过了系统预设的专用计时器的阈值,那么该节点就会启动向睡眠模式的转换过程。这个过程是逐步进行的,以确保在转换过程中不会丢失任何重要的数据或命令。
此外,如果NM集群中的任何一个节点在某一时刻需要发起总线通信,它可以通过发送NM数据包来“唤醒”整个集群,确保在通信过程中网络处于活跃状态。这种机制使得网络能够灵活地适应不同的通信需求,无论是定期的数据传输还是突发性的通信请求。
因此,每个网络节点都会根据自己的通信需求来决定是否定期传输NM消息。如果节点需要保持与其他节点的通信链路活跃,它就会按照预定的周期发送NM消息;如果节点当前没有通信需求,它就会停止发送NM消息,从而在不影响网络通信的前提下尽可能地节省能源。
网络管理包含三种操作模式:
-
网络模式 Network Mode
-
准备总线睡眠模式 Prepare Bus-Sleep Mode
-
总线睡眠模式 Bus-Sleep Mode
当NM处于Network Mode时,这意味着网络被请求或处于活动状态。
当NM处于准备总线睡眠或总线睡眠模式时,这意味着网络已释放或处于非活动状态。
NM模式转换状态机
#03
Network Mode
Network Mode由三个内部状态组成:
-
重复消息状态 Repeat Message State
-
正常运行状态 Normal Operation State
-
睡眠就绪状态 Ready Sleep State
当从Bus-Sleep Mode或Prepare Bus-Sleep Mode进入Network Mode时,默认情况下,系统应进入Repeat Message State。同时,网络管理(NM)超时定时器应以nmNetworkTimeout(可配置的参数,NmPdus 的网络超时(以秒为单位)。它表示在过渡到 Prepare Bus-Sleep 模式之前 UdpNm 在网络模式下停留的时间)的值启动。在Network Mode下,无论是成功接收还是传输NM消息后,NM超时定时器都应以nmNetworkTimeout的值重新启动。
1)Repeat Message State
Repeat Message State确保了从Bus-Sleep Mode或Prepare Bus-Sleep Mode转换到Network Mode的过程,对网络上的其他节点都是可见的。此外,该状态还保证了任何节点能在最短时间内保持活动状态。
当系统从Bus-Sleep Mode、Prepare Bus-Sleep Mode,或从Network Mode内的其他状态进入Network Mode的Repeat Message State时,应启动NM消息的传输。在Repeat Message State下,如果NM超时定时器到期,应重新启动该定时器。NM应在由nmRepeatMessageTime(Repeat Message State超时参数,单位是秒,定义NM应保持在Repeat Message State的时间)确定的可配置时间内保持在Repeat Message State。
在Repeat Message State保持不变的情况下,如果网络已被请求,则应进入Normal Operation State;如果网络已被释放,则应进入Ready Sleep State。
默认情况下,当通过调用ara::nm::NetworkHandle::SetNetworkRequestedState(一个可用于设置新的网络请求状态的方法,请求或释放PNC/VLAN/物理网络。)(值为kFullCom,表示网络唤醒状态的一个枚举量)请求网络时,如果系统处于Bus-Sleep Mode或Prepare Bus-Sleep Mode,并即将进入Network Mode的Repeat Message State,nm模块应立即发送nm消息。
另外,如果系统处于Ready Sleep State、Normal Operation State或Repeat Message State,且nmPnHandleMultipleNetworkRequests(指定NM是否执行从Network Mode到Repeat Message State的转换(true)或不执行(false)的变量。)设置为true,同时PNC/VLAN或相关PNC的请求状态发生变化,则应重新进入Repeat Message State。
2)Normal Operation State
Normal Operation State确保了只要网络功能被需要,任何节点都可以维持NM集群的唤醒状态。
当系统从Ready Sleep State转换到Normal Operation State时,应立即启动NM消息的传输。在Normal Operation State下,如果NM超时定时器到期,应重新启动该定时器。
当网络被释放且当前状态为Normal Operation State时,系统应保持正常运行状态一段时间,然后转入Ready Sleep State。然而,如果在Normal Operation State下接收到的NM消息中的CBV(Control Bit Vector)设置了重复消息请求位,系统应保持Normal Operation State不变,并转入Repeat Message State。
3)Ready Sleep State
在NM集群中,Ready Sleep State的作用如下:
-
任何节点在转换到Prepare Bus-Sleep Mode之前,只要集群中还有其他节点保持唤醒状态,则必须等待;
-
当节点从Repeat Message State或Normal Operation State进入Ready Sleep State时,应停止传输NM消息;
-
如果NM超时定时器在Ready Sleep State下到期超时,节点应退出Ready Sleep State,并进入Prepare Bus-Sleep Mode;
-
如果当前状态为Ready Sleep State,当使用参数kFullCom调用ara::nm::NetworkHandle::SetNetworkRequestedState请求网络时,节点应进入Normal Operation State。
-
如果当前状态为Ready Sleep State,且收到Repeat Message State请求位(在接收到的NM消息的CBV中设置),节点应进入Repeat Message State。
#04
Prepare Bus-Sleep Mode
Prepare Bus-Sleep 状态的目的是确保所有节点在进入 Bus Sleep 状态之前都有时间停止其网络活动。总线消息停止下来(即队列中的消息都应传输完毕,以清空所有 TX 缓冲区),最后在 Prepare Bus-Sleep 模式下总线上没有消息。
NM 应保持 Prepare Bus-Sleep 模式的时间由 nmWaitBusSleepTime (总线静默阶段的超时(以秒为单位)。它表示在过渡到Bus-Sleep Mode之前,CanNm 应在P
repare Bus-Sleep Mode下停留的时间)确定,在此之后,应离开 Prepare Bus-Sleep Mode,并进入 Bus-Sleep Mode。
如果在 Prepare Bus-Sleep 模式下成功接收到 NM 消息后,应离开 Prepare Bus-Sleep 模式并进入Network Mode。
#05
Bus-Sleep Mode
Bus-Sleep Mode状态的目的是在不传输消息时降低节点中的功耗。如果硬件支持,则可以关闭传输和接收功能。
在Autosar Adaptive NM Cluster中,如果为所有节点配置了一个可调整的时间量,该时间量由 nmNetworkTimeout 和 nmWaitBusSleepTime 两者之和确定,那么Cluster中所有遵循AUTOSAR NM规则的节点将几乎同时转换到Bus-Sleep Mode。
在 Bus-Sleep Mode下,则认为NM Cluster中的所有节点都处于此状态。一般来讲,所有节点可以几乎同时通过公共触发器(例如唤醒线)请求通信。
#06
小 结
综上信息,Adaptive Network Management(NM)是Adaptive AUTOSAR平台中的一个重要功能集群,它通过周期性的NM消息和状态机切换的网络管理策略,实现了各个ECU的协同睡眠和唤醒。这一功能对于优化网络资源的利用、减少功耗以及提高系统的整体性能和能效具有重要意义。
/ END /