AutoSAR配置与实践(深入篇)6.3 COM 整体架构和模块交互
- COM(整体架构和模块交互)
- 一、COM层主要功能和架构
- 二、COM层的主要接口交互图
COM(整体架构和模块交互)
->返回总目录<-
一、COM层主要功能和架构
一、COM层主要功能和架构(参考MICROSAR COM Technical Reference CFG5 Version 9.00.01)《TechnicalReference_Com.pdf》
1.1 COM模块的主要功能:
- 为上层提供信号接口(无符号/有符号)
- I-PDUs 中信号的打包和解包
- 处理传输模式
- I-PDUs 间传输最小间隔
- I-PDU组的通信控制
- 接收的deadline监控
- 发送的deadline监控
- 通知的机制
- 对初始值的支持
- 信号网关
1.2 COM模块在AUTOSAR整体架构中的位置如下
知识梳理
–APPLICATION 层: 主要包括SWC、Runnable、PortInterface
–RTE层:为SWC之间、SWC对BSW层提供访问接口。
–BSW层:COM、MEM(内存管理)、DIAG、SYS、OS等,主要为上层提供基础应用(通过RTE)
二、COM层的主要接口交互图
接口交互详解:
Activity 1 通过RTE调用COM接口
常见接口有Com_SendSignal/Com_SendSignalGroup/Com_ReceiveSignal/Com_SetIpduGroup等
但是此类接口一般不通过SWC直接调用,而是通过RTE的mapping 的方式由SWC调用较为规范,否则无法做到SWC和BSW的隔离。
Activity 2 COM对RTE的回调
常见的接口有Com_RxIndication、Com_TxConfirmation
对于非诊断报文报文上传路径 CAN(Driver)-->CANIF---->PDUR---->COM ,Com_RxIndication表示PDUR对COM的回调。**I-PDU级别的回调通知配置**:配置通知函数后,Com_RxIndication调用时候直接调用通知函数。
I-PDU级别callout
信号级别callout
**信号级别的回调通知配置**:配置通知函数后,回调的时机取决于配置的类型。 以RX PDU为例(Tx PDU同理,使用的是com_TxConfirmation函数,在Com_MainfunctionTx轮询配置为defer属性的报文),deffered----->COM层收到com_Rxindication时候,不会马上产生信号回调,而是在Com_MainfunctionRx中产生信号回调函数。inmediate----->COM层收到com_Rxindication时,马上产生信号回调。
Activity 3 COM和DEM的交互
主要是诊断COM模块的故障,上报DEM模块
Activity 4 COM和DET交互
DET(开发错误跟踪),各模块均和DET有交互,用于识别开发中的错误,详细见后续DET章节
Activity 5: Com_Init函数
—> COM层内外接口和变量初始化
—->此项初始化完成不表示COM模块通讯使能
—->需在Com_InitMemory()后执行(主要初始化启动代码中不能初始化的变量,使Com处于初始化状态以便执行Com_Init)
Com_Init执行时机:由用户选择,一般在CAN相关芯片上电完成后,在BSM TASK某个状态中执行
Activity 6/ 7: Com_IpduGroupControl —->BSWM模块控制PDUGroup的使能/禁止
IPDU 控制的几个关键函数
函数:BswM_SetIpduGroup 检测条件满足后, BSWM模块设置对应的IPDUGroup的使能标志
函数:BswM_SetIpduDMGroup:检测条件满足后,BSWM模块设置对应的IPDU DMGroup的使能标志
函数:BswM_ExecuteIpduGroupControl
功能:BSWM主函数执行,轮询检测PDU控制请求,根据BswM_SetIpduGroup函数设置的PDUGroup使能标志
设置组内对应PDU的使能/禁止
子函数:**Com_IpduGroupControl**(Com_IpduGroupVector ipduGroupVector, boolean initialize) 功能:BSWM调用COM接口,寻找ipduGroupVector中TXIpduGroup和RXIpduGroup的使能状态,并对应使能/禁止 对应IpduGroup中的各个PDU。 子函数:**Com_IpduGroupControl_UpdateRxComIPduState**(ipduGroupVector, initialize);功能:BSWM调用COM接口,根据RxPDUgroup状态使能/禁止内部RXPDU 子函数:**Com_IpduGroupControl_SetRequestedActiveState**(ComTxPduId, initialize, bRequestedActiveState); 功能:BSWM调用COM接口,根据TxPDUgroup状态逐一使能/禁止对应PDUgroup中的RXPDU
场景示例(诊断使能APP报文)步骤:
Step 1.诊断SWC 发起诊断请求使能APP报文,诊断模块报文状态机变为DCM_ENABLE_RX_TX_NORM
Step 2. BSWM模块检测到诊断报文状态满足条件后,执行:
- 调用BswM_SetIpduGroup使能APP报文PDUGroup (通过设置数组BswM_ComIPduGroupState,数组为各PDUGroup使能状态 )
- 调用BswM_SetIpduDMGroup 使能PDU的Deadline监控功能;
- 执行完上述调用后设置IpduGroup控制请求FLAG为TURE( 通过函BswM_MarkPduGroupControlInvocation(BSWM_GROUPCONTROL_NORMAL);)
Step 3.BSWM轮询检测PDU控制请求为BSWM_GROUPCONTROL_NORMAL ,检测到后根据各PDUGroup中状态变化设置对应PDU的使能/禁止
Activity 8/9 COM和下层的交互
重点接口:PduR_ComTransmit
利用PDUR层下发数据,下发成功后PDUR层通过com_TxConfirmation通知Com层
Activity 10 DET为COM模块(和其他各模块)提供Det_Report_error报错接口