图解AUTOSAR_CP_NetworkManagementInterface

AUTOSAR 网络管理接口(Nm)详解

AUTOSAR 网络管理接口规范与实现指南

目录

  • 1. 概述
    • 1.1. 网络管理接口的作用
    • 1.2. 网络管理接口的特点
  • 2. 网络管理接口架构
    • 2.1. 架构概览
    • 2.2. 模块交互关系
  • 3. 网络管理状态机
    • 3.1. 状态定义
    • 3.2. 状态转换
  • 4. 协调算法
    • 4.1. 协调关闭流程
    • 4.2. 同步点机制
    • 4.3. 协调关闭中断处理
  • 5. 网络管理交互序列
    • 5.1. 网络启动流程
    • 5.2. 网络关闭流程
    • 5.3. 协调关闭流程
  • 6. 配置模型
    • 6.1. 配置结构
    • 6.2. 配置参数
  • 7. 总结
    • 7.1. 网络管理接口的优势
    • 7.2. 应用场景

在这里插入图片描述

1. 概述

1.1. 网络管理接口的作用

AUTOSAR网络管理接口(Nm)是AUTOSAR通信栈中的一个关键组件,它为不同总线类型的网络管理提供了统一的接口。网络管理接口的主要作用包括:

  • 提供统一的API接口,屏蔽不同总线类型网络管理的差异
  • 管理网络的启动和关闭过程
  • 协调多个网络的关闭过程,确保系统有序地进入低功耗模式
  • 支持网络唤醒功能,使系统能够从低功耗模式恢复

1.2. 网络管理接口的特点

网络管理接口具有以下特点:

  • 通用性:支持多种总线类型,包括CAN、FlexRay、以太网等
  • 可配置性:提供丰富的配置选项,满足不同应用场景的需求
  • 协调功能:支持多网络协调关闭,确保系统有序进入低功耗模式
  • 状态管理:提供完整的网络状态管理机制
  • 可扩展性:支持通过CDD(Complex Device Driver)扩展支持其他网络管理协议

2. 网络管理接口架构

2.1. 架构概览

AUTOSAR网络管理接口位于通信管理(ComM)和总线特定网络管理模块(如CanNmFrNm等)之间,作为一个通用接口层,提供统一的API。
在这里插入图片描述

2.2. 模块交互关系

网络管理接口与其他模块的交互关系如下:

  1. 向上接口

    • ComM提供网络状态通知和网络管理服务
    • 接收来自ComM的网络请求和释放命令
  2. 向下接口

    • 调用总线特定网络管理模块(CanNmFrNmUdpNmJ1939Nm等)的API
    • 接收来自总线特定网络管理模块的状态通知
  3. 横向接口

    • 支持通过CDD扩展其他网络管理协议(如OSEK NM)

网络管理接口通过这种分层架构,实现了对不同总线类型网络管理的统一抽象,简化了上层应用的开发。


3. 网络管理状态机

3.1. 状态定义

网络管理接口定义了一个状态机来管理网络状态。状态机包含以下状态:
在这里插入图片描述
网络管理状态机包含以下主要状态:

  1. NM_STATE_BUS_SLEEP

    • 总线睡眠状态,网络处于低功耗模式
    • 此状态下无通信活动
    • 系统初始化后默认进入此状态
  2. NM_STATE_PREPARE_BUS_SLEEP

    • 准备总线睡眠状态
    • 等待进入睡眠模式的超时
    • 可被网络请求或接收到的NM消息中断
  3. NM_STATE_READY_SLEEP

    • 准备睡眠状态
    • 节点已准备好进入睡眠,但等待其他节点也准备好
  4. NM_STATE_NORMAL_OPERATION

    • 正常运行状态
    • 网络完全激活,支持正常通信
  5. NM_STATE_REPEAT_MESSAGE

    • 重复消息状态
    • 节点重复发送NM消息,确保网络激活
  6. NM_STATE_SYNCHRONIZE

    • 同步状态
    • 用于网络同步过程

3.2. 状态转换

状态机的主要转换包括:

  1. 网络启动转换

    • NM_STATE_BUS_SLEEPNM_STATE_REPEAT_MESSAGE:通过Nm_NetworkRequest或被动唤醒触发
    • NM_STATE_BUS_SLEEPNM_STATE_NORMAL_OPERATION:通过Nm_PassiveStartUp触发
  2. 网络关闭转换

    • NM_STATE_NORMAL_OPERATIONNM_STATE_READY_SLEEP:通过Nm_NetworkRelease且所有节点准备睡眠触发
    • NM_STATE_READY_SLEEPNM_STATE_PREPARE_BUS_SLEEP:当所有节点准备睡眠时触发
    • NM_STATE_PREPARE_BUS_SLEEPNM_STATE_BUS_SLEEP:超时后触发
  3. 中断关闭转换

    • NM_STATE_PREPARE_BUS_SLEEPNM_STATE_REPEAT_MESSAGE:通过Nm_NetworkRequest或接收到NM消息触发
    • NM_STATE_READY_SLEEPNM_STATE_REPEAT_MESSAGE:通过Nm_NetworkRequest触发
    • NM_STATE_READY_SLEEPNM_STATE_NORMAL_OPERATION:接收到无睡眠指示的NM消息触发
  4. 其他转换

    • NM_STATE_NORMAL_OPERATIONNM_STATE_REPEAT_MESSAGE:通过Nm_RepeatMessageRequest触发
    • NM_STATE_REPEAT_MESSAGENM_STATE_NORMAL_OPERATION:重复消息完成后触发
    • NM_STATE_SYNCHRONIZENM_STATE_NORMAL_OPERATION:同步完成后触发

4. 协调算法

4.1. 协调关闭流程

网络管理接口提供了协调关闭功能,用于协调多个网络的关闭过程,确保系统有序地进入低功耗模式。
在这里插入图片描述

协调关闭流程的主要步骤包括:

  1. 触发协调关闭

    • ComM请求网络释放,调用Nm_NetworkRelease
    • Nm检查是否为协调网络
  2. 计算全局协调时间

    • 全局协调时间 = 所有协调网络中最大的关闭时间
    • 确保所有网络有足够的时间完成关闭过程
  3. 同步点处理

    • 如果配置为使用同步点,等待同步网络的同步点
    • 同步点通过Nm_SynchronizationPoint回调函数通知
    • 如果未配置使用同步点,立即开始协调关闭
  4. 并行关闭处理

    • 启动协调关闭定时器
    • 并行处理多个网络的关闭流程
    • 每个网络等待全局协调时间
    • 所有网络同时进入准备睡眠状态
  5. 完成关闭

    • 所有网络进入总线睡眠状态
    • 系统进入低功耗模式

4.2. 同步点机制

同步点机制用于确保协调关闭过程的同步性,特别是在处理非确定性总线时。同步点的主要特点包括:

  1. 同步网络配置

    • 每个协调集群只能配置一个网络作为同步网络
    • 同步网络通过NmSynchronizingNetwork参数配置
  2. 同步点通知

    • 同步网络在适当的时间点调用Nm_SynchronizationPoint回调
    • 回调函数通知协调器开始协调关闭过程
  3. 同步用例

    • 同步命令:所有网络同时收到关闭命令
    • 同步启动:协调关闭过程同时启动
    • 同步网络睡眠:所有网络同时进入睡眠状态

4.3. 协调关闭中断处理

协调关闭过程可能会被网络唤醒中断。中断处理的主要步骤包括:

  1. 检测唤醒

    • 检查是否发生网络唤醒事件
    • 唤醒事件可能来自外部唤醒或协调唤醒
  2. 中断处理

    • 如果发生唤醒,中断协调关闭流程
    • 重新激活所有协调网络
    • 恢复正常通信
  3. 继续关闭

    • 如果未发生唤醒,继续协调关闭流程
    • 完成网络关闭过程

5. 网络管理交互序列

5.1. 网络启动流程

在这里插入图片描述

网络启动流程的主要步骤包括:

  1. 启动请求

    • ComM调用Nm_NetworkRequest请求启动网络
    • Nm接收请求并处理
  2. 总线特定处理

    • Nm调用相应的总线特定网络管理模块(如CanNm_NetworkRequest)
    • 总线特定模块发送NM消息激活网络
  3. 状态通知

    • 总线特定模块进入重复消息状态
    • 通过Nm_NetworkMode回调通知网络已激活
    • Nm将通知转发给ComM(ComM_Nm_NetworkMode)

5.2. 网络关闭流程

网络关闭流程的主要步骤包括:

  1. 关闭请求

    • ComM调用Nm_NetworkRelease请求关闭网络
    • Nm接收请求并处理
  2. 总线特定处理

    • Nm调用相应的总线特定网络管理模块(如CanNm_NetworkRelease)
    • 总线特定模块设置睡眠指示位
    • 发送带睡眠指示的NM消息
  3. 准备睡眠

    • 总线特定模块等待所有节点准备睡眠
    • 通过Nm_PrepareBusSleepMode回调通知准备进入睡眠模式
    • Nm将通知转发给ComM(ComM_Nm_PrepareBusSleepMode)
  4. 进入睡眠

    • 总线特定模块等待超时
    • 通过Nm_BusSleepMode回调通知已进入睡眠模式
    • Nm将通知转发给ComM(ComM_Nm_BusSleepMode)

5.3. 协调关闭流程

协调关闭流程的主要步骤包括:

  1. 协调关闭请求

    • ComM对多个通道调用Nm_NetworkRelease
    • Nm计算全局协调时间
  2. 并行处理

    • Nm对多个通道调用总线特定的NetworkRelease函数
    • 总线特定模块等待全局协调时间
  3. 同步通知

    • 所有通道同时通过回调函数通知状态变化
    • 包括PrepareBusSleepModeBusSleepMode通知
    • Nm将通知转发给ComM
  4. 完成关闭

    • 所有网络同时进入总线睡眠状态
    • 系统进入低功耗模式

6. 配置模型

6.1. 配置结构

网络管理接口的配置模型定义了如何配置网络管理功能。
在这里插入图片描述

配置模型的主要结构包括:

  1. Nm

    • 顶层配置容器
    • 包含NmGeneralNmGlobalConfig和多个NmChannelConfig
  2. NmGeneralType

    • 通用配置参数
    • 包括错误检测、版本信息API和主函数周期
  3. NmGlobalConfigType

    • 全局配置参数
    • 包括主函数周期时间、全局协调时间和协调同步支持
  4. NmChannelConfigType

    • 通道配置参数
    • 每个通道对应一个网络接口
    • 可配置为不同的总线类型和功能
  5. NmCoordinationSyncSupportType

    • 协调同步支持配置
    • 用于配置网络协调功能
    • 包括协调集群索引、活动协调器标志和同步网络标志
  6. NmBusNmType

    • 总线类型枚举
    • 支持CAN、FlexRay、UDP、J1939和本地NM

6.2. 配置参数

网络管理接口的主要配置参数包括:

  1. 通用参数

    • NmDevErrorDetect:是否启用开发错误检测
    • NmVersionInfoApi:是否支持版本信息API
    • NmMainFunctionPeriod:主函数周期时间
  2. 全局参数

    • NmCycletimeMainFunction:主函数调用周期
    • NmGlobalCoordinatorTime:全局协调时间
    • NmCoordinationSynchronizationSupport:是否支持协调同步
  3. 通道参数

    • NmChannelId:通道ID
    • NmBusType:总线类型(CAN、FlexRay、UDP、J1939或本地NM)
    • NmNodeDetectionEnabled:是否启用节点检测
    • NmNodeIdEnabled:是否启用节点ID
    • NmRepeatMessageSupport:是否支持重复消息
    • NmUserDataSupport:是否支持用户数据
    • NmComUserDataSupport:是否支持COM用户数据
    • NmPduRxIndicationEnabled:是否启用PDU接收指示
    • NmRemoteSleepIndEnabled:是否启用远程睡眠指示
    • NmBusSynchronizationEnabled:是否启用总线同步
    • NmCoordinationSupport:是否支持协调
    • NmStateChangeIndEnabled:是否启用状态变化指示
    • NmCarWakeUpRxEnabled:是否启用车辆唤醒接收
  4. 协调同步参数

    • NmCoordClusterIndex:协调集群索引
    • NmActiveCoordinator:是否为活动协调器
    • NmSynchronizingNetwork:是否为同步网络

7. 总结

7.1. 网络管理接口的优势

AUTOSAR网络管理接口具有以下优势:

  • 统一接口:提供统一的API,简化上层应用开发
  • 可配置性:丰富的配置选项,满足不同应用场景需求
  • 协调功能:支持多网络协调关闭,确保系统有序进入低功耗模式
  • 可扩展性:支持通过CDD扩展其他网络管理协议
  • 标准化:符合AUTOSAR标准,确保不同供应商组件的互操作性

7.2. 应用场景

网络管理接口适用于以下应用场景:

  1. 多网络ECU

    • 管理多个网络接口的ECU
    • 协调多个网络的关闭过程
  2. 低功耗管理

    • 需要精确控制网络进入和退出低功耗模式的系统
    • 支持部分网络唤醒功能
  3. 网关应用

    • 连接多个网络的网关ECU
    • 协调不同网络的状态
  4. 分布式系统

    • 多ECU分布式系统
    • 需要协调多个ECU的网络状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习总结(八):Spring boot

一、SpringBoot简介 传统Spring开发缺点: 1、导入依赖繁琐 2、项目配置繁琐 Spring Boot是全新框架(更像是一个工具, 脚手架),是Spring提供的一个子项目, 用于快速构建Spring应用程序。 随着Spring 3.0的发布,Spring 团…

vue-router实现

实现一个简化版的 vue-router 可以帮助我们更好地理解 Vue 路由是如何工作的。Vue Router 主要的功能是基于浏览器的 URL 来管理组件的显示,能够根据 URL 变化切换不同的视图。下面是一个简化版的实现,用于帮助你理解基本的路由机制。 创建一个简单的 V…

Redis 服务器:核心功能与优化实践

Redis 服务器:核心功能与优化实践 引言 Redis(Remote Dictionary Server)是一款高性能的键值对存储系统,广泛用于缓存、消息队列、实时排行榜等场景。本文将深入探讨Redis服务器的核心功能,并提供一些优化实践的技巧,以帮助读者更好地理解和运用Redis。 Redis的核心功…

openEuler24.03 LTS下安装MySQL8

前提条件 拥有openEuler24.03 LTS环境,可参考:Vmware下安装openEuler24.03 LTS 步骤 卸载原有mysql及mariadb sudo systemctl stop mysql mysqld 2>/dev/null sudo rpm -qa | grep -i mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps 2>/dev/…

GLOW-TTS

我首先需要理解用户的指令,用户希望我翻译文章的3.1节“Training and Inference Procedures”部分。为了完成这个任务,我需要仔细阅读文章的3.1节,理解其中的技术细节和概念,然后将这些内容准确地翻译成中文。 在阅读3.1节时&…

【算法思想】高精度

引入 首先了解&#xff1a; 1. int 范围为10^9 2. long long 范围数量级为10^18 如果超过该数量级&#xff0c;该怎么办&#xff1f; ——这就是高精度、大数的算法问题 加法 输入两个整数a,b,输出他们的和&#xff08;<10的500次方&#xff09; 核心是加法的核心——》每…

【失败了】LazyGraphRAG利用本地ollama提供Embedding model服务和火山引擎的deepseek API构建本地知识库

LazyGraphRAG测试结果如下 数据&#xff1a; curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt -o ./ragtest/input/book.txt 失败了 气死我也&#xff01;&#xff01;&#xff01;对deepseek-V3也不是很友好啊&#xff0c;我没钱prompt 微调啊&#xff0c;晕死…

ccfcsp3402矩阵重塑(其二)

//矩阵重塑&#xff08;其二&#xff09; #include<iostream> using namespace std; int main(){int n,m,t;cin>>n>>m>>t;int c[10000][10000];int s0,sum0;int d[10000],k[100000];for(int i0;i<n;i){for(int j0;j<m;j){cin>>c[i][j];d[s…

算法-除自身以外数组的乘积

力扣题目&#xff1a;238. 除自身以外数组的乘积 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums…

Unity Shader - UI Sprite Shader之简单抠图效果

Sprite抠图效果&#xff1a; 前言 在PhotoShop中我们经常会用到抠图操作&#xff0c;现在就用Shader实现一个简单的抠图效果。 实现原理&#xff1a; 使用当前像素颜色与需要抠掉的颜色相减作比较&#xff0c;然后与一个指定的阈值比较以决定是否将其显示出来&#xff1b; U…

【Mac】安装 Parallels Desktop、Windows、Rocky Linux

一、安装PD 理论上&#xff0c;PD只支持试用15天&#xff01;当然&#xff0c;你懂的。 第一步&#xff0c;在 Parallels Desktop for Mac 官网 下载 Install Parallels Desktop.dmg第二步&#xff0c;双击 Install Parallels Desktop.dmg 第三步&#xff0c;双击安装Paralle…

学习单片机需要多长时间才能进行简单的项目开发?

之前有老铁问我&#xff0c;学单片机到底要多久&#xff0c;才能进行简单的项目开发&#xff1f;是三个月速成&#xff0c;还是三年磨一剑&#xff1f; 今天咱们就来聊聊这个话题&#xff0c;我不是什么高高在上的专家&#xff0c;就是个踩过无数坑、烧过几块板子的“技术老友”…

pyqt 上传文件或者文件夹打包压缩文件并添加密码并将密码和目标文件信息保存在json文件

一、完整代码实现 import sys import os import json import pyzipper from datetime import datetime from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout,QPushButton, QLineEdit, QLabel, QFileDialog,QMessageBox, QProgressBar) from PyQt5.…

centos操作系统上传和下载百度网盘内容

探序基因 整理 进入百度网盘官网百度网盘 客户端下载 下载linux的rpm格式的安装包 在linux命令行中输入&#xff1a;rpm -ivh baidunetdisk_4.17.7_x86_64.rpm 出现报错&#xff1a; 错误&#xff1a;依赖检测失败&#xff1a; libXScrnSaver 被 baidunetdisk-4.17.7-1.x8…

LeetCode134☞加油站

关联LeetCode题号134 本题特点 贪心局部最优解-部分差值 如果小于0&#xff08;消耗大于油站油量&#xff09; 就从下一个加油站开始&#xff0c;因为如果中间有小于0的情况 当前站就不可能是始发站&#xff0c;整体最优解-整体差值 如果小于0 &#xff0c;那么就是不能有始发…

基于 Verilog 的时序设计:从理论到实践的深度探索

在数字电路设计领域,时序设计是一个至关重要的环节,它涉及到组合逻辑电路与时序逻辑电路的设计差异、时钟信号的运用以及触发器的工作原理等多个方面。本文将围绕基于 Verilog 的时序设计实验展开,详细阐述实验过程、代码实现以及结果分析,帮助读者深入理解时序设计的核心概…

蓝牙系统的核心组成解析

一、硬件层&#xff1a;看得见的物理载体 1. 射频模块&#xff08;Radio Frequency Module&#xff09; 专业描述&#xff1a;工作在2.4GHz ISM频段&#xff0c;支持GFSK/π/4 DQPSK/8DPSK调制方式 功能类比&#xff1a;相当于人的"嘴巴"和"耳朵" 发射端…

猎豹移动(Cheetah Mobile)

本文来自腾讯元宝 公司背景与发展历程 ​成立与早期定位 猎豹移动成立于2010年11月&#xff0c;由金山安全与可牛影像合并而成&#xff0c;初期以移动安全工具和清理软件为核心业务。其明星产品包括《猎豹清理大师》&#xff08;Clean Master&#xff09;和《猎豹浏览器》&…

go的gmp

参考链接&#xff1a;https://www.bilibili.com/video/BV19r4y1w7Nx Golang的GMP调度模型(协程调度器)是其并发编程的核心。GMP代表Goroutine、Machine和Processor三个关键组成部分。Goroutine是Go语言中的轻量级线程&#xff0c;Machine是操作系统的线程&#xff0c;Processor…

Vue3-高级特性

一、Vue中自定义指令 1.认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令&#xff1a;v-show、v-for、v-model等等&#xff0c;除了使用这些指令之外&#xff0c;Vue也允许我们来 自定义自己的指令。 注意&#xff1a;在Vue中&#xff0c;代码的复用和抽象主要还是…