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

AUTOSAR实战教程 -- 教你解决CANSM导致CanController无法启动看懂CANSM状态机

目录

稳态:

暂态

CANSM_BSM_S_PRE_NOCOM

CANSM_BSM_S_PRE_FULLCOM

CANSM_BSM_S_FULLCOM

Bug现象

​编辑

Debug流程

ComM请求有没有问题

CANSM内部有没有问题

错误原因

关键变量与函数

重点排查外围模块

参考文献


愚以为CanSM主要有两个大的作用

1.与CanIf的交互

CanSM 根据来自ComM 模块的模式请求改变CAN 网络的通信模式。

CAN 网络PDU 模式控制(PDU 发送与接收的控制)。

CanSM 使用CanIf 模块的API,设置CAN 控制器和CAN 收发器工作模式。CAN 控制器和CAN

收发器工作模式的变更由CanIf 通知CanSM,用于CanSM 状态切换。

CanSM 为每一个配置的CAN 网络实现一个状态机,并将网络状态的变更通知给ComM 和BswM。

2.CAN 总线BusOff 恢复处理。

网上对第二条作用:CAN 总线BusOff 恢复处理,,已经有非常丰富的讲解了。本文主要探讨第一条,CanSM对CanController的控制,以及遇到CanSM无法打开Controller时的排查、解决思路。

稳态:

模式为稳定的模式,可以接受正常的网络请求.

  • COMM_NO_COMMUNICATION

  • COMM_SILENT_COMMUNICATION

  • COMM_FULL_COMMUNICATION

(CANSM从初始化到FULL COMM的一般跳转路径)

暂态

  • CANSM_BSM_S_PRE_NOCOM ,

  • CANSM_BSM_WUVALIDATION ,

  • CANSM_BSM_S_PRE_FULLCOM ,

  • CANSM_BSM_S_CHANGE_BAUDRATE ,

  • CANSM_BSM_S_SILENTCOM_BOR ,

  • CANSM_BSM_S_NOT_INITIALIZED

我现在遇到的问题是,CAN controller无法打开,而且当前没有用trcv校验和Pn,也没有波特率改变,且不是busoff所以直接不考虑这几个状态:

  • CANSM_BSM_WUVALIDATION ,

  • CANSM_BSM_S_CHANGE_BAUDRATE ,

  • CANSM_BSM_S_SILENTCOM_BOR ,

查看CANSM的全局变量,发现一直待在CANSM_BSM_S_PRE_NOCOM,都没进Full Com ,排除之后重点考虑的是(按状态机先手顺序)这几个进入FULL COM之前的状态。

  • COMM_NO_COMMUNICATION

  • CANSM_BSM_S_PRE_NOCOM

  • CANSM_BSM_S_PRE_FULLCOM

虽然CANSM状态机非常复杂,但我们如果只看跟我们目标相关的状态,撇开无关的状态机,应该还是可以在短时间内Hold住的!我们重点捋一下这几个。

CANSM_BSM_S_PRE_NOCOM

ECU上电后,每一路CanSM状态机默认进入CANSM_BSM_S_NOT_INITIALIZED状态。EcuM 模 块 调 用 CanSM_Init 函 数 , CanSM 状 态 从 CANSM_BSM_S_NOT_INITIALIZED 切 换 到 CANSM_BSM_S_PRE_NOCOM状态。

CanSM 状 态 机 处 于 CANSM_BSM_S_FULLCOM 或 者 CANSM_BSM_S_PRE_FULLCOM 或 者 CANSM_BSM_S_SILENTCOM 状 态 时 , 上 层 模 块 调 用 CanSM_RequestComMo


http://www.mrgr.cn/news/12616.html

相关文章:

  • 网络安全实训六(靶机实例DC-3)
  • 如何使用查询路由构建更先进的 RAG
  • android13固定app方向 强制app方向
  • vue侧边栏
  • C++常见面试题(面试中总结)
  • docker拉取image失败时,需修改源
  • 语音聊天软件怎么选购防护产品
  • 在Android中如何获取当前设备的ID
  • 一、菜单扩展
  • 决策树和随机森林介绍
  • [网鼎杯2018] Comment
  • 网络互联基础
  • error on “nvm list available“, find the final solution by the Second error
  • 【Resoved】编译 OpenCV 4.5.5 源码,fatal error: mpi.h: No such file or directory
  • SQLAlchemy 在 Python 中的同步与异步操作及CRUD实现指南
  • 【Android 设备上的所有相关 WiFi 命令和使用方法】
  • Qt QTableWidget可编辑设置,设置部分可编辑
  • Java基础——自学习使用(泛型)
  • 游戏开发设计模式之单例模式
  • Python目录页