# 看门狗驱动程序规范(Specification of Watchdog Driver)
| 字段 | 内容 |
|---|---|
| **文档标题** | 看门狗驱动程序规范(Specification of Watchdog Driver) |
| **文档所有者** | AUTOSAR |
| **文档责任方** | AUTOSAR |
| **文档标识号** | 039 |
| **文档状态** | Final(正式发布) |
| **所属 AUTOSAR 标准** | Classic Platform(经典平台) |
| **所属标准版本** | 4.4.0 |
---
## 文档变更历史(Document Change History)
| 日期 | 版本 | 变更人 | 变更描述 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 新增 `ECUC_Wdg_00353`:`WdgEcucPartitionRef`;细微修正 / 澄清 / 编辑性变更;详细信息请参考 ChangeDocumentation |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 细微修正 / 澄清 / 编辑性变更;详细信息请参考 ChangeDocumentation |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 删除第 10.2.1 章"Variants"(包含需求 `SWS_Wdg_00157`、`SWS_Wdg_00158`、`SWS_Wdg_00159`);删除第 7.8 章"Debugging";在表 `ECUC_Wdg_00073` 中添加"Supported Config Variants"行;细微修正 / 澄清 / 编辑性变更 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 调试支持标记为过时(obsolete);细微修正 / 澄清 / 编辑性变更 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 适配扩展生产错误的规范;新增 `WDG_E_INIT_FAILED`(错误代码由 `SWS_BSWGeneral` 引用) |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 微小编辑性变更 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 将 `Dem_ReportErrorStatus` 从强制接口移至可选接口;编辑性变更;删除变更文档章节 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 新增生产错误章节;将 `MemMap.h` 重命名为 `Wdg_MemMap.h`;移除 GPT 使用;根据 SWS General Rollout 新增子章节;根据新的 `SWS_BSWGeneral` 进行修订;为调试目的修改 `SWS_Wdg_00018`、`SWS_Wdg_00019`、`SWS_Wdg_00052` |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 新增 `Wdg_GetVersionInfo` 的 DET 错误 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 移除需求 `WDG141/WDG143` |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 修改窗口看门狗概念;为 R4.0 进行进一步维护;法律声明修订 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明修订 |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 第 5.1.2 节文件包含结构修改;第 8.6.2 节 `Dem_ReportErrorStatus` 添加为可选接口;改写需求 `WDG019`、`SWS_Wdg_00031`、`SWS_Wdg_00034`;第 9 章序列图修改;扩展文档元信息;小幅布局调整 |
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 第 5.1.2 节文件包含结构修改以符合 SPAL 通用包含结构;在 WdgDefaultMode 章节中添加 PC 变体并修改 `WDG003` 以允许传递 NULL 指针;为 `WDG037` 修改需求以允许配置激活码(如果硬件支持);为 `SWS_Wdg_00078` 修改需求以增加对 SPI/DIO 访问外部看门狗的引用;法律声明修订;新增发布说明;修改"用户建议";新增"修订信息" |
| 2006-05-16 | 2.0 | AUTOSAR Administration | 文档结构适配通用 Release 2.0 SWS 模板 |
| 2005-05-31 | 1.0 | AUTOSAR Administration | 初始发布 |
---
## 目录(Table of Contents)
1. [引言与功能概述](#1-引言与功能概述)
2. [缩略语与缩写](#2-缩略语与缩写)
3. [相关文档](#3-相关文档)
- 3.1 [输入文档](#31-输入文档)
- 3.2 [相关标准与规范](#32-相关标准与规范)
- 3.3 [相关规范](#33-相关规范)
4. [约束与假设](#4-约束与假设)
- 4.1 [限制](#41-限制)
- 4.2 [对汽车领域的适用性](#42-对汽车领域的适用性)
5. [与其他模块的依赖关系](#5-与其他模块的依赖关系)
- 5.1 [文件结构](#51-文件结构)
- 5.2 [系统时钟](#52-系统时钟)
- 5.3 [板载通信处理器](#53-板载通信处理器)
6. [需求可追溯性](#6-需求可追溯性)
7. [功能规范](#7-功能规范)
- 7.1 [通用设计规则](#71-通用设计规则)
- 7.2 [错误分类](#72-错误分类)
- 7.3 [错误检测](#73-错误检测)
- 7.4 [错误通知](#74-错误通知)
- 7.5 [外部看门狗驱动](#75-外部看门狗驱动)
- 7.6 [内部看门狗驱动](#76-内部看门狗驱动)
- 7.7 [支持窗口看门狗的触发概念](#77-支持窗口看门狗的触发概念)
8. [API 规范](#8-api-规范)
9. [序列图](#9-序列图)
10. [配置规范](#10-配置规范)
11. [不适用的需求](#11-不适用的需求)
---
## 1 引言与功能概述
本文档规定了 AUTOSAR 基础软件模块看门狗驱动(Wdg)的功能、API 和配置。
本模块提供以下服务:
- 初始化(Initialization)
- 改变操作模式(Changing the operation mode)
- 设置触发条件(Setting the trigger condition,即超时时间)
内部看门狗驱动和外部看门狗驱动的功能需求和功能范围相同。因此,两者的 API 在语义上是相同的。
- **内部看门狗驱动**属于微控制器抽象层(Microcontroller Abstraction Layer, MCAL)。
- **外部看门狗驱动**属于板载设备抽象层(Onboard Device Abstraction Layer)。
因此,外部看门狗驱动需要借助 MCAL 中的其他驱动才能访问微控制器硬件。
---
## 2 缩略语与缩写
具有局部作用域的缩略语和缩写不包含在 AUTOSAR 词汇表中。这些缩略语必须出现在本地词汇表中。
### 缩写 / 首字母缩略词
| 缩写 | 描述 |
|---|---|
| DIP | Digital Input/Output(数字输入/输出) |
| DET | Default Error Tracer(默认错误跟踪器) |
| DEM | Diagnostic Event Manager(诊断事件管理器)—— 处理诊断相关事件的模块 |
| SPI | Serial Peripheral Interface(串行外设接口) |
| WDG | Watchdog(看门狗,本模块特定前缀) |
### 理解概念所需的定义
| 定义 | 描述 |
|---|---|
| **Off-Mode(关闭模式)** | 看门狗硬件被禁用 / 关闭。这对于关闭整个 ECU 并避免仍在运行的外部看门狗产生周期性复位可能是必要的。对于安全关键系统,可能不允许此模式。在这种情况下,必须配置 Wdg 模块以阻止切换到此模式。 |
| **Slow-Mode(慢速模式)** | 可使用较长的超时周期触发看门狗硬件。例如,该模式可在系统启动 / 初始化阶段使用。例如,看门狗硬件被配置为 toggle 模式(对触发时间点无约束),超时周期为 20 毫秒。 |
| **Fast-Mode(快速模式)** | 必须使用较短的超时周期触发看门狗硬件。例如,该模式可在 ECU 正常操作期间使用。例如,看门狗硬件被配置为 window 模式(必须在超时周期内的特定最小 / 最大边界内触发看门狗),超时周期为 5 毫秒。 |
---
## 3 相关文档
### 3.1 输入文档
- **[1]** Layered Software Architecture
`AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf`
- **[2]** General Requirements on Basic Software Modules
`AUTOSAR_SRS_BSWGeneral.pdf`
- **[3]** General Requirements on SPAL
`AUTOSAR_SRS_SPALGeneral.pdf`
- **[4]** Requirements on Watchdog Driver
`AUTOSAR_SRS_WatchdogDriver.pdf`
- **[5]** Specification of Watchdog Interface
`AUTOSAR_SWS_WatchdogInterface.pdf`
- **[6]** Basic Software Module Description Template
`AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf`
- **[7]** Specification of RTE Software Specification of Watchdog Driver
`AUTOSAR_SWS_RTE.pdf`
- **[8]** List of Basic Software Modules
`AUTOSAR_TR_BSWModuleList`
- **[9]** General Specification of Basic Software Modules
`AUTOSAR_SWS_BSWGeneral.pdf`
### 3.2 相关标准与规范
无。
### 3.3 相关规范
AUTOSAR 提供了关于基础软件模块的通用规范 [9](SWS BSW General),该规范对看门狗驱动同样有效。
因此,SWS BSW General 应被视为看门狗驱动的附加且必需的规范。
---
## 4 约束与假设
### 4.1 限制
无限制。
### 4.2 对汽车领域的适用性
无限制。
---
## 5 与其他模块的依赖关系
内部(片上)看门狗的 Wdg 模块直接访问微控制器硬件,位于微控制器抽象层。
外部看门狗的 Wdg 模块使用其他模块(例如 SPI)来访问外部看门狗设备。该 Wdg 模块位于板载设备抽象层(参见 [1])。
> **[SWS_Wdg_00055]** ⌈外部看门狗驱动的 Wdg 模块应具有独立于微控制器平台的源代码。⌋
### 5.1 文件结构
#### 5.1.1 代码文件结构
> **[SWS_Wdg_00079]** ⌈代码文件结构不在本规范中完整定义。此处应指出,代码文件结构应包括以下文件(按需;名称扩展参见 `SWS_Wdg_00169`):
> - `Wdg_Lcfg.c` —— 用于链接时可配置的参数
> - `Wdg_PBcfg.c` —— 用于后构建时可配置的参数
> - `Wdg_Irq.c` —— 用于保存中断帧(当内部看门狗服务实现为中断例程而非定时器回调时)
>
> 这些文件应包含所有链接时和后构建时可配置的参数。⌋
> (`SRS_BSW_00346`、`SRS_BSW_00158`、`SRS_BSW_00314`、`SRS_SPAL_12263`)
**注**:这些名称由 `SRS_BSW_00314` 和 `SRS_BSW_00346` 要求。
> **[SWS_Wdg_00169]** ⌈如果 ECU 上存在多个看门狗驱动实例(即外部和内部),实现者应根据 `SRS_BSW_00347` 通过扩展名称来提供唯一的代码文件名。⌋
> (`SRS_BSW_00347`)
#### 5.1.2 头文件结构
> **[SWS_Wdg_00170]** ⌈如果 ECU 上存在多个看门狗驱动实例(即外部和内部),实现者应根据 `SRS_BSW_00347` 通过扩展名称来提供唯一的头文件名。⌋
> (`SRS_BSW_00347`)
**注**:在多个看门狗驱动实例的情况下,本规范中定义的生产错误事件 Id 符号(参见 `SWS_Wdg_00010` 和 `ECUC_Wdg_00148`)可能会在 DEM 的配置中进行扩展以使其唯一。
#### 5.1.3 版本检查
有关详细信息,请参阅 `SWS_BSWGeneral` 第 5.1.8 节"Version Check"。
### 5.2 系统时钟
如果内部看门狗的硬件依赖于系统时钟,则系统时钟的更改(例如 PLL on → PLL off)也可能影响看门狗硬件的时钟设置。
### 5.3 板载通信处理器
外部看门狗设备的 Wdg 模块依赖于所用板载通信处理器或驱动(例如 SPI 处理器)的 API 和能力。
---
## 6 需求可追溯性
> **翻译说明**:本节包含一个大型参考表,将 SRS 需求映射到 SWS 需求。下表列出前 15 行;完整表(包含约 80+ 项映射)请参见原文 PDF。
| 需求 | 描述 | 由以下需求满足 |
|---|---|---|
| `SRS_BSW_00004` | 所有基础软件模块应对所有导入包含文件的版本进行预处理检查 | `SWS_Wdg_00086` |
| `SRS_BSW_00005` | 微控制器抽象层(MCAL)的模块不得有硬编码的水平接口 | `SWS_Wdg_00175` |
| `SRS_BSW_00006` | 微控制器抽象层(MCAL)之上的软件模块的源代码不应依赖于处理器和编译器 | `SWS_Wdg_00175` |
| `SRS_BSW_00007` | 用 C 语言编写的所有基础软件模块应符合 MISRA C 2012 标准 | `SWS_Wdg_00175` |
| `SRS_BSW_00009` | 所有基础软件模块应按照通用标准进行文档化 | `SWS_Wdg_00175` |
| `SRS_BSW_00010` | 应为所有支持平台上定义的配置文档化所有基础软件模块的内存消耗 | `SWS_Wdg_00175` |
| `SRS_BSW_00101` | 基础软件模块应能在单独的初始化函数中初始化变量和硬件 | `SRS_Wdg_00175`, `SWS_Wdg_00001` |
| `SRS_BSW_00158` | (基本参数) | `SWS_Wdg_00079` |
| `SRS_BSW_00161` | AUTOSAR 基础软件应提供微控制器抽象层,为更高软件层提供标准化接口 | `SWS_Wdg_00175` |
| `SRS_BSW_00162` | AUTOSAR 基础软件应提供硬件抽象层 | `SWS_Wdg_00175` |
| `SRS_BSW_00164` | 中断服务例程的实现应由操作系统、复杂驱动或模块完成 | `SWS_Wdg_00166` |
| `SRS_BSW_00167` | 所有 AUTOSAR 基础软件模块应提供配置规则和约束以启用合理性检查 | `SWS_Wdg_00086` |
| `SRS_BSW_00168` | SW 组件应由基础软件中通用 API 中定义的函数进行测试 | `SWS_Wdg_00175` |
| `SRS_BSW_00170` | AUTOSAR SW 组件应提供有关其对故障、信号质量、驱动需求的依赖性的信息 | `SWS_Wdg_00175` |
| `SRS_BSW_00172` | 基础软件模块内部的调度策略应与系统中使用的策略兼容 | `SWS_Wdg_00175` |
> **摘要标记**:本表共约 80 行;上表列出前 15 行代表性映射。完整表涵盖 `SRS_BSW_00302` 至 `SRS_BSW_00466`、`SRS_SPAL_00157` 至 `SRS_SPAL_12463` 以及 `SRS_Wdg_12015` 至 `SRS_Wdg_12168`,详情见原文 PDF 第 13-19 页。
---
## 7 功能规范
### 7.1 通用设计规则
> **[SWS_Wdg_00086]** ⌈Wdg 模块应(最晚在编译时)静态检查配置参数的正确性。⌋
> (`SRS_BSW_00167`、`SRS_BSW_00004`)
> **[SWS_Wdg_00031]** ⌈Wdg 模块不应实现反初始化 / 关闭(de-initialization/shutdown)接口。如果看门狗支持反初始化 / 关闭并且环境允许使用此功能,则反初始化 / 关闭应通过使用 OFF 模式参数调用 `Wdg_SetMode` 例程来实现。⌋
> (`SRS_BSW_00336`、`SRS_SPAL_12163`)
**基本原理**:某些看门狗不支持反初始化 / 关闭功能,并且在某些环境下不得使用此功能(例如在安全关键系统中)。
> **[SWS_Wdg_00034]** ⌈看门狗触发例程的起始地址应由用户静态配置到固定的内存位置。用户须注意:
> - 配置的内存位置对实现驱动的平台有效。
> - 此配置参数仅在硬件支持 / 需要时给出。⌋
**基本原理**:这允许看门狗设备在硬件支持的情况下识别正确的触发输入。
> **[SWS_Wdg_00040]** ⌈如果必须禁用中断以确保数据一致性或本模块的正确功能(例如在切换看门狗模式期间或在看门狗触发例程期间),则应尽可能使用相应的 BSW Scheduler 功能(即定义独占区域)来完成。内部看门狗驱动(因为它属于 MCAL)也可以直接禁用中断 —— 参见 `SRS_BSW_00429`。⌋
> (`SRS_BSW_00426`、`SRS_BSW_00429`)
> **[SWS_Wdg_00168]** ⌈根据静态配置(参见 `ECUC_Wdg_00147`),Wdg 模块的代码可以从 ROM 或 RAM 执行。⌋
**动机**:对于某些用例(例如引导加载程序模式下的闪存编程),看门狗模块必须是运行在 RAM 中的可执行文件的一部分。
**提示**:这对构建环境的要求多于对看门狗模块本身的要求。但是,由于它也可能影响代码的实现,因此在此说明,并给出了相应的配置参数。
### 7.2 错误分类
#### 7.2.1 开发错误
> **[SWS_Wdg_00010]** ⌈Wdg 模块应检测以下开发错误和异常,具体取决于其配置(开发 / 生产模式):
>
> | 错误类型 | 相关错误代码 | 值 [十六进制] |
> |---|---|---|
> | 在错误的上下文中使用 API 服务(例如模块未初始化) | `WDG_E_DRIVER_STATE` | `0x10` |
> | 使用错误 / 不一致参数调用 API 服务 | `WDG_E_PARAM_MODE` | `0x11` |
> | | `WDG_E_PARAM_CONFIG` | `0x12` |
> | 传入的超时值高于最大超时值 | `WDG_E_PARAM_TIMEOUT` | `0x13` |
> | 使用错误的指针值(例如 NULL 指针)调用 API | `WDG_E_PARAM_POINTER` | `0x14` |
> | 无效的配置集选择 | `WDG_E_INIT_FAILED` | `0x15` |
> ⌋
> (`SRS_BSW_00337`、`SRS_BSW_00350`、`SRS_BSW_00385`、`SRS_BSW_00327`、`SRS_BSW_00331`)
#### 7.2.2 运行时错误
无运行时错误。
#### 7.2.3 瞬态错误
无瞬态错误。
#### 7.2.4 生产错误
无生产错误。
#### 7.2.5 扩展生产错误
> **[SWS_Wdg_00178]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **错误名称** | `WDG_E_MODE_FAILED` |
> | **简短描述** | 设置看门狗模式失败 |
> | **详细描述** | 设置看门狗模式失败(在初始化或模式切换期间) |
> | **检测准则** | 失败:设置看门狗模式失败(参见 `SWS_Wdg_00180`)
通过:设置看门狗模式未失败(参见 `SWS_Wdg_00181`) |
> | **辅助参数** | N/A |
> | **所需时间** | N/A |
> | **监控频率** | 取决于上层 |
> ⌋
> **[SWS_Wdg_00180]** ⌈当设置看门狗模式失败时,扩展生产错误 `WDG_E_MODE_FAILED` 应以 FAILED 报告。⌋
> (`SRS_BSW_00327`、`SRS_BSW_00331`、`SRS_BSW_00466`、`SRS_BSW_00385`)
> **[SWS_Wdg_00181]** ⌈当设置看门狗模式未失败时,扩展生产错误 `WDG_E_MODE_FAILED` 应以 PASSED 报告。⌋
> (`SRS_BSW_00327`、`SRS_BSW_00331`、`SRS_BSW_00466`、`SRS_BSW_00385`)
> **[SWS_Wdg_00179]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **错误名称** | `WDG_E_DISABLE_REJECTED` |
> | **简短描述** | 禁用看门狗模式失败 |
> | **详细描述** | 初始化或看门狗模式切换失败,因为这将禁用看门狗,尽管在此配置中不允许 |
> | **检测准则** | 失败:禁用看门狗模式失败(参见 `SWS_Wdg_00182`)
通过:禁用看门狗模式未失败(参见 `SWS_Wdg_00183`) |
> | **辅助参数** | N/A |
> | **所需时间** | N/A |
> | **监控频率** | 取决于上层 |
> ⌋
> **[SWS_Wdg_00182]** ⌈当禁用看门狗模式失败时,扩展生产错误 `WDG_E_DISABLE_REJECTED` 应以 FAILED 报告。⌋
> (`SRS_BSW_00327`、`SRS_BSW_00331`、`SRS_BSW_00466`、`SRS_BSW_00385`)
> **[SWS_Wdg_00183]** ⌈当禁用看门狗模式未失败时,扩展生产错误 `WDG_E_DISABLE_REJECTED` 应以 PASSED 报告。⌋
> (`SRS_BSW_00327`、`SRS_BSW_00331`、`SRS_BSW_00466`、`SRS_BSW_00385`)
### 7.3 错误检测
有关详细信息,请参阅 `SWS_BSWGeneral` 第 7.3 节"Error Detection"。
### 7.4 错误通知
有关详细信息,请参阅 `SWS_BSWGeneral` 第 7.4 节"Error notification"。
### 7.5 外部看门狗驱动
> **[SWS_Wdg_00076]** ⌈为了访问外部看门狗硬件,相应的 Wdg 模块实例应使用相应处理器或驱动的功能和 API,例如 SPI 处理器或 DIO 驱动。⌋
> (`SRS_SPAL_12092`)
> **[SWS_Wdg_00162]** ⌈服务外部看门狗的例程应通过使用自己的内部硬件定时器实现以独立于其他外设,或通过使用 GPT 驱动回调实现。⌋
**提示**:外部看门狗驱动是板载设备抽象层(参见 [1])的一部分,不允许直接访问硬件。此架构差异将在后续版本中解决。
> **[SWS_Wdg_00077]** ⌈外部看门狗的 Wdg 模块应满足与内部看门狗的 Wdg 模块相同的功能需求并提供相同的功能范围。因此它们各自的 API 在语义上是相同的。⌋
> (`SRS_Wdg_12165`)
> **[SWS_Wdg_00078]** ⌈Wdg 模块应将访问外部看门狗硬件所需的所有参数(例如使用的 SPI 通道或 DIO 端口)添加到模块的发布参数和模块的配置参数中。⌋
> (`SRS_Wdg_12166`)
### 7.6 内部看门狗驱动
> **[SWS_Wdg_00161]** ⌈为了访问内部看门狗硬件,相应的 Wdg 模块实例应直接访问用于看门狗服务的硬件。⌋
**提示**:内部看门狗驱动是微控制器抽象层(参见 [1])的一部分,允许直接访问硬件。
> **[SWS_Wdg_00166]** ⌈服务内部看门狗的例程应实现为由硬件定时器驱动的中断例程。⌋
> (`SRS_BSW_00427`、`SRS_BSW_00164`、`SRS_BSW_00325`、`SRS_BSW_00439`、`SRS_SPAL_12129`、`SRS_Wdg_12019`)
**注意**:
- 在这两种情况下,看门狗服务例程都在中断上下文中运行。
- 如果看门狗服务例程实现为中断例程(即作为 cat1 或 cat2 中断例程而不是通过 GPT),则应在基础软件模块描述中对其进行描述,并且实现应遵循 [2] 和 [3] 中给出的中断处理要求(`SRS_BSW_00427`、`SRS_BSW_00325`、`SRS_BSW_00439`、`SRS_BSW_00314`、`SRS_BSW_00429`、`SRS_SPAL_12129`)。
### 7.7 支持窗口看门狗的触发概念
在此规范的早期版本中,看门狗服务例程从软件的上层调用,这使得难以保证时序约束,特别是对于窗口看门狗条件。本概念已更改,导致本章中解释的需求。
此概念的基本思想是将服务看门狗硬件的时序与逻辑控制解耦。
如 `SWS_Wdg_00162` 和 `SWS_Wdg_00166` 所述,触发看门狗的时基应通过硬件方式提供。这确保了最小时序抖动。
这两个需求 `SWS_Wdg_00162` 和 `SWS_Wdg_00166` 也暗示看门狗硬件的服务直接从定时器 ISR 完成。这确保了最小延迟。
这两个条件 —— 最小抖动和延迟 —— 确保可以满足窗口看门狗的时间窗口。
Wdg 驱动期望,看门狗的逻辑控制(是否应触发看门狗)应由环境(例如 Wdg Manager)负责,以便 Wdg Manager 的基本概念(活动监督)保持不变。
> **[SWS_Wdg_00144]** ⌈Wdg Manager(或其他实体)应通过所谓的触发条件控制看门狗驱动:只要触发条件有效,Wdg 驱动就服务看门狗硬件;如果触发条件失效,则 Wdg 驱动停止触发,看门狗将过期。
> 触发条件的语义可以解释为"允许在接下来的 n 毫秒内服务看门狗"。在此时间范围内,触发条件必须由控制实体更新,否则看门狗将过期。
> 看门狗控制逻辑的交接简单地通过共享使用触发条件来完成(例如在启动 / 关闭期间)。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00134]** ⌈如果触发计数器大于零,则看门狗服务例程应递减触发计数器并触发硬件看门狗。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00135]** ⌈如果触发计数器已达到零,则看门狗服务例程应不执行任何操作(即不触发看门狗,因此看门狗将过期)。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00093]** ⌈如果看门狗硬件需要可配置或可更改的激活码,则 Wdg 驱动应在内部处理激活码。在这种情况下,Wdg 驱动应将正确的激活码传递给看门狗硬件,而看门狗硬件应更新存储下一个预期访问码的 Wdg 模块内部变量。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00094]** ⌈如果看门狗硬件需要可配置或可更改的激活码,则 Wdg 驱动的触发周期应定义为一个值,以便可以保证由看门狗硬件更新激活码(参见图 2)。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00095]** ⌈如果看门狗硬件需要可配置或可更改的激活码,并且可以配置初始激活码,则激活码应在 Wdg 驱动的配置集中提供。如果特定硬件的激活码是固定的,则可以忽略上述需求。⌋
> (`SRS_Wdg_12019`)
> **[SWS_Wdg_00035]** ⌈当 Wdg Driver 模块启用开发错误检测时:看门狗服务例程应检查 Wdg 模块的状态是否为 `WDG_IDLE`(表示看门狗驱动和硬件已初始化,且当前未触发或未切换看门狗)。如果不是这种情况,则函数不应触发看门狗硬件,而应引发开发错误 `WDG_E_DRIVER_STATE`。⌋
> (`SRS_BSW_00337`)
> **[SWS_Wdg_00052]** ⌈当 Wdg Driver 模块启用开发错误检测时:看门狗服务例程应在其执行期间将 Wdg 模块的状态设置为 `WDG_BUSY`(表示模块正忙),并在返回前将模块的状态重置为 `WDG_IDLE`(表示模块已初始化且不忙)。⌋
> (`SRS_BSW_00337`)
**注意**:本规范仅在符号 `WDG_IDLE` 和 `WDG_BUSY` 外部可见时(例如用于调试,参见 `SRS_BSW_00335`)才规定这些符号。状态变量的数据类型选择由实现决定。
**集成提示**:Wdg 模块的环境应确保在看门狗服务例程被调用之前已初始化 Wdg Driver 模块。
---
## 8 API 规范
> **[SWS_Wdg_00172]** ⌈如果 ECU 上存在多个看门狗驱动实例(即外部和内部),则本章中指定的 API 名称和实例特定类型名称应根据 `SRS_BSW_00347` 通过扩展使其唯一。⌋
> (`SRS_BSW_00347`)
### 8.1 导入的类型
本章列出从以下模块包含的所有类型:
> **[SWS_Wdg_00105]** ⌈
>
> | 模块 | 头文件 | 导入的类型 |
> |---|---|---|
> | Dem | `Rte_Dem_Type.h` | `Dem_EventIdType` |
> | | `Rte_Dem_Type.h` | `Dem_EventStatusType` |
> | Std_Types | `StandardTypes.h` | `Std_ReturnType` |
> | | `StandardTypes.h` | `Std_VersionInfoType` |
> | WdgIf | `WdgIf.h` | `WdgIf_ModeType` |
> ⌋
### 8.2 类型定义
#### 8.2.1 `Wdg_ConfigType`
> **[SWS_Wdg_00171]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **名称** | `Wdg_ConfigType` |
> | **类型** | Structure(结构) |
> | **范围** | 硬件相关结构 |
> | **描述** | 用于指向保存配置数据的结构的指针,这些配置数据被提供给 Wdg 模块初始化例程以配置模块和看门狗硬件。 |
> | **可用来源** | `Wdg.h` |
> ⌋
> (`SRS_BSW_00414`)
### 8.3 函数定义
#### 8.3.1 `Wdg_Init`
> **[SWS_Wdg_00106]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **服务名称** | `Wdg_Init` |
> | **语法** | `void Wdg_Init(const Wdg_ConfigType* ConfigPtr)` |
> | **服务 ID[十六进制]** | `0x00` |
> | **同步 / 异步** | Synchronous(同步) |
> | **可重入性** | Non Reentrant(不可重入) |
> | **参数 (in)** | `ConfigPtr` —— 指向配置集的指针。 |
> | **参数 (inout)** | None |
> | **参数 (out)** | None |
> | **返回值** | None |
> | **描述** | 初始化模块。 |
> | **可用来源** | `Wdg.h` |
> ⌋
> (`SRS_BSW_00358`、`SRS_BSW_00414`)
> **[SWS_Wdg_00001]** ⌈`Wdg_Init` 函数应初始化 Wdg 模块和看门狗硬件,即应按照配置集中提供的默认看门狗模式和超时周期进行设置。⌋
> (`SRS_BSW_00400`、`SRS_BSW_00101`、`SRS_Wdg_12105`)
**注意**:
> 通过后构建配置,用户可以从有限数量的静态配置集中选择要与 `Wdg_Init` 函数一起使用的配置集(另请参见 `SRS_BSW_00314`)。
> **[SWS_Wdg_00100]** ⌈`Wdg_Init` 函数应初始化 Wdg 模块的所有全局变量,并设置默认的看门狗模式和初始超时周期。⌋
> (`SRS_SPAL_12057`、`SRS_SPAL_12125`、`SRS_SPAL_12461`、`SRS_Wdg_12105`)
> **[SWS_Wdg_00101]** ⌈`Wdg_Init` 函数应初始化控制看门狗硬件所需且不影响 / 不依赖于其他(硬件)模块的控制器寄存器。
> 可能影响或依赖于其他模块的寄存器由通用系统模块初始化。⌋
> (`SRS_SPAL_12057`、`SRS_SPAL_12125`、`SRS_SPAL_12461`、`SRS_Wdg_12105`)
> **[SWS_Wdg_00025]** ⌈如果不允许禁用看门狗(因为预编译配置参数 `WdgDisableAllowed==OFF`),并且如果提供的配置集中给定的默认模式禁用看门狗,则 `Wdg_Init` 函数不应执行初始化,而应引发扩展生产错误 `WDG_E_DISABLE_REJECTED`。⌋
> (`SRS_BSW_00323`、`SRS_SPAL_12163`、`SRS_Wdg_12106`)
> **[SWS_Wdg_00173]** ⌈如果无法将 Wdg 模块和看门狗硬件切换到默认模式(例如由于模式设置不一致或某些时序约束未满足),则 `Wdg_Init` 函数应引发扩展生产错误 `WDG_E_MODE_FAILED`。⌋
> **[SWS_Wdg_00090]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_Init` 函数应检查给定配置集的(硬件特定)内容是否在允许的边界内。如果检测到此错误,则 `Wdg_Init` 函数不应执行初始化,而应引发扩展错误 `WDG_E_PARAM_CONFIG`。⌋
> (`SRS_BSW_00323`、`SRS_SPAL_12448`)
> **[SWS_Wdg_00019]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_Init` 函数应将 Wdg 模块的内部状态从 `WDG_UNINIT`(指示未初始化模块的默认状态)设置为 `WDG_IDLE`(如果初始化成功)。⌋
> (`SRS_BSW_00406`、`SRS_BSW_00335`)
**注意**:本规范仅在符号 `WDG_IDLE` 和 `WDG_UNINIT` 外部可见时(例如用于调试,参见 `SRS_BSW_00335`)才规定这些符号。状态变量的数据类型选择由实现决定。
#### 8.3.2 `Wdg_SetMode`
> **[SWS_Wdg_00107]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **服务名称** | `Wdg_SetMode` |
> | **语法** | `Std_ReturnType Wdg_SetMode(WdgIf_ModeType Mode)` |
> | **服务 ID[十六进制]** | `0x01` |
> | **同步 / 异步** | Synchronous(同步) |
> | **可重入性** | Non Reentrant(不可重入) |
> | **参数 (in)** | `Mode` —— 以下静态配置的模式之一:
1. `WDGIF_OFF_MODE`
2. `WDGIF_SLOW_MODE`
3. `WDGIF_FAST_MODE` |
> | **参数 (inout)** | None |
> | **参数 (out)** | None |
> | **返回值** | `Std_ReturnType` —— `Std_ReturnType`。 |
> | **描述** | 将看门狗切换为 `Mode` 模式。 |
> | **可用来源** | `Wdg.h` |
> ⌋
> **[SWS_Wdg_00160]** ⌈`Wdg_SetMode` 函数应将看门狗驱动从当前看门狗模式切换到参数 `Mode` 给定的模式。这意味着:通过选择有限的静态配置设置之一(例如 toggle 或 window 看门狗、不同的超时周期),Wdg 模块和看门狗硬件被切换到以下三种不同模式之一:
> - `WDGIF_OFF_MODE`
> - `WDGIF_SLOW_MODE`
> - `WDGIF_FAST_MODE` ⌋
> (`SRS_Wdg_12015`、`SRS_Wdg_12018`)
> **[SWS_Wdg_00051]** ⌈提供给 Wdg 模块初始化例程的配置集应包含要在不同看门狗模式中使用的硬件 / 驱动特定参数。⌋
> (`SRS_Wdg_12015`)
> **[SWS_Wdg_00145]** ⌈`Wdg_SetMode` 函数应根据新的看门狗模式重置看门狗超时计数器,即应根据更改的触发周期重新计算剩余的超时帧。⌋
> **[SWS_Wdg_00103]** ⌈如果模式切换已完全且成功执行,即 Wdg 模块和看门狗硬件的所有参数都已设置为新值,则 `Wdg_SetMode` 函数应返回 `E_OK`。⌋
> **[SWS_Wdg_00016]** ⌈如果无法将 Wdg 模块和看门狗硬件切换到请求的模式(例如由于模式设置不一致或某些时序约束未满足),则 `Wdg_SetMode` 函数应返回值 `E_NOT_OK` 并引发扩展生产错误 `WDG_E_MODE_FAILED`。⌋
> (`SRS_SPAL_12064`)
> **[SWS_Wdg_00026]** ⌈如果不允许禁用看门狗(例如在安全相关系统中,参见 `ECUC_Wdg_00115`),则 `Wdg_SetMode` 函数应检查请求模式的设置是否会禁用看门狗。在这种情况下,函数不应执行模式切换,而应引发扩展生产错误 `WDG_E_DISABLE_REJECTED` 并返回值 `E_NOT_OK`。⌋
> (`SRS_BSW_00323`、`SRS_SPAL_12163`、`SRS_Wdg_12106`)
> **[SWS_Wdg_00091]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_SetMode` 函数应检查参数 `Mode` 是否在允许范围内。如果不是这种情况,则函数不应执行模式切换,而应引发开发错误 `WDG_E_PARAM_MODE` 并返回值 `E_NOT_OK`。⌋
> (`SRS_BSW_00323`、`SRS_SPAL_12448`)
> **[SWS_Wdg_00092]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_SetMode` 函数应检查请求模式的(硬件特定)设置是否在允许的边界内。如果不是这种情况,则函数不应执行模式切换,而应引发开发错误 `WDG_E_PARAM_MODE` 并返回值 `E_NOT_OK`。⌋
> (`SRS_BSW_00323`、`SRS_SPAL_12448`)
> **[SWS_Wdg_00017]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_SetMode` 函数应检查 Wdg 模块的状态是否为 `WDG_IDLE`(表示 Wdg 模块和看门狗硬件已初始化,且当前未触发或未切换看门狗)。如果不是这种情况,则函数不应执行模式切换,而应引发开发错误 `WDG_E_DRIVER_STATE` 并返回值 `E_NOT_OK`。⌋
> (`SRS_BSW_00335`、`SRS_SPAL_12064`、`SRS_SPAL_12448`)
> **[SWS_Wdg_00018]** ⌈当 Wdg 模块启用开发错误检测时:`Wdg_SetMode` 函数应在其执行期间将 Wdg 模块的状态设置为 `WDG_BUSY`(表示模块正忙),并在返回调用方之前将 Wdg 模块的状态重置为 `WDG_IDLE`。⌋
> (`SRS_BSW_00335`)
**注意**:本规范仅在符号 `WDG_IDLE` 和 `WDG_BUSY` 外部可见时(例如用于调试,参见 `SRS_BSW_00335`)才规定这些符号。
#### 8.3.3 `Wdg_SetTriggerCondition`
> **[SWS_Wdg_00155]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **服务名称** | `Wdg_SetTriggerCondition` |
> | **语法** | `void Wdg_SetTriggerCondition(uint16 timeout)` |
> | **服务 ID[十六进制]** | `0x03` |
> | **同步 / 异步** | Synchronous(同步) |
> | **可重入性** | Non Reentrant(不可重入) |
> | **参数 (in)** | `timeout` —— 用于设置触发计数器的超时值(毫秒)。 |
> | **参数 (inout)** | None |
> | **参数 (out)** | None |
> | **返回值** | None |
> | **描述** | 设置触发计数器的超时值。 |
> | **可用来源** | `Wdg.h` |
> ⌋
> (`SRS_BSW_00343`)
> **[SWS_Wdg_00136]** ⌈`Wdg_SetTriggerCondition` 函数应根据传入的超时值重置看门狗超时计数器。⌋
> **[SWS_Wdg_00138]** ⌈传入的超时值应解释为"毫秒"。从毫秒到相应计数器值的转换应由 Wdg 模块在内部完成。⌋
> **[SWS_Wdg_00139]** ⌈从超时参数计算计数器值时,应考虑当前的看门狗模式。⌋
> **[SWS_Wdg_00140]** ⌈该函数还应允许将"0"设置为触发的时间帧,这将导致(几乎)立即停止看门狗触发并导致 ECU 的(几乎)瞬时看门狗复位。如果看门狗内存储的计数器值为"0",则服务 `Wdg_SetTriggerCondition` 应不执行任何操作,这意味着它应忽略由参数传递给 `Wdg_SetTriggerCondition` 的计数器。⌋
> **[SWS_Wdg_00146]** ⌈当模块启用开发错误检测时:`Wdg_SetTriggerCondition` 函数应检查给定的超时参数是否小于或等于最大超时值(`WdgMaxTimeout`)。如果不符合,则函数不应重新加载超时计数器,而应引发开发错误 `WDG_E_PARAM_TIMEOUT` 并返回调用方。⌋
#### 8.3.4 `Wdg_GetVersionInfo`
> **[SWS_Wdg_00109]** ⌈
>
> | 字段 | 内容 |
> |---|---|
> | **服务名称** | `Wdg_GetVersionInfo` |
> | **语法** | `void Wdg_GetVersionInfo(Std_VersionInfoType* versioninfo)` |
> | **服务 ID[十六进制]** | `0x04` |
> | **同步 / 异步** | Synchronous(同步) |
> | **可重入性** | Reentrant(可重入) |
> | **参数 (in)** | None |
> | **参数 (inout)** | None |
> | **参数 (out)** | `versioninfo` —— 指向存储本模块版本信息的位置的指针。 |
> | **返回值** | None |
> | **描述** | 返回模块的版本信息。 |
> | **可用来源** | `Wdg.h` |
> ⌋
> **[SWS_Wdg_00174]** ⌈如果为 Wdg Driver 模块启用开发错误检测,则当参数为 NULL 指针时,`Wdg_GetVersionInfo` 函数应引发 `WDG_E_PARAM_POINTER`,并不执行任何操作。⌋
### 8.4 回调通知
本章列出了 Wdg 模块提供给较低层模块的所有函数。
Wdg 模块没有回调通知。
### 8.5 调度函数
本章列出了 Wdg 模块提供并由基础软件模块调度程序直接调用的所有函数。
Wdg 模块没有调度函数。
### 8.6 预期接口
本章列出了 Wdg 模块需要从其他模块获取的所有函数。
#### 8.6.1 强制接口
本模块不需要任何强制接口。
#### 8.6.2 可选接口
本章列出了实现模块可选功能所需的所有接口。
> **[SWS_Wdg_00111]** ⌈
>
> | API 函数 | 头文件 | 描述 |
> |---|---|---|
> | `Dem_SetEventStatus` | `Dem.h` | 由 SW-C 或 BSW 模块调用以向 Dem 报告监控状态信息。调用 `Dem_SetEventStatus` 的 BSW 模块可以安全地忽略返回值。 |
> | `Det_ReportError` | `Det.h` | 用于报告开发错误的服务。 |
> ⌋
除上述函数外,还可以使用其他函数通过 Dio 或 Spi 访问外部看门狗。
#### 8.6.3 可配置接口
本模块不需要任何可配置接口。
---
## 9 序列图
### 9.1 看门狗初始化、设置触发条件和模式
该图显示了初始化 Wdg 模块、设置触发条件和更改看门狗模式的序列。请注意,这只是一个示例。特别是,看门狗管理器(WdgM)以外的其他"客户端"模块可以设置触发条件。
```
«module» «module» «module» «module»
EcuM WdgM WdgIf Wdg
Wdg_Init(const Wdg_ConfigType*)
Wdg_Init()
WdgIf_SetTriggerCondition(uint8, uint16)
Wdg_SetTriggerCondition(uint16)
Wdg_SetTriggerCondition()
WdgIf_SetTriggerCondition()
WdgIf_SetMode(Std_ReturnType, uint8, WdgIf_ModeType)
Wdg_SetMode(Std_ReturnType, WdgIf_ModeType)
Wdg_SetMode()
WdgIf_SetMode()
```
**图 1**:看门狗初始化、设置触发条件和模式切换的序列。
### 9.2 看门狗驱动与硬件之间的数据交换
该图显示了触发看门狗硬件的序列。请注意,这只是一个示例。对于外部看门狗,看门狗硬件不能直接访问,只能通过 MCAL 层的驱动(如 SPI 或 DIO)访问。
```
«module» «module» «module» Timer Hardware «Peripheral»
WdgM WdgIf Wdg Watchdog Hardware
WdgIf_SetTriggerCondition(uint8, uint16) Hint: Access to external
Wdg_SetTriggerCondition(uint16) Wdg hardware will be
Wdg_SetTriggerCondition() done via peripheral
WdgIf_SetTriggerCondition() drivers as SPI or DIO.
interrupt()
trigger WDG hardware()
update activation code()
interrupt()
trigger WDG hardware()
update activation code()
WdgIf_SetTriggerCondition(uint8, uint16)
Wdg_SetTriggerCondition(uint16)
Wdg_SetTriggerCondition()
WdgIf_SetTriggerCondition()
interrupt()
trigger WDG hardware()
update activation code()
```
**图 2**:看门狗驱动与硬件之间的数据交换。
---
## 10 配置规范
通常,本章定义配置参数及其到容器的聚类。为了支持规范,第 10.1 章描述了基本原理。它还指定了用于参数规范的模板(表)。我们打算将第 10.1 章保留在规范中以保证可理解性。
第 10.2 章规定了模块 Wdg 的结构(容器)和参数。
第 10.3 章规定了模块 Wdg 的发布信息。
### 10.1 如何阅读本章
有关详细信息,请参阅 `SWS_BSWGeneral` 第 10.1 节"Introduction to configuration specification"。
### 10.2 容器和配置参数
以下各章概述了所有配置参数。参数的详细含义在第 7 章和第 8 章中描述。
#### 10.2.1 `Wdg`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00073` |
| **模块名称** | Wdg |
| **模块描述** | Wdg(看门狗驱动)模块的配置。 |
| **后构建变体支持** | true |
| **支持的配置变体** | `VARIANT-LINK-TIME`、`VARIANT-POST-BUILD`、`VARIANT-PRE-COMPILE` |
**包含的容器**:
| 容器名称 | 多重性 | 范围 / 依赖 |
|---|---|---|
| `WdgDemEventParameterRefs` | 0..1 | 容器,用于应使用 API `Dem_SetEventStatus` 在相应错误发生时调用的 `DemEventParameter` 元素的引用。EventId 取自引用的 `DemEventParameter` 的 `DemEventId` 符号值。标准化的错误在此容器中提供,可以由供应商特定的错误引用扩展。 |
| `WdgGeneral` | 1 | 看门狗驱动的所有通用参数都收集在此处。 |
| `WdgPublishedInformation` | 1 | 保存所有 Wdg 特定发布信息参数的容器。 |
| `WdgSettingsConfig` | 1 | 不同看门狗设置(包括外部看门狗硬件)的配置项。
注意:所有后构建参数都通过此容器处理。 |
#### 10.2.2 `WdgDemEventParameterRefs`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00148` |
| **容器名称** | `WdgDemEventParameterRefs` |
| **描述** | 容器,用于应使用 API `Dem_SetEventStatus` 在相应错误发生时调用的 `DemEventParameter` 元素的引用。EventId 取自引用的 `DemEventParameter` 的 `DemEventId` 符号值。标准化的错误在此容器中提供,可以由供应商特定的错误引用扩展。 |
**配置参数**:
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00150` |
| **名称** | `WDG_E_DISABLE_REJECTED` |
| **父容器** | `WdgDemEventParameterRefs` |
| **描述** | 引用在发生错误"初始化或模式切换失败,因为这将禁用看门狗"时应发出的 `DemEventParameter`。 |
| **多重性** | 0..1 |
| **类型** | 对 `[ DemEventParameter ]` 的符号名称引用 |
| **后构建变体多重性** | false |
| **后构建变体值多重性** | false |
| **多重性配置类** | 预编译时间(Pre-compile time):X —— 所有变体 |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00149` |
| **名称** | `WDG_E_MODE_FAILED` |
| **父容器** | `WdgDemEventParameterRefs` |
| **描述** | 引用在发生错误"设置看门狗模式失败(在初始化或模式切换期间)"时应发出的 `DemEventParameter`。 |
| **多重性** | 0..1 |
| **类型** | 对 `[ DemEventParameter ]` 的符号名称引用 |
| **后构建变体多重性** | false |
| **后构建变体值多重性** | false |
| **多重性配置类** | 预编译时间:X —— 所有变体 |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
无包含的容器。
#### 10.2.3 `WdgGeneral`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00114` |
| **容器名称** | `WdgGeneral` |
| **描述** | 看门狗驱动的所有通用参数都收集在此处。 |
**配置参数**:
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00115` |
| **名称** | `WdgDevErrorDetect` |
| **父容器** | `WdgGeneral` |
| **描述** | 启用或关闭开发错误检测和通知。
• true:启用检测和通知。
• false:禁用检测和通知。 |
| **多重性** | 1 |
| **类型** | `EcucBooleanParamDef` |
| **默认值** | false |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00116` |
| **名称** | `WdgDisableAllowed` |
| **父容器** | `WdgGeneral` |
| **描述** | 编译开关,以允许 / 禁止在运行时禁用看门狗驱动。
True:允许在运行时禁用看门狗驱动。
False:不允许在运行时禁用看门狗驱动。 |
| **多重性** | 1 |
| **类型** | `EcucBooleanParamDef` |
| **默认值** | -- |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local
依赖:安全相关的编译开关,这必须与看门狗管理器的相应设置一致。 |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00117` |
| **名称** | `WdgIndex` |
| **父容器** | `WdgGeneral` |
| **描述** | 指定此模块实例的 InstanceId。如果只存在一个实例,则其 Id 应为 0。 |
| **多重性** | 1 |
| **类型** | `EcucIntegerParamDef`(为此参数生成的符号名称) |
| **范围** | 0 .. 255 |
| **默认值** | -- |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00130` |
| **名称** | `WdgInitialTimeout` |
| **父容器** | `WdgGeneral` |
| **描述** | 在 Init 函数初始化期间为触发条件设置的初始超时(秒)。不应大于 `WdgMaxTimeout`。 |
| **多重性** | 1 |
| **类型** | `EcucFloatParamDef` |
| **范围** | [0 .. 65.535] |
| **默认值** | -- |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00131` |
| **名称** | `WdgMaxTimeout` |
| **父容器** | `WdgGeneral` |
| **描述** | 看门狗触发条件可以初始化的最大超时(秒)。 |
| **多重性** | 1 |
| **类型** | `EcucFloatParamDef` |
| **范围** | [0 .. 65.535] |
| **默认值** | -- |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00147` |
| **名称** | `WdgRunArea` |
| **父容器** | `WdgGeneral` |
| **描述** | 表示看门狗驱动执行区域,根据特定微控制器的需要,从 ROM(闪存)或 RAM 执行。 |
| **多重性** | 1 |
| **类型** | `EcucEnumerationParamDef` |
| **范围** | `RAM` —— 看门狗驱动从 RAM 区域执行
`ROM` —— 看门狗驱动从 ROM 区域执行 |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00118` |
| **名称** | `WdgTriggerLocation` |
| **父容器** | `WdgGeneral` |
| **描述** | 看门狗触发例程的位置(内存地址)。 |
| **多重性** | 1 |
| **类型** | `EcucFunctionNameDef` |
| **默认值** | -- |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local
依赖:仅当由硬件提供且系统需要时才相关。 |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00119` |
| **名称** | `WdgVersionInfoApi` |
| **父容器** | `WdgGeneral` |
| **描述** | 编译开关,以启用 / 禁用版本信息 API。
• True:启用 API
• False:禁用 API |
| **多重性** | 1 |
| **类型** | `EcucBooleanParamDef` |
| **默认值** | false |
| **后构建变体值** | false |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00353` |
| **名称** | `WdgEcucPartitionRef` |
| **父容器** | `WdgGeneral` |
| **描述** | 将 Wdg 驱动映射到零个或一个 ECUC 分区,以使模块的 API 在此分区中可用。
Tags:`atp.Status=draft` |
| **多重性** | 0..1 |
| **类型** | 对 `[ EcucPartition ]` 的引用 |
| **后构建变体多重性** | true |
| **后构建变体值多重性** | true |
| **多重性配置类** | 预编译时间:X —— 所有变体 |
| **值配置类** | 预编译时间:X —— 所有变体 |
| **范围 / 依赖** | 范围:ECU |
无包含的容器。
#### 10.2.4 `WdgSettingsConfig`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00082` |
| **容器名称** | `WdgSettingsConfig` |
| **描述** | 不同看门狗设置的配置项,包括外部看门狗硬件的配置项。
注意:所有后构建参数都通过此容器处理。 |
**配置参数**:
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00120` |
| **名称** | `WdgDefaultMode` |
| **父容器** | `WdgSettingsConfig` |
| **描述** | 看门狗驱动初始化的默认模式。
实现类型:`WdgIf_ModeType` |
| **多重性** | 1 |
| **类型** | `EcucEnumerationParamDef` |
| **范围** | `WDGIF_FAST_MODE` —— 默认看门狗模式为"fast"
`WDGIF_OFF_MODE` —— 默认看门狗模式为"off"
`WDGIF_SLOW_MODE` —— 默认看门狗模式为"slow" |
| **后构建变体值** | true |
| **值配置类** | 预编译时间:X —— `VARIANT-PRE-COMPILE`
链接时间:X —— `VARIANT-LINK-TIME`
后构建时间:X —— `VARIANT-POST-BUILD` |
| **范围 / 依赖** | 范围:local
依赖:"Off"模式仅在允许禁用看门狗驱动时才可能。 |
**包含的容器**:
| 容器名称 | 多重性 | 范围 / 依赖 |
|---|---|---|
| `WdgExternalConfiguration` | 0..1 | 外部看门狗硬件的配置项 |
| `WdgSettingsFast` | 1 | 看门狗驱动"fast"模式的硬件相关设置 |
| `WdgSettingsOff` | 1 | 看门狗驱动"off"模式的硬件相关设置 |
| `WdgSettingsSlow` | 1 | 看门狗驱动"slow"模式的硬件相关设置 |
**注意**:以容器形式提供这三种模式的原因是它们可能被其他模块引用,因此不需要参数。但是这些容器可以由供应商(或硬件)特定配置参数扩展,但这些参数无法标准化。
#### 10.2.5 `WdgSettingsFast`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00121` |
| **容器名称** | `WdgSettingsFast` |
| **描述** | 看门狗驱动"fast"模式的硬件相关设置。 |
无包含的容器。
#### 10.2.6 `WdgSettingsSlow`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00123` |
| **容器名称** | `WdgSettingsSlow` |
| **描述** | 看门狗驱动"slow"模式的硬件相关设置。 |
无包含的容器。
#### 10.2.7 `WdgSettingsOff`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00122` |
| **容器名称** | `WdgSettingsOff` |
| **描述** | 看门狗驱动"off"模式的硬件相关设置。 |
无包含的容器。
#### 10.2.8 `WdgExternalConfiguration`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00112` |
| **容器名称** | `WdgExternalConfiguration` |
| **描述** | 外部看门狗硬件的配置项。 |
**配置参数**:
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00113` |
| **名称** | `WdgExternalContainerRef` |
| **父容器** | `WdgExternalConfiguration` |
| **描述** | 引用以下之一:
• `DioChannelGroup` 容器(如果硬件看门狗通过 DIO 引脚连接)
• `SpiSequenceConfiguration` 容器(如果看门狗硬件通过 SPI 访问) |
| **多重性** | 0..1 |
| **类型** | 对 `[ DioChannelGroup , SpiSequence ]` 的选择引用 |
| **后构建变体多重性** | true |
| **后构建变体值多重性** | true |
| **多重性配置类** | 预编译时间:X —— `VARIANT-PRE-COMPILE`
链接时间:X —— `VARIANT-LINK-TIME`
后构建时间:X —— `VARIANT-POST-BUILD` |
| **值配置类** | 预编译时间:X —— `VARIANT-PRE-COMPILE`
链接时间:X —— `VARIANT-LINK-TIME`
后构建时间:X —— `VARIANT-POST-BUILD` |
| **范围 / 依赖** | 范围:local
依赖:参见 DIO 或 SPI SWS |
无包含的容器。
### 10.3 发布信息
有关详细信息,请参阅 `SWS_BSWGeneral` 第 10.3 节"Published Information"。
#### 10.3.1 `WdgPublishedInformation`
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00074` |
| **容器名称** | `WdgPublishedInformation` |
| **描述** | 保存所有 Wdg 特定发布信息参数的容器。 |
**配置参数**:
| 字段 | 内容 |
|---|---|
| **SWS Item** | `ECUC_Wdg_00127` |
| **名称** | `WdgTriggerMode` |
| **父容器** | `WdgPublishedInformation` |
| **描述** | 看门狗触发模式(toggle / window / both) |
| **多重性** | 1 |
| **类型** | `EcucEnumerationParamDef` |
| **范围** | `WDG_BOTH` —— --
`WDG_TOGGLE` —— --
`WDG_WINDOW` —— -- |
| **后构建变体值** | false |
| **值配置类** | 发布信息:X —— 所有变体 |
| **范围 / 依赖** | 范围:local |
无包含的容器。
**注意**:`WdgTriggerMode` 仅出于信息目的而发布;此参数不用于配置看门狗驱动或使用看门狗驱动的模块。
---
## 11 不适用的需求
> **[SWS_Wdg_00175]** ⌈这些需求不适用于本规范。⌋
> (`SRS_BSW_00344`、`SRS_BSW_00404`、`SRS_BSW_00405`、`SRS_BSW_00170`、`SRS_BSW_00419`、`SRS_BSW_00383`、`SRS_BSW_00375`、`SRS_BSW_00416`、`SRS_BSW_00437`、`SRS_BSW_00168`、`SRS_BSW_00423`、`SRS_BSW_00424`、`SRS_BSW_00425`、`SRS_BSW_00428`、`SRS_BSW_00432`、`SRS_BSW_00433`、`SRS_BSW_00450`、`SRS_BSW_00339`、`SRS_BSW_00422`、`SRS_BSW_00417`、`SRS_BSW_00161`、`SRS_BSW_00162`、`SRS_BSW_00005`、`SRS_BSW_00415`、`SRS_BSW_00007`、`SRS_BSW_00413`、`SRS_BSW_00441`、`SRS_BSW_00307`、`SRS_BSW_00373`、`SRS_BSW_00410`、`SRS_BSW_00447`、`SRS_BSW_00348`、`SRS_BSW_00353`、`SRS_BSW_00361`、`SRS_BSW_00302`、`SRS_BSW_00328`、`SRS_BSW_00312`、`SRS_BSW_00006`、`SRS_BSW_00449`、`SRS_BSW_00377`、`SRS_BSW_00304`、`SRS_BSW_00378`、`SRS_BSW_00306`、`SRS_BSW_00308`、`SRS_BSW_00309`、`SRS_BSW_00371`、`SRS_BSW_00359`、`SRS_BSW_00360`、`SRS_BSW_00440`、`SRS_BSW_00330`、`SRS_BSW_00009`、`SRS_BSW_00401`、`SRS_BSW_00172`、`SRS_BSW_00010`、`SRS_BSW_00333`、`SRS_BSW_00321`、`SRS_BSW_00341`、`SRS_BSW_00334`、`SRS_SPAL_12056`、`SRS_SPAL_12267`、`SRS_SPAL_12462`、`SRS_SPAL_12463`、`SRS_SPAL_12068`、`SRS_SPAL_12069`、`SRS_SPAL_00157`、`SRS_SPAL_12063`、`SRS_SPAL_12075`、`SRS_SPAL_12067`、`SRS_SPAL_12077`、`SRS_SPAL_12078`、`SRS_SPAL_12265`、`SRS_Wdg_12167`、`SRS_Wdg_12168`)
---
## 翻译说明
- **翻译完整性**:本文档为 AUTOSAR 看门狗驱动程序规范(SWS)的中文翻译版本,完整翻译了 1-11 章全部内容。
- **保留的英文术语**:所有 API 标识符(`Wdg_Init`、`Wdg_SetMode`、`Wdg_SetTriggerCondition`、`Wdg_GetVersionInfo`、`WdgIf_ModeType` 等)、错误代码(`WDG_E_DRIVER_STATE`、`WDG_E_PARAM_MODE` 等)、模块缩写(Wdg、WdgM、WdgIf、DET、DEM、SPI、DIO)、需求 ID(`SWS_Wdg_xxxxx`、`SRS_Wdg_xxxxx`、`SRS_BSW_xxxxx`、`SRS_SPAL_xxxxx`、`ECUC_Wdg_xxxxx`)、AUTOSAR 方框符 `⌈⌋` 均按要求保留为英文。
- **省略的内容**:免责声明(Disclaimer)按要求未翻译。
- **摘要标记**:第 6 章需求可追溯性表中包含约 80 行映射,本翻译列出前 15 行代表性内容;完整表请参见原文 PDF 第 13-19 页。
- **配置参数**:第 10 章包含完整的容器和配置参数定义。