AutoSAR NM【一文读懂网络管理接口】
总目录链接==>> AutoSAR入门和实战系列总目录
文章目录
- 通用网络管理接口模块
- 通用网络管理模块的一些特性
- NM 协调器功能是可选的,通用 NM 支持以下功能组合
- 通用 NM 的生成文件
通用网络管理接口模块
本文将重点介绍通用网络管理接口模块。通用网络管理接口(NM)「是 AUTOSAR 分层架构通信服务块的通用块的一部分。」它是 AUTOSAR 通信管理器 (ComM) 和总线特定或网络相关网络管理 (NM)块之间的适配层(例如:CAN 总线的CanNm )。它处理将网络状态从清醒状态更改为睡眠状态以节省电量的任务。
「注意:」 在进一步阅读时,请不要将通用网络管理模块与总线特定网络管理模块混淆。
图:Com Stack 中的通用 NM 接口
上图是仅突出显示通用网络管理块的Com 堆栈。NM是一个独立于网络的块,因此它仅被实例化一次并再次用于所有总线,即CAN 总线和FlexRay 总线不会有不同的块,而是相同的 NM 块将用于两种总线。通用 NM 为通信管理器 (ComM) 提供接口,并使用总线特定 NM 模块(如 CanNm)提供的服务。ComM 通过通用 NM 模块与总线特定 NM 模块通信,从而实现完全抽象和硬件(总线)独立性。
通用网络管理模块的一些特性
通用 NM 允许无缝地临时添加新节点,只是该节点在配置期间应将“NmSelectiveNmChannel”属性设置为 False。这种新添加的节点可以是以下类型:延迟连接的节点、从故障状态恢复的节点或在现网中动态添加的节点。
Generic NM 允许SWC进行通信,即使 Generic NM 无法初始化或尚未初始化。
通用 NM 是一个独立于网络的模块,只要 AUTOSAR 支持,它就可以同时适用于任何通信总线。
如果没有节点需要总线,则通用 NM 会将总线置于睡眠模式。
Generic NM模块主要执行以下两个操作:
「将通用函数调用转换为特定于总线的调用,反之亦然:」来自通信管理器的函数调用在本质上是独立于总线的,通用 NM 模块将这些调用转换并“定向”到特定于总线的调用,这些调用将在 CanNm 中用于 CAN 或在 FrNm 中用于 FlexRay。它还将特定于总线的回调转换为指向 ComM 的独立于总线的调用。
「执行 NM 协调器的角色:」通用 NM 模块可用于在称为网关 ECU 的单独 ECU 中实现 NM 协调器功能,该 ECU 连接到多个总线(如 CAN 总线、FlexRay 等)。在多总线场景下,同步关闭总线的 NM(总线另一端的 ECU 中的总线特定 NM)需要这样的功能,这样的总线称为协调「总线」. 这里的同步意味着,总线中的所有节点将由 NM 协调器同步关闭(或进入断电状态),因为总线中的每个节点都会知道是否有节点正在使用总线或准备休眠,以及是否没有节点正在使用总线,然后所有节点将在 NM 协调器的帮助下相互进入掉电状态。通用 NM 模块使用一种特殊算法来实现此功能,称为「协调器算法」。如果网络中至少有一个节点需要总线,NM 协调器会保持总线处于唤醒状态,这意味着它不会让其他节点休眠,即使他们想休眠!每个协调总线(应听取 NM 协调器的 ECU)都具有可配置属性,可以在Vector DaVinci Configurator等配置器软件中进行配置“NmSelectiveNmChannel”,如果NmSelectiveNmChannel设置为True,则NM协调器将忽略该节点并且其关闭不受NM协调器的控制或将异步关闭。如果只有 NM 协调器正在使用总线而所有其他协调总线均未使用,则 NM 协调器通过向网络中的其他节点发送 NM 消息来关闭整个总线,如果没有来自网络中其他节点的 NM 消息,则 NM协调器认为这是“没有人需要总线”,然后关闭总线。通用 NM 不会帮助“同步唤醒”,因为它不是必需的,因为当节点需要使用总线时,通信管理器将唤醒相应的节点。
NM 协调器功能是可选的,通用 NM 支持以下功能组合
没有 NM 协调器功能,有NM 接口功能
NM 接口功能仅限于使用基于 AUTOSAR 的网络管理模块的 ECU 支持 NM 协调器功能。
NM 接口功能支持 NM 协调器功能,ECU 使用基于 AUTOSAR 的 NM 以及基于OSEK的 NM。AUTOSAR 基于 OSEK 实现,但与 OSEK 相比有更多的扩展。因此 AUTOSAR 使用与 OSEK 的 NM 不同的 NM 实现,两者之间存在细微差别。NM 接口可以同时支持两种类型的 NM 实现,因为 AUTOSAR 向后兼容 OSEK。
通用 NM 的生成文件
「Nm.c」静态代码实现了上面讨论的和根据配置的 NM 功能的所有实现。
生成四个头文件分别是:
「Nm.h」:此文件包含 Nm.c 文件中函数的函数原型。
「Nm_Cbk.h」:该文件包含 Nm.c 文件中的函数原型回调函数
「Nm_Cfg.h:」该文件包含预编译时间可配置参数。
「Nm_StackTypes.h:」此文件包含Nm.c 文件中使用的类型定义和结构。
生成c文件是:
「Nm_LCfg.c:」