ComM
概要
通信管理器模块(COM Manager, ComM)是基本软件(BSW)的一个组件。它是一个资源管理器,封装了对底层通信服务的控制。通信模块控制与通信有关的基本软件模块,而不是软件组件或可运行实体。ComM模块收集来自通信请求者的总线通信访问请求,并协调总线通信访问请求。
通讯模块的目的是:
为用户简化总线通信堆栈的使用。这包括简化的网络管理处理。
协调一个ECU上多个独立软件组件的总线通信栈的可用性(允许发送和接收信号)。
提供一个API来禁用发送信号,以防止ECU(主动)唤醒通信总线。
通过为每个通道实现通道状态机来控制ECU的多个通信总线通道。
提供强制ECU使总线处于“无通信”模式的可能性。
通过分配请求的通信模式所需的所有资源来简化资源管理。
模块配置
ETAS ISOLAR中主要配置或修改内容如下:
ComMGeneral
ComMDevErrorDetect
打开或关闭开发错误检测和通知。
ComMDirectUserMapping
如果该参数设置为true,则配置工具将自动为每个ComMPnc创建一个ComMUser,为每个ComMChannel创建一个ComMUser。
ComMEcuGroupClassification
定义模式抑制是否影响ECU。
000:没有模式抑制可以激活
001:唤醒抑制可以激活
ComMModeLimitationEnabled
如果要启用模式限制功能,则为真。
ComMPncGatewayEnabled
启用或禁用对部分网络网关的支持。
ComMPncPrepareSleepTimer
PNC状态机在COMM_PNC_PREPARE_SLEEP中等待的时间(以秒为单位)。
ComMPncSupport
启用或禁用对部分网络的支持。
ComMResetAfterForcingNoComm
通信应执行复位后,进入“无通信”模式,因为活动模式限制到“无通信”模式。
ComMSynchronousWakeUp
一个通道的唤醒将导致所有通道的唤醒,如果为TRUE。
ComMTMinFullComModeDuration
最小持续时间(以秒为单位),停留在COMM_FULL_COMMUNICATION子状态COMM_FULL_COM_NETWORK_REQUESTED上。
ComMVersionInfoApi
切换使用服务ComM_GetPublishedInformation()读取已发布信息的选项。
ComMWakeupInhibitionEnabled
如果唤醒抑制功能启用,则为真。
ComMGlobalNvMBlockDescriptor
引用包含非易失性数据的NVRAM块。如果未配置此参数,则不使用NVRam。
ComMConfigSet\ComMUser
此容器包含一个标识符列表,这些标识符用于引用系统中指定为请求通信模式的用户。
ComMUser
标识用于在系统中引用指定为请求通信模式的用户。
ImplementationType: ComM_UserHandleType
ComMUserEcucPartitionRef
表示在其中执行请求者的分区“EcucPartition”。当分区停止时,通信请求将被取消通信以避免由于一个停止的分区而导致总线保持清醒的情况。
ComMConfig\ComMChannel
此容器包含总线通道的配置(参数)。通道参数应在整个通信栈内协调。
ComMBusType
标识通道的总线类型。
ComMCDDBusPrefix
用于对CDD的API调用的前缀。
ComMChannelId
对应信道的信道标识号。
ComMFullCommRequestNotificationEnabled
定义是否为该通道提供接口ComM_CurrentChannelRequest的可选SenderReceiver端口。
ComMMainFunctionPeriod
指定触发主函数的周期。
ComMNoCom
不允许将ComM通道的状态更改为COMM_SILENT_COMMUNICATION或COMM_FULL_COMMUNICATION。
true:启用-不允许切换到上述通信模式。
false:禁用-允许切换上述通信模式。
ComMNoWakeup
定义是否不允许ECU唤醒通道。
true:启用(不允许唤醒)
false:禁用
ComMNoWakeUpInhibitionNvmStorage
如果该参数设置为“true”,则通道的NoWakeUp抑制状态应存储在ComMGlobalNvmBlockDescriptor所指向的块中。
ComMPncGatewayType
标识一个通信信道的部分网关行为。
ComMConfig\ ComMChannel \ComMNetworkManagement
ComMNmLightTimeout
定义COMM_FULL_COMMUNICATION子状态COMM_FULL_COM_READY_SLEEP剩余后的超时(以秒为单位)。
ComMNmVariant
定义网络管理的功能。应与NM配置协调一致。
ComMPncNmRequest
如果该参数等于true,那么每次由于PNC状态机更改为comm_pnc_nm而请求完整通信时,都应该使用API Nm_NetworkRequest调用。
ComMConfig\ ComMChannel \ ComMUserPerChannel
ComMUserChannel
引用对应于此通道用户的ComMUser。
ImplementationType: COMM_UserHandleType
ComMConfig\ComMPnc
ComMPncId
局部网络群集标识号。
ComMChannelPerPnc
引用此PNC所需的ComMChannel。
ComMPncEthIfSwitchPortGroupRef
对对应于此PNC的portgroup的引用。
ComMUserPerPnc
引用对应于此PNC的ComMUsers。
ComMConfig\ComMPnc\ComMPncComSignal
ComMPncComSignalDirection
指示该PncComSignal的通信方向。
ComMPncComSignalKind
指示此PncComSignal是否表示EIRA或ERA PNC信息。
这个参数ComMPncComSignalKind是可选的,当ComMPncComSignalDirection等于TX时应该忽略它。
ComMPncComSignalChannelRef
引用用于确定该PncComSignal应参与主动角色还是被动角色的ComMChannel(通过ComMChannel的参数ComMPncGatewayType)。
ComMPncComSignalRef
参考用于传输部分网络信道请求信息的通信信号。
自动配置生成
参考CanIf自动配置内容。
参考文档
[1] AUTOSAR_SWS_COMManager.pdf
[2] RTA-BSWReferenceGuide.pdf