【Autosar Can网络远程唤醒】
基于Tja1043的Autosar网络管理(NO PNC)
- 关于Tja1043
- 关于网络管理
- 关于CAN总线状态管理
- 基于Tja1043实现唤醒
- 唤醒
- 硬件唤醒序列
- 软件唤醒序列
- 网络管理
- 应用报文的发送/接收的打开与关闭
关于Tja1043
网络上关于Tja1043芯片资源和工作特性的文章有很多,可以参考下面的博客
链接:https://blog.csdn.net/qq_42357877/article/details/128567660
关于网络管理
网络管理有一套状态机,搞清楚每个状态的意义,进入和跳出的条件,网络管理就清楚了。
网络上关于Autosar网络管理机制的文章也很多,个人觉得官方英文文档,每个人都会有自己的理解,之后通过汉语表达出来,很多时候都不能精准的表达出英文原文的意思,所以在这里就不把网络管理那一套机制再搬到这里,建议大家还是要去看去看Autosar的官方文档,不理解的地方再参考网络上大家的解读文章,没时间没精力的也可以参考下面的博客:
链接:https://blog.csdn.net/weixin_42967006/article/details/121715270
关于CAN总线状态管理
Can总线的控制流由CanSM和ComM完成,CanSM的状态跳转如下:
基于Tja1043实现唤醒
唤醒
硬件唤醒序列
唤醒的第一步是唤醒芯片,那么我们的芯片是如何被唤醒的呢?
这首先需要硬件的配合,根据1043的特性,当1043进入sleep模式之后,检测到总线上有符合唤醒条件的唤醒序列,就会进入standby模式同时INH脚被拉高,硬件需要再设计电路时,保证[1]1043常供电,能够随时检测总线电平变化;[2]将1043的INH脚与SBC(电源芯片)的唤醒脚连在一起,这样1043在检测到总线上的唤醒之后进入Standby模式拉高INH就会唤醒SBC,SBC给主芯片供电,主芯片上电。当然,唤醒也可以有别的实现方式,我目前还没接触过。
主芯片上电之后由软件接管,软件开始初始化,执行软件唤醒序列。
软件唤醒序列
软件唤醒不仅仅设计到网络管理,还有BswM,EcuM等模式管理。
芯片上电之后,从main开始运行,初始化EcuM,BswM等底层模块,打开OS,开始运行周期Task等等。周期任务开始运行之后,CanTrcv的MainFunction开始被周期调度,在这个周期函数中,需要周期检测Trcv是否有唤醒标志,检测到唤醒Flag之后,调度EcuM_CheckWakeup函数通知到EcuM。
随后,EcuM_CheckWakeup再调度CanIf_CheckWakeup,CanIf_Checkup再调度CanTrcv_CheckWakeup,在CanTrcv_CheckWakeup调度EcuM_SetWakeupEvents通知到EcuM。
随后EcuM开始Wakeup Validation(找不到比较好的翻译,就直接用英文吧),CAN Wakeup Validation如下:
EcuM_Mainfunction需要周期处理唤醒事件,在被CanTrcv唤醒并走前前面提到的流程后,会满足调度EcuM_StartWakeupSources的条件,EcuM_StartWakeupSources需要用户自己实现,如果传入的wakeupSource是配置的Can唤醒相关的唤醒,则调度CanSM如下图:示例的项目中有两路CAN能唤醒
在CanSM的官方文档中,调度CanSM_StartWakeupSources会触发CanSm发生CANSM_BSWM_S_NOCOM到CANSM_BSWM_WUVALIDTION的转变,如下图:
这个状态改变将会打开CanController和CanTrcv进入normal,此时trcv和controller具备了收发CAN报文的能力,但是CAN报文只能传递到CanIf,因为再往上需要打开相应的PDU组。此时,若收到报文,CanIf层的RxIndication函数会设置一个NewMessageRx的标志,此标志在EcuM_CheckValid会用到。
EcuM_CheckValidation与EcuM_StartWakeupSources一样,满足条件时会被周期调度,同样也需要用户自己实现:
EcuM_CheckValidation会调度CanIf_CheckValidation,在CanIf_CheckValidation函数中如果NewMessageRx标志如果被置位则调度EcuM_ValidateWakeupEvent。在EcuM_ValidateWakeupEvent函数中,通过一些检查,满足条件后会调度ComM_EcuM_WakeUpIndication函数里面做一些判断,满足条件之后调度Nm_PassiveStartUp。Nm_PassiveStartUp调度之后由网络管理接管。
网络管理
Nm_PassiveStartUp会调度CanNm_PassiveStartup,CanNm_PassiveStartup的调度将会使网络管理的状态由BusSleep模式跳转到RepeatMessage状态,这个状态的转换会调度CanSM_RequestComMode请求COMM_FULL_COMMUNICATION,这个请求会触发CanSM的状态由CANSM_BSWM_WUVALIDTION到CANSM_BSWM_S_PREFULLCOM的转变,之后进入到CANSM_BSWM_S_FULLCOM,同时ComM的状态进入到COMM_FULL_COMMUNICATION.
RepeatMessage的时间结束之后进入到ReadySleep状态(期间一直没有主动请求),如果总线上一直有NM报文的接收会一直停留在该状态,同时也使ComM的通信状态维持在COMM_FULL_COMMUNICATION。
应用报文的发送/接收的打开与关闭
Com层报文的发送和接收的开启需要同时满足的条件有2个[1].Com Stack的状态处在COMM_FULL_COMMUNICATION,[2].对应的PDU Group打开。以上我们完成了ComM的状态从COMM_NO_COMMUNICATION到COMM_FULL_COMMUNICATION的转变,Com Stack具备了通信能力,Com层接收报文和发送报文还需要打开对应的Group。在不具备PN功能的网络中,通常将一个Channel的Rx分为一组,Tx分为一组(分组在Com层的配置中完成),Rx Group的打开一般在ComM不处于COMM_NO_COMMUNICATION,否则关闭;Tx Group的打开一般在对应Channel进入COMM_FULL_COMMUNICATION时打开,否则保持关闭,一般这项工作是通过BswM中配置Rule完成的。
BswM如何实现PDU Group的控制下次有机会在详细写。
【Autosar Can网络远程唤醒】相关推荐
- Autosar NM : 网络是如何被唤醒的<一>
目录 一.按照唤醒方式,可以将ECU网络节点类型划分为两类: 二.远程唤醒CAN网络是如何被唤醒的? 1.ECU唤醒 2.ECU唤醒检查 3.EcuM唤醒验证 4.关于CanSM 三.Autosar ...
- Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑
文章目录 Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑 1.远程唤醒简介 2.需要以下唤醒条件 3.环境和准备工作 4.配置路由器,让路由器接收你的远程开机命令 5.测试配置的网 ...
- RK3568 网络远程唤醒技术
RK3568网络远程唤醒技术(WOL)使用指南 第一节 网络远程唤醒技术介绍 网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引 ...
- 网络远程唤醒 WOL Magic Packet
Magic Packet Magic Packet白皮书介绍: The basic technical details of Magic Packet Technologyare simple and ...
- linux 网络远程唤醒 WOL
WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设备提供的一项管理功能.该功能可以当电脑处于关机或休眠状态时,通过给网卡发送特定的数据包从而命令网卡向主板发送开机指令,进而实现上电开 ...
- Linux系统通过Wake On/From LAN实现网络远程唤醒开机
目录 场景描述 实现过程 实现条件 BIOS里设置网络唤醒过程 网卡是否支持魔术包唤醒查询 设置目标设备为魔术包唤醒模式 操作设备发出魔术包 目标设备重启完,网卡的wake-on模式变化解决方法 场景 ...
- linux 远程唤醒命令,使用命令行远程网络唤起主机
在 Linux 下可以通过 etherwake 命令来网络唤醒设备. sudo apt install etherwake 检查主机是否支持网络远程唤醒 首先检查 BIOS 中设置,Wake on L ...
- 唤醒幻数据包禁用会怎么样_如何利用splashtop实现远程开机、远程唤醒电脑
Splashtop商业版和个人版提供了局域网唤醒计算机(WoL)功能,您可以按照下面的指引进行设置. 首先,请确保完全满足以下三个条件,否则,远程唤醒无法工作. 计算机 BIOS支持WoL并且该选项已 ...
- 如何利用splashtop实现远程开机、远程唤醒电脑
Splashtop商业版和个人版提供了局域网唤醒计算机(WoL)功能,您可以按照下面的指引进行设置. 首先,请确保完全满足以下三个条件,否则,远程唤醒无法工作. 计算机 BIOS支持WoL并且该选项已 ...
最新文章
- 昌宁一中高考成绩表查询2021,昌宁县一中20182019学年上学期高二数学月考试题含解析.docx...
- 菲尔兹奖数学家丘成桐:人工智能中的数学理论尚无很大突破
- 你不知道的那些“XX即服务”
- python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...
- vscode配置浏览器
- SSL certificate problem: unable to get local issuer certificate 的解决方法
- 多线程(6)线程同步
- python 示例_Python中带有示例的关键字除外
- 使用Spring StateMachine框架实现状态机
- 语言 ota_新增飞屏功能 ARCFOX αT首次OTA升级
- 地图的四着色 (CSU-1508)
- Flask实现图片的上传、下载及展示
- 北邮计算机学院 王小捷,王小捷智能科学与技术中心北京邮电大学.pdf
- 使用DirectX播放音频数据流
- 敏感词检测软件-在线敏感词批量检测免费
- 【蓝桥杯冲刺 day12】题目全解析
- 生物信息学生物影像_大规模生物学的五点原因
- 二维码生成器-客户端
- .Net CLR运行时是如何编译函数的
- 用STM32F103C8T6实现红绿蓝LED流水灯