AUTOSAR ComM模块介绍
Autosar ComM概述
Autosar ComM 全称是 Autosar Communication Manager,顾名思义就是用来管理通讯的,ComM 模块位于 BSW 中 Systme Service 层,属于 resource managemnt 组件。
Autosar ComM 的目的如下:
- 为用户简化Communication Stack的使用,包含一个简单的网络管理
- 搜集通讯请求者对于通讯访问的请求,协调总线访问请求
- 提供API去禁止信号发送,以免ECU唤醒总线
- 在每一个总线通道实现一个状态管理从而控制一个或多个通讯总线通道
Autosar ComM和其他模块的依赖关系
ComM模块从用户和总线状态管理模块请求总线通讯能力。
- 每个用户都可以请求通讯模式。RTE传播用户请求到ComM模块,并且从ComM传递通讯模式指示给用户。
- EcuM负责验证唤醒事件,然后发送指示到ComM,ComM切换COM模式。ECU通讯的允许和关闭是由EcuM和BswM一起完成。
- BswM实现了模式仲裁(Mode Arbiration)和模式控制(Mode Control)两种功能应用到应用模式管理和车辆模式管理。如果在BswM的ActionLists配置了请求ComM模式,BswM传播用户请求到ComM模块。如果在ActionList中配置了Com_IpduGroupControl,BswM会控制PDU Groups。
- ComM使用NVRAM Manager存储和读取NV(non-volatile)数据。
- DCM执行诊断PDUs的调度。DCM作为一个用户,通过“DCM_ActiveDiagnostic"请求Communication Mode-COMM_FULL_COMMUNICATION。DCM不提供启动或停止发送和接收的API,但是会根据ComM通讯模式去保证通讯能力。
- CAN State Manager根据ComM的通讯模式去控制实际的总线状态,ComM根据CAN State Manager和总线状态的映射关系去请求通讯模式。
- ComM模块通过NM同步通信控制跨网络的能力(同步启动和关闭)
ComM功能规范
ComM为用户简化资源管理,不管用户是运行实体(runnable entities)、SW-Cs、the BswM(例如SW-C通过BswM的请求)或者DCM。
-
ComM提供了三种通讯模式,最高的通讯模式是COMM_FULL_COMMUNICATION,最低的通讯模式是COMM_NO_COMMUNICATION。
-
用户只可以请求FULL或者No Communication,COMM_SILENT_COMMUNICATION以及子模式/子状态只是为了同步网络。
-
在COMM_FULL_COMMUNICATION模式,ComM允许发送和接收;在COMM_NO_COMMUNICATION模式,ComM禁止发送和接收。
-
多个用户请求时,只要有一个用户请求Higher Communication Mode时,ComM会设置这个Higher Communication Mode为目标通讯模式(highest wins)。
-
用户可以查询当前ComM模式。
PNC管理
PNC概述
ComM为每一个部分网络集群(PNC)实现了一个状态机,去表示每一个PNC的通讯模式。
每一个PNC的状态机和ComM的状态有一个简单的映射关系。
每个PNC在NM用户数据的位向量中使用一个专用位位置在CAN或FlexRay总线。如果PNC是由节点的本地通信用户请求的,则执行PNC命令node设置NM用户数据中对应位为1。如果没有请求PNC,节点设置NM用户数据中对应位为0。各总线网络管理为PNC收集和聚合NM用户数据,并通过COM位向量通过COM信号传递COM。
PNC状态机
ComM支持多达56个PNC状态机
PNC状态机由COMM_PNC_FULL_COMMUNICATION和COMM_PNC_NO_COMMUNICATION两种状态机组成。
ComM通道状态机
ComM通道状态机包含三种主状态,分别为
- COMM_NO_COMMUNICATION
- COMM_SILENT_COMMUNICATION
- COMM_FULL_COMMUNICATION
每一个ComM通道默认的状态是COMM_NO_COMMUNICATION