一文搞定!高效配置RTA-BSW WatchDog Stack

目录

往期推荐

目标

前提条件

WatchDog Stack概述

示例项目概述

配置工作流程概述

isolar工具主要配置步骤

Step1. WdgM模块配置

Step 2. Wdg 模块配置

Step 3 :WdgIf 模块配置

Step4:OS 配置

Step5:EcuM 配置

Step6:BswM 配置

Step7. 系统配置 SWC 更新

往期推荐

  1. ETAS工具链自动化实战指南<一>
  2. ETAS工具链自动化实战指南<二>
  3. ETAS工具链自动化实战指南<三>
  4. AUTOSAR工程师必读:Artop的核心功能
  5. Vector工具链自动化实战指南<一>
  6. isolar高手秘籍| ECU Configuration三分钟速成!
  7. 掌握核心步骤:RTA-BSW以太网配置全解析
  8. 一文详解TC399 CAN MCAL 配置
  9. LSL常见应用场景及示例<一>
  10. LSL常见应用场景及示例<二>
  11. LSL常见应用场景及示例<三>
  12. 为什么Autosar钟情arxml而非json?大揭秘!

在autosar项目中配置WatchDog(看门狗)Stack是确保系统稳定性和可靠性的关键步骤。以下为大家总结基于ISOLAR-AB工具的相关详细的核心配置流程。

目标

掌握如何在一个autosar项目中配置WatchDog Stack。

前提条件

  • 熟悉如何使用 ISOLAR-AB 创建和配置 AUTOSAR 项目,可参考之前的isolar基本配置流程(01,02,03)文章,以更好地理解 ISOLAR-AB 以及用于创建和配置 AUTOSAR 项目的工具。

  • 已创建一个autosar项目,可参考(01,02,03

  • 安装 RTA-CAR 工具链

WatchDog Stack概述

在AUTOSAR 4.2.2中,WatchDog Stack由3个模块组成:

  • WdgM: WatchDog Manager - 它是BSW的一个服务,能够监督程序执行,抽象出硬件看门狗实体的触发。

  • WdgIf: WatchDog Interface - 它是车载设备抽象层的一部分,允许WdgM处理多个看门狗设备。

  • Wdg: WatchDog Driver - 它是MCAL的一部分,允许设备的初始化、模式设置和触发条件设置。

首先我们重点介绍下WatchDog Stac堆栈中最复杂的模块WdgM的最重要功能。Watchdog Manager 负责监督可配置数量的“Supervised Entities”的执行。当它检测到程序执行中违反了配置的时间或逻辑约束时,会采取一系列可配置的动作来恢复故障。Watchdog Manager 提供了三种机制:

  • Alive supervision - 用于周期性软件的定时监督。

  • Deadline Supervision - 用于非定期软件。

  • Logical Supervision- 用于监督执行顺序的正确性。

典型的Supervised Entity是一个SWC或一个runnable ,每个都有一个或多个CheckPoints ,最终通过Transitions 连接在一起,形成一个Graph。以下是关于监督机制的详细介绍:

  • Alive supervision :检查受监督实体是否运行得太频繁或太稀少,设置一些参数作为参考周期,这是一个时间间隔,在该时间间隔内检查实体,检查点在参考周期内的预期出现次数,上限和下限容差。

  • Deadline Supervision :检查两个定义的检查点之间的时间,这里的主要参数是:最小时间和最大时间。

  • Logical Supervision:检查程序的执行流程是否有效,定义一些检查点和它们之间的允许转换。

WdgM可以处理多个 Supervised Entities和多个Wdg设备;因此,为每个 Supervised Entities定义一个本地状态,表示 Entities的状态为:监督正常、监督失败或监督过期。下图描述了本地状态的状态机:

图片

所有配置的Supervised Entities的组合,形成一个全局状态,其状态机类似于前面的状态机:

图片

这些状态的计算在 WdgM_MainFunction 的上下文中定期进行;为了设置本地状态值,WdgM 会参考每个Supervised Entities的三种监督结果。如下图:

图片

在配置了 Alive Supervision 的特定情况下,查看下图可能会帮助大家更好地理解算法是如何计算状态的:

图片

示例项目概述

示例项目将实现一个具有三个checkpoints的 Supervised Entity :

  1. 一个用于Alive supervision

对于alive supervision,将创建一个以 10 ms周期运行的runnable ,并设置checkpoint ;WdgM 将检查在 1 s的时间间隔内检查否达到了100次checkpoint ,并允许上下浮动5次的容差。

  1. 两个用于deadline supervision

对于deadline supervision,将使用相同的runnable 元,并在特定情况下(接收到定义的 CAN 信号)触发deadline supervision。

配置工作流程概述

Step1. WdgM模块配置

Step2. Wdg模块配置

Step3. WdgIf模块配置

Step4. OS配置

Step5. EcuM更新

Step6. BswM更新

Step7. SWC更新

Step8. 系统更新

isolar工具主要配置步骤

Step1. WdgM模块配置

首先,从BSW服务中创建一个新的WdgM模块:

图片

配置WdgMGeneral容器设置:

  • WdgMDefensiveBehaviour: 如果使用DET且配置了多个调用者标识符以检查其有效性,则将此项设置为true

  • WdgMDemStoppedSupervisionReport: 设置为true,以在全局状态为STOPPED时向DEM启用通知。

  • WdgMImmediateReset: 如果 alive supervision失败,(全局状态为STOPPED)应立即重置ECU,则将此项设置为true

  • WdgMOffModeEnabled: 设置为true,以能够关闭看门狗。

还有一些特定于工具链的参数需要设置,最重要的有:

  • WdgMRbDeadlineTimeoutDetect: 设置为 true 时,它允许 WdgM_MainFunction 在deadline supervision 中检测超时,即使结束checkpoint从未达到。。

  • WdgMRbInterruptLockDisable: 在WdgM_MainFunction中生成中断锁。

  • WdgMRbRTEDisabled: 用于控制 Watchdog Manager (WdgM) 是否生成模式切换指示到 RTE(运行时环境)。如果将其设置为 true,则 WdgM 将不会向 RTE 发送模式切换指示。

以下是此项目中使用的配置:

图片

在同一容器中,定义受监督实体(Supervised Entities):

在此示例中,仅定义一个 WdgMSupervisedEntity,并在其中定义三个新的检查点(Checkpoints)。

图片

图片

并设置以下引用:

  • EcuC partition,仅在使用了partition的情况下(WdgMEcucPartitionRef

  • counte的起始checkpoint(WdgMInternalCheckpointInitialRef

  • OS counter

  • counte的结束checkpoint(WdgMInternalCheckpointFinalRef

图片

最后创建一个 WdgMWatchDog,但目前先不设置任何引用(后面的步骤进行)。

图片

现在切换到 WdgMConfigSet 容器,创建一个新的 WdgMMode,并设置 WdgMExpiredSupervisionCycleTol 和 WdgMSupervisionCycle,其中 WdgMSupervisionCycle 是 WdgM_MainFunction 执行的周期。

图片

然后创建一个新的 WdgMAliveSupervision;设置需要检查的 Checkpoint 的引用以及 Checkpoint 的预期出现次数值(WdgMExpectedAliveIndications)、对此值的容差(WdgMMaxMargin 和 WdgMMinMargin),以及作为检查时间间隔的监督周期数(WdgMSupervisionReferenceCycle)。

图片

以类似的方式创建一个 WdgMDeadlineSupervision,设置最小和最大时间值(WdgMDeadlineMax 和 WdgMDeadlineMin),以及对起始和结束 Checkpoints 的引用。

图片

每个 WdgMMode 需要至少引用一个 Supervised Entity;这个引用是 WdgMLocalStatusParams 的一个子容器的一部分;每个受监视实体都必须有一个子容器,除了对 Supervised Entity的引用(WdgMlocalStatusSupervisedEntityRef)之外还需要设置在局部状态变为 EXPIRED 之前的失败活跃监督周期数(WdgMfailedAliveSupervisionRefCycleTol)。

图片

最后,在 WdgMMode 内创建一个新的 WdgMTrigger;这个容器用于设置调用 SetTriggerCondition 函数以喂给硬件看门狗设备的时间间隔。设置 WdgMTriggerConditionValue(以ms为单位),将 WdgMWatchDogMode 设置为所需的值(在这种情况下,由于将使用虚拟目标,选择 SLOW MODE 或 FAST MODE 并不会有任何区别);并设置对 WdgMWatchdog (在 WdgMGeneral 中创建的) 的引用。

图片

Step 2. Wdg 模块配置

创建驱动程序 Wdg;与 WdgM 的创建方法相同。

图片

此模块是 MCAL 的一部分,以下示例项目中的设置仅适用于虚拟 target。

图片

图片

图片

Step 3 :WdgIf 模块配置

最后,创建设备抽象层模块:WdgIf。按照之前为 WdgM 的方式创建此模块。

图片

配置WdgIfGeneral

图片

然后创建 WdgIfDevices;创建一个 WdgIfDevice;设置对之前模块中创建的设备(Wdg)的引用。

图片

注意:现在 WdgIfDevice 已经创建完成,返回到 WdgM 并在 WdgMGeneral//WdgMWatchDog 中设置对该设备的引用。

图片

Step4:OS 配置

由于deadline supervision需要一个 OS 计数器引用,因此,打开 OS 模块并创建一个新的计数器:

图片

图片

然后返回到 WdgMSupervisedEntity 并配置对OS 计数器的引用。

图片

Step5:EcuM 配置

WdgM、Wdg 和 Mcu 模块需要在 ECU 启动阶段初始化,因此在 EcuMDriverInitListOne 中配置两个新项,如下所示:

图片

图片

图片

Step6:BswM 配置

为了进行 WdgM 的deinitialization,创建一个新的action:

图片

图片

将此action添加到 BswM action List “BswM_AL_Shutdown”中。

图片

图片

现在就可以生成 RTA-BSW啦!记得勾选添加新的模块 WdgM 和 WdgIf。

图片

在系统配置之前,最后还需要一步-------就是编辑集成代码

特别是查看 WdgM_Bsw_User.c 和 WdgM_Bsw_User.h 文件;

需要编辑这些文件,使用生成的模板为每个checkpoint 创建函数;在示例中,只创建了用于deadline supervision的checkpoint 的函数,而alive supervision将使用 RTE:

  • WdgM_Bsw_User.c

图片

  • WdgM_Bsw_User.h :

图片

Step7. 系统配置 SWC 更新

BSW 源代码的生成中还创建了 WdgM service component 的描述文件,该文件提供了一些 port interface ,下面将在我示例中的 SWC 中使用这些接口。

首先,可以编辑现有的 SWC,也可以创建一个新的 SWC,并为其创建一个由iming event触发的新 runnable:

图片

图片

现在添加以下端口:

  • 一个用于设置达到的 checkpoint 以进行 alive supervision;WdgM 的 swmd 文件提供了 Client Server port Interface:WdgM_LocalSupervision。

  • 添加一个 RPort,使用Mode switch port interface WdgM_LocalMode 读取 Supervised Entity 的本地状态。

  • 添加一个 RPort,使用Mode switch port interface WdgM_GlobalMode 读取全局状态。

图片

然后,必须创建相关的 Server Call Point:

图片

图片

最后,将类型映射(Type Maps)添加到 SWC 的【Main】配置中,引用 Wdg 堆栈所使用的新模式:

图片

第 8 步. 系统更新

新组件已添加到系统中,这些组件必须添加到系统的composition中,并映射到适当的 ECU。

图片

映射完成后,打开系统并使用 RTE 编辑器,将新的runnable映射到 OS Task中:

图片

现在创建 WdgM 端口与 SWC 中添加的端口之间的连接:

图片

最后,更新 ECU  extract 文件并生成 RTE 和OS即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值