当前位置: 首页 > article >正文

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:」


http://www.kler.cn/a/627.html

相关文章:

  • 【C语言练习(17)—输出杨辉三角形】
  • VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
  • Flink的Watermark水位线详解
  • Linux:alias别名永久有效
  • H5 与 WebView 的双向通信实现详解
  • 编码转换(实例)
  • 数据结构——顺序表
  • Docker Registry部署镜像私有仓库及鉴权认证
  • React 架构流程概览
  • Opencv项目实战:22 物体颜色识别并框选
  • Qt(c++)调用海康威视监控摄像头
  • 女神节告白代码
  • 【含源码】用python做游戏有多简单好玩
  • 【Linux】冯诺依曼体系结构
  • 数据分析自学路线
  • 华为OD机试 - 插队(Java JS Python)
  • elasticsearch全解 (待续)
  • Linux基础命令大全(上)
  • 测试工作的开展思路
  • 求职复盘:干了四年外包出来,面试5次全挂
  • 【Linux】进程优先级前后台理解
  • 76.qt qml-QianWindow开源炫酷界面框架(支持白色暗黑渐变自定义控件均以适配)
  • 制作INCA和CANape通用的A2L
  • 2023还有人不知道kubernetes?| 初步理解kubernetes
  • 经典文献阅读之--Dynamic-VINS(动态点滤除VINS)
  • Navicat 图形化界面工具