comm网络关闭流程

完整步骤详解

步骤 1:用户释放最后一个全通信请求
  • 接口 :ComM_RequestComMode(User, ComMode := COMM_NO_COMMUNICATION)

  • 触发者:上层用户(例如某 SWC 或 BswM 动作)

  • 含义 :用户显式声明不再需要全通信,将自己的请求模式改为 COMM_NO_COMMUNICATION。

步骤 2:确认综合通信模式为"无需通信"
  • 接口 :ComM_GetRequestedComMode(...) = E_OK

  • 含义 :ComM 内部查询,确认所有用户请求的综合结果已是 COMM_NO_COMMUNICATION,即没有模块再需要全通信。

步骤 3:强制锁定通道为"无通信"
  • 接口 :ComM_LimitChannelToNoComMode(Channel, Status := TRUE)

  • 含义 :设置通道限制状态,禁止后续任何模块再请求 COMM_FULL_COMMUNICATION,保证下电流程不可逆。

步骤 4:切换到 READY_SLEEP 子状态
  • 动作 :Switch to SUBS_COMM_READY_SLEEP state()

  • 解释 :ComM 内部状态从 COMM_FULL_COM_NETWORK_REQUESTED 变为 COMM_FULL_COM_READY_SLEEP,本节点停止主动维持网络。

步骤 5:释放网络管理(Nm)
  • 接口 :Nm_NetworkRelease(NetworkHandle)

  • 触发者:ComM → Nm

  • 含义:通知 Nm 模块,本节点不再需要网络。Nm 随之停止发送周期性 NM 报文,并开始监测总线静默。

步骤 6:等待网络准备休眠指示
  • 回调 :ComM_Nm_PrepareBusSleepMode(Channel)

  • 来源:Nm → ComM

  • 含义:Nm 通知 ComM,网络上所有节点都已释放网络(或超时无活动),总线可以进入"准备休眠"状态。

步骤 7:ComM 内部切换到 SILENT_COMMUNICATION
  • 动作 :Switch to COMM_SILENT_COMMUNICATION

  • 说明 :ComM 状态机从 COMM_FULL_COM_READY_SLEEP 迁移到 COMM_SILENT_COMMUNICATION。

步骤 8:请求底层硬件进入静默模式
  • 接口 :CanSM_RequestComMode(NetworkHandle, COMM_SILENT_COMMUNICATION)

  • 触发者:ComM → CanSM

  • 说明:CanSM 将控制器配置为静默模式(禁止发送,允许接收)。

步骤 9:底层硬件确认静默模式切换完成
  • 回调 :ComM_BusSM_ModeIndication(NetworkHandle, COMM_SILENT_COMMUNICATION)

  • 来源:CanSM → ComM

  • 关键性:这是硬件层面对静默模式切换完成的确认。ComM 只有收到此回调后,才会向其他模块广播静默状态。

步骤 10:广播静默模式给上层模块
  • 接口(并发):

    • Rte_Ports_UserMode_P([n].Switch_currentMode(RTE_MODE_ComModes_SILENT_COMMUNICATION))

    • BswM_ComM_CurrentMode(Network, COM_M_SILENT_COMMUNICATION)

    • Dcm_ComM_SilentComModeEntered(uint8)

  • 触发者:ComM 收到步骤9的回调后

  • 含义:告知 RTE、BswM、Dcm 当前通信已进入静默状态,应用层可停止周期报文发送等操作。

步骤 11:等待总线休眠指示
  • 回调 :ComM_Nm_BusSleepMode(Channel)

  • 来源:Nm → ComM

  • 说明:在静默阶段,Nm 监测到总线持续无活动(达到阈值),即通知 ComM 总线已休眠。

步骤 12:ComM 内部切换到 NO_COMMUNICATION
  • 动作 :Switch to COMM_NO_COMMUNICATION

  • 说明:最终脱离静默,准备进入硬件关闭。

步骤 13:请求底层硬件进入无通信模式
  • 接口 :CanSM_RequestComMode(NetworkHandle, COMM_NO_COMMUNICATION)

  • 触发者:ComM → CanSM

  • 说明:指示 CanSM 关闭 CAN 控制器、将收发器置为低功耗模式。

步骤 14:底层硬件确认无通信模式切换完成
  • 回调 :ComM_BusSM_ModeIndication(NetworkHandle, COMM_NO_COMMUNICATION)

  • 来源:CanSM → ComM

  • 关键性 :这是硬件层面对彻底关断的确认。ComM 收到此回调,才认为底层真的进入了 COMM_NO_COMMUNICATION。

步骤 15:广播无通信模式给上层模块
  • 接口(并发):

    • Rte_Ports_UserMode_P([n].Switch_currentMode(RTE_MODE_ComModes_NO_COMMUNICATION))

    • BswM_ComM_CurrentMode(Network, COM_M_NO_COMMUNICATION)

    • Dcm_ComM_NoComModeEntered(uint8)

  • 触发者:ComM 收到步骤14的回调后

  • 含义:最终通知所有相关模块通信已完全关闭,ECU 可以安全执行后续休眠/下电序列。

相关推荐
木子n17 天前
软件架构设计实战-架构21.调度架构的抖动账单:抢占、协作与事件循环各自收多少延迟税
架构·autosar·性能工程·架构决策
木子n112 天前
软件架构设计实战-架构18.从Classic到Adaptive:SOA架构在MATLAB里的模样
架构·autosar·性能工程·服务化架构
木子n113 天前
软件架构设计实战-架构15.ISO 26262 架构设计要求:安全机制在架构里的落点
架构·autosar·功能安全·iso 26262
木子n114 天前
软件架构设计实战-架构18.从 Classic 到 Adaptive:SOA 架构在 MATLAB 里的模样
架构·autosar·性能工程·soa架构
AUTOSAR组织20 天前
AUTOSAR AP状态管理、操作系统及编程实例
汽车·autosar·软件架构·软件
寇旨20 天前
AUTOSAR_CP文档图解==>AUTOSAR_CP_SWS_COMManager
autosar·isolar工具
寇旨21 天前
AUTOSAR_CP文档图解==>AUTOSAR_CP_SWS_PDURouter
autosar·isolar工具
寇旨21 天前
AUTOSAR_CP文档图解==>AUTOSAR_CP_SWS_CANStateManager
autosar·isolar工具
寇旨22 天前
AUTOSAR_CP文档图解==>AUTOSAR_CP_SWS_COMBasedTransformer
网络·autosar
瞬间记忆1 个月前
AUTOSAR基础概念学习
汽车·autosar