• 1140查看
  • 0回复

[Autosar] AUTOSAR BswM详述

[复制链接]


该用户从未签到

发表于 21-1-2024 09:48:33 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录
1.什么是模式管理1.1 模式定义1.2 模式管理定义2.BswM在AUTOSAR的角色3.感性认识BswM代码逻辑3.1 模式仲裁 3.2 模式控制3.3 处理逻辑汇总3.4 示例4.小结 1.什么是模式管理

在AUSOSAR文档里, 模式管理(Mode Management)的所有关联模块有:EcuM、WdgM、ComM和BswM。他们分别承担着如下作用:



    EcuM:控制AUTOSAR BSW模块、OS等的启动;

    WdgM:根据控制流状态和Alive状态喂狗;

    ComM:管理网络状态和资源

    BswM:负责模式处理、仲裁等

这就有点奇怪,上述四个模块干着不同的事情,为什么会统一起来叫模式管理Cluster呢?

那么究竟什么叫做模式管理(Mode Management)?我们一步一步来看。
1.1 模式定义

根据Software Component Template描述,Mode表示的是一个全局变量的当前状态。

这么说就很简单啦,我们之前讲的EcuM模块有一个状态机,在代码中有一个全局变量EcuM_ModuleState用于表示当前EcuM的状态,这个可以把它叫做模式。常见模式有:
#define ECUM_STATE_STARTUP        (0x10u)#define ECUM_STATE_STARTUP_ONE    (0x11u)#define ECUM_STATE_STARTUP_TWO    (0x12u)#define ECUM_STATE_WAKEUP         (0x20u)#define ECUM_STATE_RUN            (0x30u)#define ECUM_STATE_GO_SLEEP       (0x49u)
这也就意味着,Mode在不同模块、不同场景下可以有不同作用。

例如做过通信栈的同学可能对ComM各个状态请求比较熟悉,如:
# define COMM_NO_COM_REQUEST_PENDING       (1u)# define COMM_FULL_COM_NETWORK_REQUESTED   (2u)# define COMM_FULL_COM_READY_SLEEP         (3u)# define COMM_SILENT_COM                   (4u)
做过BswM的可能对BswM的Mode很熟悉,如:
#define BSWM_GENERICVALUE_ESH_State_ESH_INIT            0x0000u #define BSWM_GENERICVALUE_ESH_State_ESH_POST_RUN        0x0002u #define BSWM_GENERICVALUE_ESH_State_ESH_PREP_SHUTDOWN   0x0003u #define BSWM_GENERICVALUE_ESH_State_ESH_READ_NVM        0x0008u #define BSWM_GENERICVALUE_ESH_State_ESH_RUN             0x0001u #define BSWM_GENERICVALUE_ESH_State_ESH_SHUTDOWN        0x0005u #define BSWM_GENERICVALUE_ESH_State_ESH_SLEEP           0x0007u #define BSWM_GENERICVALUE_ESH_State_ESH_WAIT_FOR_NVM    0x0004u1.2 模式管理定义

所谓模式管理,那就是管理某些模块的当前状态,并且当前状态的进入会影响到不同的模块的行为。举个例子,当BswM准备下电时,它会进入到PreShutdown,在这种模式下,通常会影响到通信:ECU不外发报文;会影响到NvM:准备下电前存储DTC、里程数据等。

从辩证角度就分为模式请求者、模式管理者和模式使用者,如下图:

AUTOSAR BswM详述w1.jpg

模式请求者通过Sender或者Client向模式管理者发出模式请求,模式管理者进行条件仲裁后进入到请求的模式,同时通过S\R接口通知User,模式变了,准备做该模式下定义的动作吧。

2.BswM在AUTOSAR的角色

那么BswM这个模块在AUTOSAR中扮演了什么角色呢?

我们首先来看下,没有BswM的时候系统交互应该是怎么样的。

当系统进行上电后,EcuM首先运行,进行一系列外设初始化工作后,它想要进行数据初始化,此时就要从NvM中读取数据;如果想要开启诊断的操作循环,此时就要调用DCM的相关接口;如果想要开启通信,就要调用ComM,ComM进而继续调用CanSM,那么上电时的拓扑结构就如下图:

AUTOSAR BswM详述w2.jpg

那如果运行时, Dem根据状态的不同要调用NvM实时存某些数据,DCM想要关闭某些通信总线,那么就会变成如下:

AUTOSAR BswM详述w3.jpg

可以看到,随着模块的增加,代码接口、复杂程序和耦合性逐步上升,那么可不可以有一个模块来统一管理这些模式,当模式出现变化时通知关联模块做相应动作呢?BswM就站了出来,具体如下:

AUTOSAR BswM详述w4.jpg

当EcuM完成启动后,将控制权交由BswM,BswM根据当前自己的状态、仲裁预置的条件和规则来通知不同的模块进行关联动作。

例如当BswM完成初始化,进入到BswM_RUN状态后,可以判断当前是否收到NM报文且ECU板级电压正常,那么就可以通知ComM准备开始发报文了,通知SWC电压正常,你可以正常干活啦。
3.感性认识BswM代码逻辑
BswM主要有两个活干:


    模式仲裁:SWC或者其他模块发起模式请求和通知时,BswM基于预配置的规则来仲裁并为模式切换做准备

    模式控制:根据仲裁结果的真值来执行响应的模式切换动作

上面两句话来源于AUTOSAR文档,当然,我读完了之后也不知道它到底要讲什么。但是不要着急,继续往下看:
3.1 模式仲裁

仲裁来源于规则,而规则落实到代码层面就是 if else,所以模式仲裁就是说当有模式请求来临时,需要BswM去判断规则的True或者False,如下:

AUTOSAR BswM详述w5.jpg

3.2 模式控制

模式控制就是执行上面仲裁后的Action List,仲裁成功执行True AL、失败失败执行False AL,如下:

AUTOSAR BswM详述w6.jpg

那么具体要做什么动作呢?可以在配置工具配,也可以配置成callout自定义实现。
3.3 处理逻辑汇总

BswM的模式处理可以分为收到模式请求后立即处理、延后处理。

我们今天主要聊延后处理,这个处理方式通常是� Mainfunction里遍历完所有的规则,然后根据规则真值执行action list,所以,基本上逻辑处理如下图:

AUTOSAR BswM详述w7.jpg



    SWC发起请求模式A;

    BswM根据模式条件状态组合成逻辑表达式,判断真值;

    根据True或者False执行对应Action List,在AL里调用各模块的接口完成对应动作。
3.4 示例

在打完上述语句后,我发现还是不够具体,仍然有点不知所云,索性就举一个利用BswM模式切换开启通信的示例来梳理一下思路。

假设我现在想在收到目标NM报文、NvM读取完成、EcuM进入到UP状态以及BswM进入到RUN状态后开启通信,那么现在仲裁条件(Mode Condition)就有四个:
EcuM_State = EcuM_UP;BswM_State = BswM_RUN;NvM_State = NvM_READ_ALL;WakeUpPendingEvent = 0x01u;
那么我们来画图:

假设现在EcuM来到了STARTUP_TWO阶段、已经得到了唤醒事件,但NvM没有读完,BswM状态为Init状态。那么此时由于LE不满足,因此只能执行False的AL,从而请求到ComM为NoCom。

AUTOSAR BswM详述w8.jpg

假设此时所有条件均满足, 则可以开启通讯,如下图绿色框:

AUTOSAR BswM详述w9.jpg

大家如果有代码,可以去对照着看一下这个逻辑。当然从这个图,基本上BswM的核心代码框架也就已经出来了。

4.小结

通过一系列复杂的语言描述,我发现最后还是图好使,基本上BswM就是干示例里面的活,只是我们在配置的时候要考虑的东西很多,例如DCM相关条件、BswM状态、NvM状态、BusSM状态、唤醒源等等,总的来说,这块很灵活,但是难度不大,做的时候画图基本上可以完成。


该用户从未签到

发表于 15-3-2025 16:12:00 | 显示全部楼层
AUTOSAR中的模式管理(Mode Management)是管理车辆不同工作模式的关键部分,确保系统在不同场景下运行得当。

BswM(Basic Software Module for Mode Management)在AUTOSAR架构中扮演着模式管理的核心角色。它主要负责处理模式仲裁和模式控制,依据特定条件和规则管理车辆不同工作模式之间的转换。其代码逻辑紧密关联了车辆的各种功能需求和运行状态。例如,模式仲裁决定当前应激活的模式,而模式控制则负责在不同模式间进行切换。BswM还包含了处理逻辑汇总的功能,即对各类工作模式下的处理逻辑进行统一管理。

简要来说,BswM负责管理和协调AUTOSAR系统的工作模式,确保在各种情况下系统都能高效、安全地运行。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 16:12:00 | 显示全部楼层
AUTOSAR中的模式管理(Mode Management)是管理和控制汽车软件系统的关键组成部分。它涉及多个模块协同工作,确保系统在不同模式下正常运行。BswM(基础软件模块)在AUTOSAR架构中扮演着模式处理的核心角色。其主要职责包括:

1. 模式定义与仲裁:确定并管理不同的运行模式,如休眠、唤醒等。
2. 模式控制:根据系统需求和当前状态,控制不同模式间的切换。
3. 处理逻辑汇总:整合其他模块的信息,如EcuM的控制指令、WdgM的喂狗状态以及ComM的网络状态,以决定模式的转换和处理逻辑。

在AUTOSAR系统中,BswM的代码逻辑是处理模式转换的关键,涉及到一系列复杂的操作和判断。通过理解BswM的工作原理,可以更好地掌握AUTOSAR系统的整体运作模式。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 16:12:00 | 显示全部楼层
AUTOSAR中的模式管理(Mode Management)是管理车辆在不同工作模式之间切换的重要部分。下面为您详细解释AUTOSAR中的模式管理以及BswM模块的角色和功能。

一、模式管理概述:在AUTOSAR架构中,模式管理用于控制车辆的不同工作状态,确保各模块按照预定的规则运行。它定义了车辆在特定条件下应该进入何种工作模式。这种模式转换是通过模式定义与模式管理定义的。而模式处理部分是由BswM(Basic Software Wrapper Module)模块负责的。

二、BswM在AUTOSAR中的角色:在AUTOSAR架构中,BswM模块负责处理模式管理相关的核心逻辑,包括模式仲裁、模式控制等。它确保在不同条件下,车辆能够正确地切换工作模式,并根据不同模式执行相应的操作。此外,它还负责处理与其他模块(如EcuM、WdgM和ComM)之间的交互和协同工作。

三、关于BswM代码逻辑的感性认识和具体实现:简单来说,模式仲裁决定了哪些工作模式可用以及哪个工作模式应被激活;模式控制负责在不同工作模式之间进行切换并执行相应操作;处理逻辑汇总涵盖了各种情况下的处理策略;通过示例可以更直观地理解这些逻辑是如何工作的。

四、小结:简而言之,BswM模块是AUTOSAR中模式管理的核心组成部分,它确保车辆在多种工作模式间平稳、高效地切换,从而实现各种功能和性能要求。该模块的工作紧密关联了AUTOSAR架构中的其他模块,共同为车辆的智能化和安全性做出贡献。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 10:45 , Processed in 0.336825 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.