前言

本系列请点击:《搞一下CP AUTOSAR入门》

所有系列请点击:《汽车电子系列分享》

在上一篇公众号里已经对Communication的管理模块ComM做了详细的介绍, ComM是整个通信的服务管理模块,掌控整个AutoSAR的通信,在通信协议栈中除了ComM之外,网络管理也是主要的通信控制和管理模块,因此本篇主要对CAN的AutoSAR提供的网络管理功能做详细的介绍。

全系内容可在《搞一下汽车电子》后台回复 “系列”,或进入菜单栏 “分享平台” --> “系列分享”

一、概述

在汽车电子ECU开发过程中,网络管理的主要目的在于减少功耗,根据整车通信网络拓扑结构,会将不同的ECU分布到不同的功能域中,各种通信总线在特定的情况下根据功能需要选择休眠还是正常工作,通过区分不同的通信总线结构实现特定功能下特定ECU之间的通信,而不需要参与该功能的ECU就可以进入到休眠中,减少能量损耗。

针对整车的网络管理功能,目前的主流方式为OSEK的网络管理和AutoSAR的网络管理。两者在当前的汽车ECU网络管理中应用十分广泛,下面就对这两种网络管理的功能做简单的概述

二、OSEK网络管理 与 AUTOSAR网络管理 比较

相同点

在网络管理中都需要一个特定的ECU发起唤醒报文。

都是直接的网络管理方式,每个ECU都有自己的节点ID,都需要特定的网络管理报文。

目的一样,都是协调多个ECU在特定功能下的唤醒和休眠,最终达到低功耗的目的。

不同点

建立网络的过程方式不同,一般OSEK对于网络管理的建立要求比较严格,当某个ECU节点唤醒后,发出的第一条帧为Alive类型,采用的是令牌环(唤醒的ECU向下一个节点发送Ring报文)参与到整个网络中,

而AutoSAR的网络管理要求比较简单,基于广播式的网络管理报文,唤醒的ECU直接发送网络管理报文就可以,所有的ECU节点想参与到通信中的只要各自发送网络管理报文就可以

PDU格式不一样,OSEK由于唤醒过程要知道下一个唤醒的ECU,因此在PDU中包含了自己的地址和下一个唤醒的ECU的地址,而AutoSAR网络管理报文主要包含自己的ECU地址就可以,其它的一些指令信息数据也不一样。

休眠方式不一样,OSEK的休眠是一个请求和确认的过程,在休眠过程中要等待休眠的确认帧,而AutoSAR下直接停止发送网络管理的报文就可以准备进入休眠。

对于OSEK和AUTOSAR的网络管理详细的不同可以参考详细的标准可以做深入的研究,这里就不做详细的描述了,下面主要对AUTOSAR的网络管理做详细的介绍。

三、AUTOSAR 网络管理功能介绍

AutoSAR网络管理属于一种直接的分布式网络管理,在AutoSAR的网络管理在定义中包含了两个主要的属性直接和分布,直接主要是说每个ECU都有自己的网络管理报文,

在该报文中直接包含网络管理相关的信息和数据以及需要进行的通信总线节点,NM报文的数据和NM的逻辑可以不相关;分布主要是指在AutoSAR网络管理中所有的节点都一样,不存在Master和Slave之分,每个参与的节点根据需要都可以被唤醒也可以唤醒别的ECU。

AutoSAR的网络管理根据CAN Node接收和发送的NM Message进行该节点活动,根据NM Message控制整个网络对Normal模式和Sleep模式的切换。根据CAN NM 报文来检测网络上的其他节点的状态,进行同步休眠等,支持支持主动唤醒/被动唤醒模式,支持Gateway功能和PN局部网络管理。

在CAN的网络管理中,周期性的NM Message在发送节点广播式的发送,节点可以周期接收到NM PDU,接收到NM PDU表明相应的节点想要保持网络正常工作。节点想要进入Sleep模式,那么停止发送NM PDU准备进入Sleep,如果此时网络还有别的节点在发送NM PDU,则延迟进入Sleep。

在所有节点停止发送NM PDU并且设置的超时时间到,这时候整个网络上的节点同步进入Sleep模式。节点想要从Sleep进入到Normal模式,则请求发送NM PDU或者接收到其它节点发送的NM PDU。

四、AUTOSAR NM PDU 格式

在AutoSAR网络管理中,所有参与的网络节点采用相同的NM PDU格式。一个NM的报文主要包含下面的内容:

其中,Byte0(Source Node Identifier)表示发送节点的ID,11位NM报文的ID中一般ID的高位表示网络管理类型的ID,后边低八位表示具体的节点。

Byte1(Control Bit Vector)的定义如下 :

每个Bit的含义如下:

Bit 0: Repeat Message Request 表明Repeat Message是否被请求。

Bit 3: NM Coordinator Sleep Bit 表明是否开始同步的Shutdown。

Bit 4:Active Wakeup Bit 表明是否唤醒通信网络。

Bit 6: Partial Network Information Bit (PNI)。

Bit 1/2/5/7用于后期扩展。

Byte2-Byte7(Userdata0-Userdate5):

该6个Byte主要根据每个OEM的使用场景可以定义具体的数据信息,在PNC中一般包括PNC的请求,也可以定义ECU被唤醒的原因,该部分的数据在AutoSAR中可以路由到Com层进行处理。

五、AUTOSAR 网络管理状态转换

在AutoSAR CAN的网络管理中,主要包含三个状态Network Mode、Pre-Bus Sleep Mode和Bus Sleep Mode,其中Network Mode又拆分成了三个子状态Repeat Message State、Normal Operation State以及Ready Sleep State。整个AutoSAR CAN网络管理的状态转换如下图所示:

CAN的网络管理在设计和实现的过程中主要分为两中策略,分别是被动网络管理和主动网络管理。

对于被动网络管理(Passive)而言,AutoSAR CAN的网络管理中基本只有Network Mode、Pre-Bus Sleep Mode和Bus Sleep Mode三种状态转换,Network Mode内部的状态被动网络管理节点不会进行参与,被动网络管理不能够请求网络也不能释放网络,不能发送NM Messages,

因此不会参与NM的逻辑,但是可以接收和发送Application Messages,不会进行入到Normal State状态。

在被动模式下接收到NM报文则上层模块调用PassiveStartUp的命令继续进入到Network Mode,在Network Mode收不到主动节点发来的NM报文一段时间(NM Time-Out)后会进入到Pre-Bus Sleep Mode,

然后进行下电休眠的计数器开始休眠前的同步,当定时器时间达到后仍然没有收到NM报文,那么就进入到Bus Sleep Mode;在Pre-Bus Sleep Mode接收到NM报文则上层模块调用PassiveStartUp的命令继续进入到Network Mode。

主动网络管理(Active)模式下,整个AutoSAR CAN网络管理定义的状态都会进行参与,主动网络管理的节点除了接收网络相关的唤醒外,也可以根据Local的唤醒源(KL15、定时唤醒等)主动从Bus-Sleep Mode下发送Network Request进入到Network Mode中的Repeat Message State,快速请求整个网络上的其他节点进入到正常工作模式(主动节点唤醒其余通信节点)。

同时在Network Mode内部下根据实际需要可以收到Request或者Release网络进行内部的状态切换。一般Request或者Release的请求可以是User自己进行操作也可以是根据收到的网络管理报文切换。

六、Partial 网络管理(PN)

在CAN的通信过程中一般分为三种通信方式,分别为不支持唤醒(TJA1040)、支持任意帧唤醒(TJA1043)、支持特定帧唤醒(TJA1145),对应三种不同的唤醒需要外部的Trcv也是不同的。

TJA1040这种Trcv一般不要特殊的IO控制,供电后就可以工作。对于支持任意帧唤醒的TJA1043,需要使用IO控制其状态转换,将其INT相关的引脚在电路设置的时候关联到MCU的唤醒引脚或者SBC的唤醒引脚,

在系统进入到休眠前将TJA1043通过IO设置成Trcv进入休眠,然后MCU休眠后,当CAN总线上有任意报文的时候就可以将MCU唤醒。对于TJA1145这种支持PN唤醒的Trcv一般需要借助其他的通信总线(SPI等)进行设置,

在下电的时候设置唤醒该ECU的特定ID以及特定的Data域,这样在MCU休眠前将特定唤醒报文的信息通过SPI写到TJA1145寄存器中,当MCU休眠后,TJA1145 Trcv检测到配置好的ID和Data就可以将MCU唤醒。

对于PN而言,需要注意的是一般会在NM报文的Userdata中设计相关的PNC节点,一般Userdata中的一个Bit可以映射一个PNC,在网络设计中就可以根据具体的需要决定特定帧的定义来实现网络唤醒和网络管理。

对于网络管理PNC相关的状态设置转换可以参考ComM的上一篇公众号介绍。

七、AUTOSAR 网络管理的主要配置

CAN的网络管理应用种关联的模块比较多,主要包括CanTrcv、SPI、CanIf、CanNM、CanSM、Com、ComM、BswM、APP等,下面简单概述下每个模块的主要配置信息。

CanTrcv:主要关注的是外部使用的Trcv类型,如果是支持任意帧唤醒的,一般关联到DIO模块来控制模式的转换,如果是支持特定帧唤醒的那么需要关联到SPI。同时Trcv也会设置唤醒帧的相关信息(ID、Data Length、Payload等)

SPI:设置SPI的Sequence、Job、Channel、Device等配置实现Trcv调用SPI驱动和设置外部的Trcv硬件

CanIf:主要设置网络管理相关的报文的UL,一般选择为CanNM,同时需要设置相关API的使能

CanNM:配置网络管理报文相关的参数(Byte0和Byte1),PN的使能以及相关数据设置,EIRA下信号的路由(主要是关联到COM层相关的Userdata中的数据)等, Gateway功能设置

CanSM:主要结合ComM对每一个PNC的状态进行状态切换管理,同时要关联到特定的Trcv

Com:一般处理NM的Userdata数据,PN下会使用Com相关的接口函数处理PN的网络管理。

ComM:选择网络管理的类型,并根据PNC的使用建立一个的通道管理,如果支持Gateway功能,还要设置Gateway下的控制,同时根据使用的Channel关联到BswM和User中实现对状态的通知和接收来自BswM或者User的控制。

BswM:设计基于网络管理的状态切换的Rules,合理设计对通信通道以及PDU的控制

APP:建立网络管理与应用层的交互,通过设计NM报文中的Userdata中的内容,应用层也可以参与到网络管理的逻辑控制。

对于详细的参数配置,请参考AUTOSAR官方文件,这里就不一一说明了。

本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

如果大家有想分享的内容,欢迎大家一起来分享! 更多内容请关注微信公众号《搞一下汽车电子》

更多 CP&AP AUTOSAR的其他内容,也可以随时与我们联系。

联系我们

微信:shactiontech
邮箱:support@shactiontech.com

搞一下CP AUTOSAR 入门 | 08 CP AUTOSAR CAN 网络管理简介相关推荐

  1. 搞一下CP AUTOSAR 入门 | 07 CP AUTOSAR ComM 详解

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇中已经对AutoSAR中模式管理NvM做了详细的介绍,这篇主要介绍的是Au ...

  2. 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...

  3. 搞一下CP AUTOSAR 入门 | 09 CP AUTOSAR APP 简介

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在整个CP AUTOSAR架构开发的软件产品中主要分为APP.RTE.BSW三个架 ...

  4. AUTOSAR AP与 CP 有什么差异?

    1标准概况不同 1.1 时间 在2003年AUTOSAR组织刚成立的时候,只有一个AUTOSAR标准,没有AP(Adaptive Platform)与CP(Classic Platform)之分. 在 ...

  5. 【Ap AutoSAR入门与实战开发02】-【Ap_s2s模块01】: s2s的背景

    总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 s2s的背景? 2 AUTOSAR 方法应支持车辆的无缝开发 2.1 面向服务的ECU的解读 2.2 面向信号的ECU ...

  6. 08 Adaptive AUTOSAR 和 Security

    Hello!大家好! 欢迎来到<搞一下汽车电子> 今天,我们给大家分享的是Adaptive Platform AUTOSAR 专题视频:08 自动驾驶 & 域控中间件--自适应平台 ...

  7. 【Ap AutoSAR入门与实战开发03】-【Ap_s2s模块02】:到底什么是基于信号,什么是基于服务,两者的主要区别是什么?

    总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 基于信号的通信 2 基于服务的通信 3 面向服务设计举例 在[Ap_s2s模块01]中我们大概讲述了,为什么要有s2s ...

  8. AutoSAR入门到精通讲解-总目录

    建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化.规范化.安全化.快速化和经济化 总目录 一.AutoSAR-CP 1.AutoSAR-CP介绍 2.AutoSAR-C ...

  9. linux实验试题 cp,cp命令实验,cp命令

    cp命令实验,cp命令 创建条件 [root@localhost ~]#mkdir /source [root@localhost~]#mkdir /target [root@localhost~]# ...

  10. linux cp{,bak},Linux中cp覆盖不提示

    cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的. 1. 把a目录下的文件复制到b目录 cp –r a/* b 2. 执行上面的命令时,b存在的每个文件都会 ...

最新文章

  1. R语言使用ggplot2包的快速可视化函数qplot绘制散点图实战
  2. R语言dplyr包对独特值(distinct)进行计数实战
  3. html制作顶部选项卡,html: 原生javascript实现选项卡
  4. rsync定时加脚本实现本地到阿里的ftp文件同步
  5. 「BZOJ2879」[Noi2012]美食节
  6. hive函数大全:11大类、109个函数
  7. vue watch 修改滚动条_Vue 里的 computed 和 watch 的区别
  8. ThreadLocal 初探
  9. CANN AICPU算子耗时分析及优化探索
  10. Pandas 对象储存
  11. oracle 数据库安装与使用说明(简略版)
  12. CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)
  13. Bailian4040 买书问题【Ad Hoc】
  14. Linux 每日一练 :cat猫 的 反义词是啥 ? 是这个tac 哇哇哇!!
  15. 账号注册邮箱激活设计
  16. 多个mysql共存_双mysql共存(MySQL8.0与MySQL5.7)
  17. 如何理解泊松分布和泊松过程
  18. 关于npm i 的那点事
  19. 联想笔记本声音太小怎么办_联想笔记本电脑没声音了怎么办(大学生如何选择笔记本电脑)...
  20. linux下同一个tomcat部署多个项目 同一个端口

热门文章

  1. Python根据拼音对中文排序
  2. 用计算机打元宵节快乐,2019元宵节祝福语大全简短 祝大家元宵节快乐
  3. linux kvm usb设备,KVM虚拟机上关于宿主机的USB设备使用问题探究
  4. Python系列9——类和对象(3)
  5. 调试html代码的快捷键,chrome网页F12调试快捷键
  6. 结构相似性(SSIM)原理及其实现
  7. 第一门课神经网络和深度学习(一)-深度学习引言
  8. python爬虫面试自我介绍范文_程序员求职面试自我介绍范文4篇
  9. CAD图纸打开慢是什么原因?怎么解决?
  10. SaaS、PaaS、IaaS云服务模式和商业云平台设计与建设方案