【AUTOSAR】 项目和代码详解(九)----AUTOSAR CanSM 配置

CanSM

概要

AUTOSAR BSW为每个通信总线指定一个特定于总线类型的状态管理器。该模块实现各总线的控制流程。如下图所示,CAN状态管理器(CanSM)是位于通信服务层,它与通信硬件抽象层和系统服务层交互。

 

ECU可以有不同的通信网络。每个网络都必须用一个惟一的网络句柄来标识。通信模块从网络请求通信模式。它通过配置确定句柄被分配给对应的网络。对于CAN,则使用CanSM模块。CanSM模块负责CAN网络的控制流抽象:它根据来自ComM模块的模式请求改变已配置CAN网络的通信模式。因此,CanSM模块使用了CanIf模块的API。CanIf模块负责已配置的CAN控制器和CAN收发器的控制流抽象(CanIf模块的数据流抽象与CanSM模块无关)。CAN控制器模式和CAN收发模式的任何更改都将由CanIf模块通知CanSM模块。根据这个通知和CAN网络状态机的状态(CanSM模块将为每个配置的CAN网络实现该状态机),CanSM模块将通知ComM和BswM。

模块配置

 

CanSMGeneral:

CanSMDevErrorDetect

打开或关闭开发错误检测和通知。

· true: 开启

· false: 关闭

CanSMGetBusOffDelayFunction

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

CanSMGetBusOffDelayHeader

此参数配置包含<User_GetBusOffDelay> callout函数原型的头文件。

CanSMMainFunctionTimePeriod

函数CanSM_MainFunction的循环时间(以秒为单位)

CanSMPncSupport

启用或禁用对部分网络的支持。

CanSMSetBaudrateApi

Can_SetBaudrate API的支持是可选的。如果该参数设置为true,则将支持Can_SetBaudrate API。否则不支持该API。

CanSMTxOfflineActiveSupport

确定CanSM是否支持ECU无源特性。

CanSMVersionInfoApi

激活/停用版本信息API (CanSM_GetVersionInfo)。

CanSMConfiguration

CanSMModeRequestRepetitionMax

指定在没有相应的模式指示的情况下,从CanIf模块请求重复的最大次数,直到CanSM模块向Det报告开发错误并尝试返回无通信为止。

CanSMModeRequestRepetitionTime

指定在哪个时间段内,通过使用CanIf模块的API, CanSM模块应该重复模式更改请求。

CanSMManagerNetwork

CanSMBorCounterL1ToL2

这个阈值定义了Busoff发生数量,直到总线恢复从第1级(短恢复时间)切换到第2级(长恢复时间)。

CanSMBorTimeL1

此时间参数以秒为单位定义第1级总线恢复时间的持续时间(短恢复时间)。

CanSMBorTimeL2

此时间参数以秒为单位定义第2级(长恢复时间)的总线恢复时间持续时间。

CanSMBorTimeTxEnsured

此参数以秒为单位定义总线事件检查的持续时间。此检查将评估在恢复重新启用传输路径后恢复是否成功。如果在这段时间内发生了新的总线,CanSM将此总线评估为没有成功恢复的连续总线。由于只能够检测到母线,所以在传输PDUs时,时间必须足够长,以确保再次传输PDUs(例如,COM模块/ comtxmodetimefactor的最快循环传输PDU的时间段)。

CanSMBorTxConfirmationPolling

如果CanSM轮询CanIf_GetTxConfirmationState API,以决定恢复总线状态,而不是使用cansmbortimetxparameter进行此决策,则应配置此参数。

CanSMEnableBusOffDelay

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

CanSMComMNetworkHandleRef

唯一的句柄来识别某个特定的CAN网络。对为ComM配置的网络句柄之一的引用。

CanSMTransceiverId

分配给已配置网络句柄的CAN收发器的ID。引用由CanIf模块管理的一个收发器。

CanSMController

CanSMControllerId

唯一的标识用以确定一个特定的可以控制器。引用由CanIf模块管理的一个CAN控制器。

CanSMDemEventParameterRefs

CANSM_E_BUS_OFF

参考已配置的DEM事件来报告此CAN网络的总线关闭错误。

CANSM_E_MODE_REQUEST_TIMEOUT

参考已配置的DEM事件来报告此CAN网络的总线关闭错误。

自动配置生成

ISOLAR软件可以通过导入DBC、ODX等文件,创建系统配置,进而通过系统配置生成部分底层软件配置。

以CAN模块为例,通过ConfGen工具,可以自动生成CAN节点、CANObject配置,其他配置一般以默认值填充。

 

Step1

DBC文件检查

删除属性: BA_ "GenSigStartValue" SG_ xxx SigName;

补充节点信息: BU_: VCU ABS …

补充每帧报文的接收发送节点: BO_ CanID MsGName: DLC ABS

                               SG_ SigName : 0|2@1+ (1,0) [0|3] "" VCU

Step2

导入DBC文件

 

Step3

生成配置

 

Step4

参考<模块配置>对生成的CAN模块配置进行修改、适配。

参考文档

[1] AUTOSAR_SRS_CANStateManager.pdf

[2] RTA-BSWReferenceGuide.pdf

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autosar汽车行业广泛使用的一种软件架构标准,旨在提高汽车电子系统的可靠性和可维护性。它通过提供标准化的接口和通信协议,使得不同厂家和供应商开发的软件和硬件组件可以相容且互操作。Autosar标准包含了许多不同的模块和组件,它们分别负责不同的功能,如通信、诊断、操作系统等。要读懂Autosar代码,首先需要了解Autosar标准的整体架构和各个模块之间的关系。 在阅读Autosar代码时,需要熟悉标准中定义的各种接口和数据结构,了解它们的作用和用法。此外,还需要理解Autosar中使用的不同软件架构模式和设计模式,例如发布订阅模式、状态机模式等。很多Autosar代码都会按照这些模式进行设计和实现,因此读懂这些模式对于理解代码至关重要。 此外,由于Autosar标准是由多个汽车厂商和供应商共同制定和维护的,因此在阅读Autosar代码时还需要关注不同厂商或供应商对标准的实现方式和扩展。虽然Autosar标准化了接口和通信协议,但在实际应用中仍然存在一些厂商特定的实现和扩展,这些内容也需要在阅读代码时予以理解。 总之,要读懂Autosar代码,需要对Autosar标准有深入的了解,包括整体架构、各种接口和数据结构、软件架构模式和设计模式,以及不同厂商或供应商的实现方式和扩展。同时,也需要对汽车行业的背景和需求有一定的了解,这样才能更好地理解Autosar代码的含义和用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值