AUTOSAR自适应平台网络管理规范分析
目录
1. 网络管理概述
1.1 功能概述
AUTOSAR自适应平台的网络管理(Network Management, NM)功能集群主要负责协调底层网络的状态转换,特别是在正常运行模式和总线睡眠模式之间进行切换。其设计目标是实现高效的功耗管理和网络控制,支持现代汽车电子架构中的多种网络技术。
网络管理的核心功能包括:
- 网络状态协调:在ECU之间协调网络的唤醒和休眠
- 总线休眠控制:在无通信需求时将网络置于低功耗状态
- 部分网络功能:支持只唤醒网络中特定需要的部分
- 状态监控:提供网络状态监控和通知机制
- 标准化接口:向应用和其他功能集群提供统一的API
自适应平台的网络管理设计为独立于底层通信栈工作,目前主要支持基于UDP的网络管理协议(UdpNM)。
1.2 术语和缩写
在深入了解网络管理功能前,需要理解以下关键术语:
- NM:Network Management,网络管理
- ECU:Electronic Control Unit,电子控制单元
- CBV:Control Bit Vector,控制位向量
- PNC:Partial Network Cluster,部分网络集群
- VLAN:Virtual Local Area Network,虚拟局域网
- FULL_COM:完全通信状态,网络已激活
- NO_COM:无通信状态,网络已关闭
2. 网络管理架构
2.1 架构总览
上图展示了AUTOSAR自适应平台网络管理的架构设计,整体架构分为以下几个层次:
-
应用层
- 包含使用网络服务的各种应用程序
- 通过状态管理功能集群间接使用网络管理功能
-
功能集群层
- 状态管理功能集群:提供统一的状态管理服务,是应用程序与网络管理的中间层
- 网络管理功能集群:核心组件,包括NetworkHandle、网络控制和部分网络管理等模块
- 日志和跟踪功能集群:提供日志记录服务,用于网络管理的事件记录和错误跟踪
-
通信层
- TCP/IP协议栈:处理底层的网络通信
- UDP/NM协议:基于UDP的网络管理协议,负责传输网络管理消息
-
操作系统/硬件抽象层
- 操作系统:提供基础的系统服务
- 物理网络接口:连接到实际的网络硬件
2.2 功能集群交互
网络管理功能集群与其他功能集群的交互主要通过以下方式:
-
与状态管理的交互
- 状态管理功能集群通过NetworkHandle接口使用网络管理服务
- 应用程序通过状态管理间接控制网络状态
-
与日志和跟踪的交互
- 网络管理使用日志服务记录重要事件和错误
- 支持错误诊断和性能监控
-
与通信层的交互
- 网络管理算法使用UDP/NM协议发送和接收网络管理消息
- 协调网络状态转换
这种分层设计确保了网络管理功能的模块化和可扩展性,同时与AUTOSAR自适应平台的整体架构保持一致。
3. 网络管理状态机
3.1 状态机概述
网络管理状态机定义了网络管理模块在不同状态下的行为和状态转换。该状态机是网络管理功能的核心,用于控制网络的唤醒和休眠过程。状态机由以下主要状态组成:
- 网络模式(Network Mode):网络活跃状态的主要模式,包含三个子状态
- 准备总线睡眠模式(Prepare Bus-Sleep Mode):网络准备进入休眠的过渡状态
- 总线睡眠模式(Bus-Sleep Mode):网络处于休眠状态,低功耗模式
3.2 网络模式
网络模式是网络活跃时的主要状态,包含三个子状态:
-
重复消息状态(Repeat Message State)
- 网络被请求后的初始状态
- 通过发送网络管理消息确保网络完全唤醒
- 在
nmRepeatMessageTime
配置时间后,根据网络请求状态转换到正常运行状态或就绪睡眠状态
-
正常运行状态(Normal Operation State)
- 网络完全功能的状态,支持正常通信
- 当网络被释放时,转换到就绪睡眠状态
- 收到重复消息请求位时,转换回重复消息状态
-
就绪睡眠状态(Ready Sleep State)
- 网络准备进入休眠的状态,但仍保持唤醒
- NM超时定时器超时后,转换到准备总线睡眠模式
- 如果网络被再次请求,转换到正常运行状态
- 收到重复消息请求位时,转换回重复消息状态
各状态之间的转换由网络请求触发、定时器超时或接收到特定的网络管理消息控制。
3.3 总线睡眠模式
当网络不再需要时,状态机通过以下状态转换进入低功耗模式:
-
准备总线睡眠模式(Prepare Bus-Sleep Mode)
- 过渡状态,允许所有节点完成任何未完成的通信
- 持续时间由
nmWaitBusSleepTime
配置控制 - 在此期间收到NM消息会回到网络模式
- 超时后进入总线睡眠模式
-
总线睡眠模式(Bus-Sleep Mode)
- 网络完全休眠状态,以最小化功耗
- 如果硬件支持,收发功能可能被关闭
- 只有通过显式请求(调用
SetNetworkRequestedState(kFullCom)
)才能唤醒网络 GetNetworkState()
返回kNoCom
状态
这种状态转换机制确保网络能够在需要时保持活跃,在不需要时省电,同时保持对唤醒请求的快速响应能力。
4. 网络管理消息格式
4.1 消息结构
网络管理通过专门设计的NM消息进行节点间通信,协调网络状态。NM消息通常封装在以太网帧中,完整的消息结构包括:
-
以太网帧结构
- 以太网头部:包含源和目标MAC地址以及帧类型
- IP头部:包含源和目标IP地址以及协议信息
- UDP头部:包含源和目标端口号
-
NM消息结构
- 源节点标识符(Source Node Identifier):标识发送NM消息的节点
- 控制位向量(Control Bit Vector, CBV):包含控制和状态信息的位字段
- 用户数据(User Data):可选字段,包含应用特定数据
- 部分网络信息(Partial Network Information, PNI):包含部分网络集群的状态信息
NM消息是网络管理功能的核心通信机制,通过这些消息,网络中的节点可以协调总线唤醒和休眠状态,实现有效的网络管理。
4.2 控制位向量
控制位向量(CBV)是NM消息中的关键组成部分,包含多个控制位,用于交换节点状态信息:
-
重复消息请求位(Repeat Message Request Bit)
- 用于请求其他节点发送NM消息
- 当节点需要维持网络唤醒状态时使用
-
NM协调睡眠位(NM Coordinated Sleep)
- 值为0表示未协调
- 值为1表示已协调,节点准备进入睡眠状态
-
活跃唤醒位(Active Wakeup Bit)
- 表示节点已被主动唤醒
- 用于区分主动唤醒和被动唤醒状态
-
部分网络请求位(Partial Network Request Bit)
- 用于部分网络功能的请求
- 与部分网络信息字段配合使用
-
保留位(Reserved Bits)
- 为未来扩展预留的位
- 当前未使用
通过控制位向量,各节点可以交换其当前状态和意图,使网络管理算法能够协调整个网络的状态转换。
5. 部分网络管理
5.1 部分网络概述
部分网络管理是AUTOSAR网络管理的一个重要功能,允许只唤醒网络中特定需要的部分,而非整个网络。这有助于降低功耗,提高系统效率。
部分网络的主要组成部分:
-
部分网络集群(PNC)
- 为特定功能组合在一起的节点集合
- 可以独立于其他PNC进行唤醒和休眠
- 例如图中的PNC1和PNC2
-
ECU角色
- 活跃ECU:当前处于唤醒状态的ECU(如示例中的ECU1和ECU2)
- 休眠ECU:当前处于睡眠状态的ECU(如示例中的ECU3)
-
PNC位图
- 在NM消息的部分网络信息(PNI)字段中
- 每个位表示一个特定PNC是否被请求
- 例如,PNC1位=1表示请求PNC1
5.2 节点间通信
部分网络管理中的节点通信具有以下特点:
-
请求机制
- 应用程序通过状态管理请求特定PNC(如APP1请求PNC1)
- 状态管理将请求传递给网络管理(调用
SetNetworkRequestedState()
) - 网络管理在NM消息中设置相应的PNC位
-
消息过滤
- 休眠节点(如ECU3)会过滤接收到的NM消息
- 只关注与自己相关的PNC位(如ECU3关注PNC2位)
- 当相关PNC被请求时唤醒节点
-
部分活跃状态
- 图中显示的是部分活跃状态的例子
- PNC1完全活跃(ECU1和ECU2都已唤醒)
- PNC2部分活跃(ECU1活跃,但ECU3仍处于休眠状态)
部分网络管理通过这种机制实现了精细化的网络唤醒控制,只有真正需要的ECU才会被唤醒,从而优化系统功耗。
6. 网络管理API
6.1 API概述
AUTOSAR自适应平台网络管理功能通过标准化的C++ API提供服务,主要位于ara::nm
命名空间下。这些API允许应用程序和状态管理功能集群控制和监控网络状态。
网络管理API的主要功能包括:
- 获取网络状态信息
- 请求和释放网络资源
- 注册状态变更通知
- 错误处理
6.2 主要类和接口
网络管理API主要包括以下类和枚举:
-
NetworkHandle类
- 网络管理的主要API类
- 提供网络状态查询和控制功能
- 主要方法:
GetNetworkRequestedState()
:获取当前请求的网络状态GetNetworkState()
:获取当前实际网络状态SetNetworkRequestedState()
:设置请求的网络状态RegisterNetworkStateChangeNotifier()
:注册网络状态变更通知UnregisterNetworkStateChangeNotifier()
:注销网络状态变更通知
-
NetworkStateType枚举
- 定义网络状态类型
kFullCom
:完全通信状态,网络已激活kNoCom
:无通信状态,网络已关闭
-
NmErrorDomain类
- 网络管理错误域
- 定义错误代码和错误处理机制
- 方法:
Name()
:获取错误域名称Message()
:获取错误信息ThrowAsException()
:将错误转换为异常
-
NmErrc枚举
- 定义网络管理特定错误代码
- 包括:
kInvalidArgument
:无效参数kRegisteredAlready
:已注册kNotRegistered
:未注册kGenericError
:通用错误
-
NmException类
- 网络管理异常类
- 继承自
ara::core::ErrorCode
- 用于异常处理机制
这些API共同提供了一个完整的网络管理接口,使应用程序和状态管理功能集群能够有效控制网络状态,实现功耗优化和网络协调。
7. 总结
AUTOSAR自适应平台的网络管理功能集群提供了强大而灵活的网络状态控制机制,主要特点包括:
-
分层架构设计
- 清晰的功能分层和接口定义
- 与其他功能集群(如状态管理)良好集成
- 支持不同的网络技术,当前主要支持UdpNM
-
完善的状态管理
- 基于状态机的网络状态控制
- 支持网络唤醒和休眠的平滑过渡
- 提供状态转换通知机制
-
部分网络功能
- 支持选择性唤醒网络的部分节点
- 通过PNC位图实现精细化控制
- 优化系统功耗,提高效率
-
标准化API
- 清晰、一致的C++ API设计
- 基于ara::core的错误处理机制
- 支持同步和异步操作模式
通过这些功能,AUTOSAR自适应平台的网络管理能够有效地管理复杂车辆网络的状态,在保证通信需求的同时优化系统功耗,适应现代汽车电子架构的要求。
随着车辆网络复杂度的增加和更多电子控制单元的集成,网络管理的作用将变得越来越重要。AUTOSAR自适应平台通过标准化的网络管理解决方案,为这一挑战提供了有效的解决方案。