目 录CONTENT

文章目录

AUTOSAR - CANSM - 学习二 :CANSM规范部分解读

moke
2024-07-26 / 0 评论 / 0 点赞 / 57 阅读 / 0 字

1、概述

        看规范过程中的记录点,这部分主要是与其他模块的交互,以及本身或者其他模块和本模块的交互点在哪里,部分规范翻译。

2、CanSM与其他模块的交互

规范里面的图形如下

 2.1、ECUM

        EcuM模块初始化CanSM模块,与CanSM模块交互,进行CAN总线唤醒验证。下个章节会描述调用了什么函数。

2.2、SchM

        BSW调度模块调用CanSM模块的主函数(此处理解一个含义SCHM,个人理解与OS的调度有些类似),这对CanSM模块的循环处理是必要的。

2.3、ComM

        ComM模块使用CanSM模块的API来请求CAN网络的通信模式,这些网络标识具有唯一的句柄。唯一的句柄其实就是handle

        CanSM模块可以将网络的当前通信模式通知到ComM模块。ComM告诉 CanSM要做什么。

2.4、CanIf

        CanSM模块使用CanIf模块的API来控制CAN控制器的操作模式,也可以使用CDD模块CAN收发器的API。

        CanIf模块通知CanSM模块发生了什么事件,就是回调,其实真正关联的也就两个,如下图

2.5、 Dem

        CanSM模块将特定的生产错误报告到DEM模块,这个地方有个点,就是Busoff问题,问题如下。

        假设将busoff故障上报给DTC,那么我们设定一个条件5次快恢复才上报,此时应该怎么实现呢?

2.6、BswM

        CanSM需要将总线特定的模式更改通知到BswM模块。

        与通知ComM什么区别呢?一个是通信方面,一个是总体所处状态。

2.7、Nm

        CanSM模块将部分网络是否可用通知给CanNm模块,并在部分联网的情况下处理已通知的CanNm超时异常。

2.8、Det

        CanSM模块在错误检查开启的前提下,向Det模块发送开发和运行时的错误。

3、其他说明

描述一个头文件注意点:

        CanSM.h应该包含头文件ComM.h 规范解释一些API需要使用ComM的定义。以此看来头文件在AUTOSAR里面包含是很严谨的。

其他功能说明

        一个ECU可以有不同的通信网络。每个网络都必须用唯一的网络句柄(也就是handle)来标识。ComM模块向网络请求通信模式。通过它的配置,它知道哪个句柄被分配给什么样的网络。对于CAN,它使用CanSM模块。

        CanSM模块负责CAN网络的控制流抽象(其实相对于硬件抽象层就是多了一层状态控制,抽象CanIf的接口):它根据来自ComM模块的模式请求改变配置的CAN网络的通信模式。

        因此CanSM模块使用了Canlf模块的API。Canlf模块负责配置的CAN控制器和CAN收发器的控制流抽象(Canlf模块的数据流抽象与CanSM模块无关)。CAN控制器模式和CAN收发器模式的任何变化都将由Canlf模块通知给CanSM模块。根据CAN网络状态机的通知和状态(CanSM模块应为每个配置的CAN网络实现),CanSM模块通知ComM和BswM。

CanSM模块应该将当前的网络模式存储在内部。

CanSM的模式有

COMM_NO_COMMUNICATION,

COMM_SILENT_COMMUNICATION,
COMM_FULL_COMMUNICATION

         CanSM模块应在每个成功的控制器模式更改或总线条件更改到canif_cs_stop时存储,以确保每个可以控制器的内部更改模式。

博主关闭了所有页面的评论