AutoSAR实战:如何在BSW配置看门狗Wdg Stack的监控功能
1.总览
在本应用说明中,你将了解RTA-BSW看门狗堆栈支持哪些类型的监控模式,以及如何配置每种模式。
下面让我来介绍一下Wdg Stack的基本功能和配置方法。AUTOSAR(AUTomotive Open System ARchitecture)框架中的看门狗模块(WDG,Watchdog)是一个关键的基础软件模块,主要用于监控系统运行状态,防止系统在出现异常(如死循环或挂起状态)时无法及时恢复。通过看门狗机制,可以提高系统的可靠性和健壮性,避免系统因单点故障而导致的整体失效。
看门狗模块的基本功能
看门狗模块的主要功能包括监控系统任务的执行顺序和时序,并确保系统在发生异常时能够及时复位。WdgM_MainFunction函数会周期性地“喂狗”(通过WdgIf和WdgDrive给WdgDevice喂狗),同时会检查程序执行顺序或时序(如果配置了这些功能)。当检测到程序执行顺序或时序错误时,该函数会停止喂狗,并在必要时复位单片机。
看门狗模块的分类
在AUTOSAR中,看门狗模块可以分为**片内看门狗(On-chip Watchdog)和片外看门狗(Off-chip Watchdog)**两种类型。
片内看门狗
片内看门狗是集成在微控制器内部的一种功能模块。其工作原理基于一个定时器,该定时器会在特定的时间间隔内不断计数。如果在规定的时间内微控制器没有及时“喂狗”(即重置定时器),片内看门狗就会触发一个复位信号,使系统重新初始化。
其特点包括:
紧密集成:与微控制器紧密结合,不需要额外的外部硬件。
低延迟:由于集成在芯片内部,触发复位的响应时间较短。
相对简单的配置:通常可以通过微控制器的寄存器进行配置。
连接方式上,片内看门狗直接与微控制器的内部电路相连。
片外看门狗
片外看门狗则是位于微控制器外部的独立硬件模块。它的工作原理与片内看门狗类似,但有一些不同之处。片外看门狗通常由一个独立的定时器和比较器组成。微控制器需要定期向片外看门狗发送信号来防止其触发复位。
其特点包括:
更高的可靠性:独立于微控制器,不受其内部故障的影响。
更灵活的配置:可以根据具体需求选择不同的片外看门狗模块。
可监控多个微控制器:如果系统中有多个微控制器,可以通过一个片外看门狗进行统一监控。
连接方式上,片外看门狗通过特定的接口(如SPI、I2C等)与微控制器进行通信。
看门狗模块的工作原理
看门狗模块的核心原理是通过定时器机制来检测系统的异常状态。在正常运行时,系统需要定期“喂狗”,即重置定时器。如果系统因死循环、挂起或其他异常情况而无法及时喂狗,定时器将超时,触发复位信号,强制系统重启以恢复正常运行。
在AUTOSAR架构中,看门狗模块还支持对程序执行顺序和时序的监控。例如,Supervision Entity(SE:监督实体)由Checkpoint、Alive Supervision、Deadline Supervision和Logical Supervision组成。SE的状态体现为Local Status,其取决于其下的各种Supervision状态。Mode切换将导致SE的状态改变。
看门狗模块的配置与实现
看门狗模块的配置通常包括以下几个方面:
定时周期:定义系统必须在多长时间内喂狗一次,以防止超时。
复位行为:决定在看门狗超时后系统如何响应,例如是否立即复位或执行其他恢复操作。
监控级别:可以选择是否启用对程序执行顺序和时序的监控功能。
接口配置:对于片外看门狗,需要配置与微控制器的通信接口(如SPI、I2C等)。
在AUTOSAR中,这些配置通常通过工具链(如DaVinci或SystemWeaver)进行设置,并生成相应的代码和配置文件。
应用场景
看门狗模块广泛应用于汽车电子系统中,尤其是在对系统可靠性要求较高的场景中。例如:
动力控制系统:如发动机控制单元(ECU)、变速器控制模块(TCM)等关键系统中,通常使用片外看门狗以确保系统的高可靠性。
车身控制模块:如车门控制、灯光控制等对成本和空间要求较高的系统中,可能采用片内看门狗。
多重监控机制:在一些特殊情况下,还可以同时使用片内和片外看门狗,形成双重监控机制,进一步提高系统的可靠性。
缩写
| Wdg/WDG | Watchdog |
|---|---|
| WdgIf | Watchdog Interface |
| WdgM | Watchdog Manager |
| SE | Supervised Entity |
| BSW | AUTOSAR Basic Software, Hardware independent service layer |
| RTE | AUTOSAR Run-Time Environment |
| OS | AUTOSAR Operating System |
| Confgen | BSW Configuration Generation |
| API | Application Programming Interface |
| RE | Runnable Entity |
| PPort | Provider Port |
| RPort | Requiring Port |
| CPT | Component |
| OIE | Operation Invoked Event |
| SW / SWC | Software / Software Component |
工具链
假定使用的是 RTA-CAR 9.2.1 toolchain:
| Tool | 版本 |
|---|---|
| ISOLAR-AB | v 9.2.1 |
| RTA-RTE | v 7.5.3 |
| RTA-BSW | v 6.1.3 |
| RTA-OS | v 6.2.0 |
2. 看门狗监控机制说明
看门狗所监控的每个实体都称为被监控实体(SE)。单个软件组件或基础软件(BSW)服务组件可能有零个、一个或多个此类被监控实体。通过这种方式,被监控实体可以定义如何对单个软件、功能组或单个功能进行监控;只要在该软件内部调用了一组检查点即可。这组检查点被称为一个图,其中至少有一个检查点应为初始检查点,并且在被监控实体的配置中应说明每个检查点之间的正确转换方式 。
定义受监控实体
负责设计电子控制单元(ECU)的工程师在确定受监控实体方面有充分的自主权,因此应由该工程师合理选择单个受监控实体的涵盖范围。通常,对于工程师认为应由看门狗(Wdg)监控的每个操作系统应用程序、软件组件(SWC)、基础软件模块(BSW)、配置数据文档(CDD)或需求工程(RE),都有一个受监控实体(SE) 。
当被监控实体运行时,如果它按照看门狗管理器(WdgM)配置中描述的方式对检查点进行了正确的调用序列,那么软件将正常继续运行。然而,如果监控启动(即针对特定被监控实体调用了初始检查点),但随后由于某种原因,该图中至少有一个检查点未 “正确到达”,那么看门狗(Wdg)的状态将相应改变,并报告监控失败。
定义到达每个检查点 “正确” 方式的方法由所使用的监控类型决定。任何被监控实体都可以使用同一组检查点,通过一种或多种监控类型进行监测(关于这如何实现的描述将在后面详



















暂无评论内容