AUTOSAR 通信服务-CanSM配置及代码分析

汽车安全 3年前 (2021) admin
1,769 0 0

AUTOSAR CanSM模块的分享分为CanSM模块概念详解和CanSM模块配置及代码分析,具体的项目实战请关注本号的后续文章,本篇为CanSM模块配置及代码分析篇。

AUTOSAR 通信服务-CanSM概念详解

 

AUTOSAR 通信服务-CanSM配置及代码分析


1.CanSM和其他模块交互时序分析

CanSM模块的所有交互接口都依赖于CanIfComMBswMDemCanNM等模块。这里以CanSM模块调用CanIf模块接口控制Can控制器为例,说明CanSM模块和其他模块的交互过程。

 

1.1 CanSm_StartCanController时序图

CanSM模块可同步或者异步的设置Can控制器模式。

同步:CanSM模块调用CanIf模块的接口函数CanIf_SetControllerMode设置Can控制器模式,直到接收到CanIf模块的的回调通知CanSM_ControllerModeIndicationCanIf_SetControllerMode函数才返回E_OK,此时Can控制器已经切换到预定的模式。

 

异步:CanSM模块调用CanIf模块的接口函数CanIf_SetControllerMode后立即返回,之后在CanSM模块的MainFunction中轮询CanIf模块的Indication通知。

 

AUTOSAR 通信服务-CanSM配置及代码分析


1.2 CanSm_StopCanController时序图

CanSm_StartCanController基本类似。

 

AUTOSAR 通信服务-CanSM配置及代码分析


2.CanSM模块配置

CanSM配置主要包括CanSMConfigurationCanSMGeneral的配置。

CanSMConfiguration: CAN网络的特殊配置,主要包括一些全局配置参数及一些子配置容器的配置。

CanSMGeneral: 通用配置项,主要配置一些预编译功能的开闭。

 

AUTOSAR 通信服务-CanSM配置及代码分析


2.1 CanSMGeneral

AUTOSAR 通信服务-CanSM配置及代码分析


CanSMDevErrorDetect: 配置是否开启Error检测上报功能。

 

CanSMGetBusOffDelayFunction: 该参数设置<User_GetBusOffDelay> callout函数的名称,CanSM使用该函数获取额外的L1/L2延迟时间。此功能仅在启用了CanSMEnableBusOffDelay的通道中调用。

 

CanSMGetBusOffDelayHeader: 该参数配置包含<User_GetBusOffDelay> callout函数原型的头文件

 

CanSMIcomSupport: 配置CanSM中对虚拟网络特性的支持。

 

CanSMMainFunctionTimePeriod: 配置主函数的调度周期。

 

CanSMPncSupport: 配置是否支持局部网络功能。

 

CanSMSetBaudrateApi: 配置是否支持Can_SetBaudrate API的使用。

 

CanSMTxOfflineActiveSupport: 配置是否支持ECU被动功能。

 

CanSMVersionInfoApi: 配置是否支持版本检测API

 

2.2CanSMConfiguration

CanSMModeRequestRepetitionMax: CanSM在进行模式切换请求过程中未收到对应模块模式切换成功的Indication后最大的重试次数。


CanSMModeRequestRepetitionTime: CanSM模块使用CanIf模块的接口重复进行模式切换请求的重复间隔时间。

 

CanSMManagerNetwork: 这个容器包含每个CAN网络的特定参数。

 AUTOSAR 通信服务-CanSM配置及代码分析

 

CanSMBorCounterL1ToL2: 此阈值定义Bus-Off恢复从第1(短恢复时间)切换到第2(长恢复时间)之前的Bus-Off计数。

 

CanSMBorTimeL1: 这个时间参数以秒为单位定义一级(短恢复时间)Bus-Off恢复时间的持续时间。

 

CanSMBorTimeL2: 这个时间参数以秒为单位定义第2(长恢复时间)Bus-Off恢复时间的持续时间。

 

CanSMBorTimeTxEnsured: 此参数以秒为单位定义Bus-Off事件检查的持续时间。

 

CanSMBorTxConfirmationPolling: 如果CanSM轮询CanIf_GetTxConfirmationState API来决定要恢复的总线关闭状态,而不是使用CanSMBorTimeTxEnsured参数来决定,则应该配置此参数。

 

CanSMEnableBusOffDelay: 这个参数定义了是否应该为这个网络调用<User_GetBusOffDelay>

 

CanSMComMNetworkHandleRef: ComM模块中标识一个Can网络的唯一句柄(handle, ComMChannel)。

 

CanSMTransceiverId: 标识CAN收发器的句柄。

 

2.2.1 CanSMController

CanSMControllerId: 标识CAN控制器的句柄。

AUTOSAR 通信服务-CanSM配置及代码分析


2.2.2 CanSMDemEventParameterRefs

容器中引用DemEventParameter元素,当发生相应的错误时,应该使用API Dem_SetEventStatus调用这些元素

CANSM_E_MODE_REQUEST_TIMEOUT: 参考配置的DEM事件来报告这个CAN网络的总线关闭错误。

AUTOSAR 通信服务-CanSM配置及代码分析


3.ComM模块代码分析

3.1 重要数据结构分析

(1)配置代码

配置项结构体:

CanSM.h中声明配置项数据结构

AUTOSAR 通信服务-CanSM配置及代码分析


AUTOSAR 通信服务-CanSM配置及代码分析

CanSM_PBcfg.c中定义了这些配置项。

 

AUTOSAR 通信服务-CanSM配置及代码分析


(2)模块的实时状态数据结构

每个通道都会有一个实时的状态机,以及一些运行中的实时状态,这些状态一般保存在一个全局数据结构当中。

CanSM_Init.c中的全局数组保存当前每个通道的模式。

 

AUTOSAR 通信服务-CanSM配置及代码分析


CanSM.h中的枚举定义了所有的模式

 

AUTOSAR 通信服务-CanSM配置及代码分析


 

AUTOSAR 通信服务-CanSM配置及代码分析

 

这些全局变量是我们在调试ComM的时候需要观测的重要数据结构,通常在排查问题的时候,我们仅仅需要观测这几个全局变量。

 

3.2 主逻辑代码分析

自顶向下分析一个Can模式请求过程:

ComM_Cfg.c中配置ComM模块通过CanSM_RequestComMode函数请求CanSM模式。

 

AUTOSAR 通信服务-CanSM配置及代码分析


ComM模块怎么调用CanSM_RequestComMode函数,看ComM模块的具体分析

 

AUTOSAR 通信服务-CanSM配置及代码分析


分析CanSM_RequestComMode函数

 

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析


CanSM_MainFunction中会根据CanSM_ReqComM_Mode_en的设置执行相应的操作

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析

 

3.3 Bus-Off回调函数使用分析

自底向上分析一个busoff事件的快慢恢复处理

发生buss off事件后底层CanDrv调用CanIf_BusOffNotification回调函数,CanIf模块调用CanSMCanSM_ControllerBusOff回调函数通知到CanSM模块

AUTOSAR 通信服务-CanSM配置及代码分析


CanSM_ControllerBusOff函数负责通知BSW和COM及DEM模块busoff事件

 

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析


CanSM_MainFunction根据BusOff recovery配置及BusOff全局标志置位后调用CanSM_BusOffTransitions进行busoff恢复

 

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析


CanSM_BusOffTransitions函数执行Can BusOff恢复策略

 

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析

AUTOSAR 通信服务-CanSM配置及代码分析

 

End




欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号

原文始发于微信公众号(汽车电子嵌入式):AUTOSAR 通信服务-CanSM配置及代码分析

版权声明:admin 发表于 2021年11月12日 下午11:30。
转载请注明:AUTOSAR 通信服务-CanSM配置及代码分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...