基于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网络远程唤醒】相关推荐

  1. Autosar NM : 网络是如何被唤醒的<一>

    目录 一.按照唤醒方式,可以将ECU网络节点类型划分为两类: 二.远程唤醒CAN网络是如何被唤醒的? 1.ECU唤醒 2.ECU唤醒检查 3.EcuM唤醒验证 4.关于CanSM 三.Autosar ...

  2. Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑

    文章目录 Wol 网络远程唤醒技术,通过TP-LINK路由器远程一键开启电脑 1.远程唤醒简介 2.需要以下唤醒条件 3.环境和准备工作 4.配置路由器,让路由器接收你的远程开机命令 5.测试配置的网 ...

  3. RK3568 网络远程唤醒技术

    RK3568网络远程唤醒技术(WOL)使用指南 第一节 网络远程唤醒技术介绍 网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引 ...

  4. 网络远程唤醒 WOL Magic Packet

    Magic Packet Magic Packet白皮书介绍: The basic technical details of Magic Packet Technologyare simple and ...

  5. linux 网络远程唤醒 WOL

    WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设备提供的一项管理功能.该功能可以当电脑处于关机或休眠状态时,通过给网卡发送特定的数据包从而命令网卡向主板发送开机指令,进而实现上电开 ...

  6. Linux系统通过Wake On/From LAN实现网络远程唤醒开机

    目录 场景描述 实现过程 实现条件 BIOS里设置网络唤醒过程 网卡是否支持魔术包唤醒查询 设置目标设备为魔术包唤醒模式 操作设备发出魔术包 目标设备重启完,网卡的wake-on模式变化解决方法 场景 ...

  7. linux 远程唤醒命令,使用命令行远程网络唤起主机

    在 Linux 下可以通过 etherwake 命令来网络唤醒设备. sudo apt install etherwake 检查主机是否支持网络远程唤醒 首先检查 BIOS 中设置,Wake on L ...

  8. 唤醒幻数据包禁用会怎么样_如何利用splashtop实现远程开机、远程唤醒电脑

    Splashtop商业版和个人版提供了局域网唤醒计算机(WoL)功能,您可以按照下面的指引进行设置. 首先,请确保完全满足以下三个条件,否则,远程唤醒无法工作. 计算机 BIOS支持WoL并且该选项已 ...

  9. 如何利用splashtop实现远程开机、远程唤醒电脑

    Splashtop商业版和个人版提供了局域网唤醒计算机(WoL)功能,您可以按照下面的指引进行设置. 首先,请确保完全满足以下三个条件,否则,远程唤醒无法工作. 计算机 BIOS支持WoL并且该选项已 ...

最新文章

  1. 昌宁一中高考成绩表查询2021,昌宁县一中20182019学年上学期高二数学月考试题含解析.docx...
  2. 菲尔兹奖数学家丘成桐:人工智能中的数学理论尚无很大突破
  3. 你不知道的那些“XX即服务”
  4. python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...
  5. vscode配置浏览器
  6. SSL certificate problem: unable to get local issuer certificate 的解决方法
  7. 多线程(6)线程同步
  8. python 示例_Python中带有示例的关键字除外
  9. 使用Spring StateMachine框架实现状态机
  10. 语言 ota_新增飞屏功能 ARCFOX αT首次OTA升级
  11. 地图的四着色 (CSU-1508)
  12. Flask实现图片的上传、下载及展示
  13. 北邮计算机学院 王小捷,王小捷智能科学与技术中心北京邮电大学.pdf
  14. 使用DirectX播放音频数据流
  15. 敏感词检测软件-在线敏感词批量检测免费
  16. 【蓝桥杯冲刺 day12】题目全解析
  17. 生物信息学生物影像_大规模生物学的五点原因
  18. 二维码生成器-客户端
  19. .Net CLR运行时是如何编译函数的
  20. 用STM32F103C8T6实现红绿蓝LED流水灯

热门文章

  1. 局域网-无法访问网上邻居解决方法
  2. 贵州支教之第三天(11月9日)
  3. 新手小白如何精准引流?新手小白精准引流思路
  4. 如何选择创建Maven的archetype
  5. 爬取自如网站杭州市的租房信息
  6. 【论文翻译 - RFID】射频全息图:利用商业化产品对移动射频标签进行实时高精度追踪
  7. 20行代码做一个简易微信群发工具需要哪些单词
  8. 医疗行业售前100问之第3问:医院的常用信息系统有哪些?
  9. 单片机 利用C语言产生正弦波DA数据
  10. 编译器工具链(二)——交叉编译