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

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

相关文章:

  • 2023年网络安全比赛--CMS网站渗透中职组(超详细)
  • 求最大公约数和最小公倍数---辗转相除法(欧几里得算法)
  • SpringBoot和Spring AOP默认动态代理方式
  • 华为OD机试 - 插队(Java JS Python)
  • OpenAI 发布GPT-4——全网抢先体验
  • 开源超级终端工具——WindTerm
  • 低代码开发平台是什么意思?低代码开发平台优势!
  • JS中sort()方法返回值?
  • C/C++每日一练(20230314)
  • RK3568平台开发系列讲解(Linux系统篇)消息队列
  • 2023携程面试题
  • 机器学习入门——线性回归
  • 【拳打蓝桥杯】最基础的数组你真的掌握了吗?
  • π-Day快乐:Python可视化π
  • 【GPT-4】GPT-4 相关内容总结
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【前端学习】-粗谈选择器
  • JavaScript函数式编程(一)
  • jquery ajax学习笔记
  • js继承的实现方法
  • PHP的Ev教程三(Periodic watcher)
  • session共享问题解决方案
  • 近期前端发展计划
  • 类orAPI - 收藏集 - 掘金
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 协程
  • 在Unity中实现一个简单的消息管理器
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (06)金属布线——为半导体注入生命的连接
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十一)图像的罗伯特梯度锐化
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .htaccess 强制https 单独排除某个目录
  • .NET Core跨平台微服务学习资源
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET IoC 容器(三)Autofac
  • .Net 基于MiniExcel的导入功能接口示例
  • .net 无限分类
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .Net面试题4
  • .Net语言中的StringBuilder:入门到精通
  • @JoinTable会自动删除关联表的数据
  • @reference注解_Dubbo配置参考手册之dubbo:reference