本文档规约 AUTOSAR 基础软件模块看门狗驱动(Wdg)的功能、API 与配置。
本模块提供服务用于初始化、改变操作模式与设置触发条件(timeout)。
功能需求与功能范围对内部与外部看门狗驱动是相同的。因此 API 语义相同。
内部看门狗驱动属于微控制器抽象层(MCAL),而外部看门狗驱动属于板上设备抽象层。
本节列出本文件使用的缩略语。详细定义见 术语表。
| 缩略语 | 描述 |
|---|---|
| API | Application Programming Interface(应用程序编程接口) |
| BSW | Basic Software(基础软件) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| ECU | Electronic Control Unit(电子控制单元) |
| EOL | End Of Line(产线下线) |
| ISR | Interrupt Service Routine(中断服务例程) |
| MCAL | Microcontroller Abstraction Layer(微控制器抽象层) |
| MCU | Microcontroller Unit(微控制器单元) |
| NMI | Non Maskable Interrupt(不可屏蔽中断) |
| OS | Operating System(操作系统) |
| SFR | Special Function Register(特殊功能寄存器) |
| SPI | Serial Peripheral Interface(串行外设接口) |
| WDG | Watchdog(看门狗) |
AUTOSAR_SRS_WatchdogDriver — 看门狗驱动需求(Requirements on Watchdog Driver)
AUTOSAR_SRS_BSWGeneral — 基础软件通用需求(General Requirements on Basic Software Modules)AUTOSAR_SRS_SPALGeneral — SPAL 通用需求(General Requirements on SPAL)N/A
AUTOSAR_SWS_MCUDriver — MCU 驱动规范(Specification of MCU Driver)AUTOSAR_SWS_PORTDriver — Port 驱动规范(Specification of Port Driver)AUTOSAR_SWS_SPIHandlerDriver — SPI Handler/Driver 规范(Specification of SPI Handler/Driver)AUTOSAR_SWS_DIODriver — DIO 驱动规范(Specification of DIO Driver)AUTOSAR_SWS_Det — 默认错误追踪器规范(Specification of Default Error Tracer)AUTOSAR_SWS_Dem — 诊断事件管理器规范(Specification of Diagnostic Event Manager)本 SWS 适用于内部与外部看门狗驱动。两者具有相同的功能范围与 API 语义。
看门狗驱动适用于所有汽车域(动力总成、底盘、车身等),无特定域限制。
/<Module>_src/
Wdg.c # 主源文件
Wdg_Lcfg.c # Link-time 配置
Wdg_PBcfg.c # PostBuild 配置
Wdg_Irq.c # ISR 实现(若使用中断)
/<Module>_include/
Wdg.h # 主头文件
Wdg_Cfg.h # 配置头文件
Wdg_PBcfg.h # PostBuild 配置头文件
Wdg_MemMap.h # 内存映射
看门狗驱动应使用 Wdg_GetVersionInfo() 报告其版本号。集成商应检查与 ECU 软件版本的一致性。
外部看门狗通常需要由系统时钟(通过 MCU 驱动)提供时钟脉冲。内部看门狗集成在 MCU 内部。
外部看门狗驱动通过 SPI/DIO Handler/Driver 访问外部看门狗设备。
本 SWS 中所有 SWS_Wdg_NNNNN 需求均链接到上游 AUTOSAR_SRS_WatchdogDriver 中的 SRS_Wdg_NNNNN 需求。下游 SRS_Wdg_NNNNN 需求 ID 唯一集合 = {12015, 12018, 12019, 12105, 12106, 12165, 12166, 12167, 12168, 13500} 共 10 个需求;SWS_Wdg_NNNNN 需求 ID 唯一集合(基于文档 13-20 页)约 100+ 条(SWS_Wdg_00001-SWS_Wdg_00300 范围),具体完整列表详见原文第 6 章追溯表。
本规约同时满足 RS_BRF_01008/01136/01448/01464/01912/01936(6 条 RS_BRF 需求,已在 SRS_WatchdogDriver 中追溯)。
看门狗驱动的设计规则:
Wdg_Init() 后可调用其他 API;| 错误码 | 值 | 含义 |
|---|---|---|
WDG_E_PARAM_CONFIG | 0x10 | 无效的配置指针 |
WDG_E_DRIVER_STATE | 0x11 | 看门狗驱动未初始化 |
WDG_E_INIT_FAILED | 0x12 | 看门狗初始化失败 |
WDG_E_PARAM_MODE | 0x13 | 无效的模式参数 |
WDG_E_PARAM_TIMEOUT | 0x14 | 无效的 timeout 参数 |
无(看门狗驱动不在运行时产生错误)。
无(看门狗驱动不检测瞬态故障)。
无(看门狗驱动不直接产生生产错误;DEM 报告由调用方决定)。
无。
看门狗驱动检测的错误:
看门狗驱动通过以下方式通知错误:
Det_ReportError() 报告开发错误;Dem_ReportErrorStatus() 报告生产错误(可选);E_NOT_OK(若适用)。外部看门狗驱动通过 SPI/DIO 与外部看门狗设备通信。其功能与内部看门狗驱动相同。
内部看门狗驱动直接通过 MCU 寄存器控制内部看门狗硬件。其功能与外部看门狗驱动相同。
看门狗驱动支持窗式看门狗(Windowed Watchdog)概念:
WdgSettingsFast/WdgSettingsSlow);Wdg_SetTriggerCondition() 在窗口内重新触发。本模块导入以下类型:
Std_ReturnType(来自 Std_Types.h)Std_VersionInfoType(来自 Std_Types.h)typedef struct {
WdgIf_ModeType WdgDefaultMode; /* 默认模式 */
WdgIf_TriggerType WdgFastTrigger; /* Fast 模式触发条件 */
WdgIf_TriggerType WdgSlowTrigger; /* Slow 模式触发条件 */
WdgIf_ModeType WdgInitialMode; /* 初始模式 */
/* MCU 特定参数 */
uint16 WdgMaxTriggerTimeFast;
uint16 WdgMaxTriggerTimeSlow;
} Wdg_ConfigType;
void Wdg_Init(const Wdg_ConfigType* ConfigPtr);
说明:初始化看门狗驱动。该函数应在 OS 启动后、任何看门狗模式变更前调用。初始化后看门狗硬件开始运行在 ConfigPtr->WdgInitialMode 模式下。
参数:
ConfigPtr:指向看门狗配置结构的指针。错误:
WDG_E_PARAM_CONFIG:ConfigPtr 为 NULL;WDG_E_INIT_FAILED:硬件初始化失败。Std_ReturnType Wdg_SetMode(WdgIf_ModeType Mode);
说明:设置看门狗当前操作模式。可从 Fast 切换到 Slow 或反之;切换到 Off 仅在配置允许时可用。
参数:
Mode:目标模式(WDGIF_FAST_MODE、WDGIF_SLOW_MODE、WDGIF_OFF_MODE)。返回:E_OK 成功;E_NOT_OK 失败。
错误:
WDG_E_DRIVER_STATE:看门狗未初始化;WDG_E_PARAM_MODE:无效的 Mode 参数。Std_ReturnType Wdg_SetTriggerCondition(uint16 Timeout);
说明:设置看门狗触发条件(timeout 值)。在窗式看门狗模式下,Timeout 须在配置窗口内。
参数:
Timeout:新的 timeout 值(毫秒)。返回:E_OK 成功;E_NOT_OK 失败。
错误:
WDG_E_DRIVER_STATE:看门狗未初始化;WDG_E_PARAM_TIMEOUT:Timeout 超出有效范围。#if (WDG_VERSION_INFO_API == STD_ON)
void Wdg_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
#endif
说明:返回看门狗驱动的版本信息。
参数:
VersionInfoPtr:指向 Std_VersionInfoType 结构的指针。错误:
WDG_E_PARAM_CONFIG:VersionInfoPtr 为 NULL(DET 错误)。本模块无回调通知。所有交互通过 Wdg_SetMode() 与 Wdg_SetTriggerCondition() 主动调用。
本模块无主函数(MainFunction)。看门狗触发由系统时间事件或外部触发直接驱动。
本模块无强制调用的外部接口。
Det_ReportError()(开发错误,强制);Dem_ReportErrorStatus()(生产错误,可选);Mcu_GetResetReason()(外部 SPI 看门狗触发时调用以获取 MCU 复位原因);Spi_Write()、Spi_Read()(外部 SPI 看门狗驱动);Dio_WriteChannel()、Dio_ReadChannel()(外部 DIO 看门狗驱动)。无(所有接口均为固定)。
序列图 9.1 描述 EcuM 启动时的看门狗初始化流程:
Wdg_Init();Wdg_SetTriggerCondition() 重置看门狗;Wdg_SetMode()。序列图 9.2 描述外部 SPI 看门狗的数据交换:
Spi_Write() 发送密码到看门狗设备;Spi_Read() 读取看门狗状态;本章定义看门狗驱动的所有配置容器与参数。每个容器使用 ECUC(ECU Configuration)格式描述。
| 配置参数 | 类型 | 范围 | 描述 |
|---|---|---|---|
| WdgDevErrorDetect | Boolean | true/false | 开发错误检测开关 |
| WdgDisableAllowed | Boolean | true/false | 是否允许禁用看门狗(仅安全相关系统,true 禁用) |
| WdgEnableWindowMode | Boolean | true/false | 窗式看门狗模式开关 |
| WdgIndex | Integer | 0..255 | 看门狗驱动实例 ID |
| WdgInitialMode | Enum | FAST/SLOW/OFF | 初始模式 |
| WdgMaxTriggerTimeFast | Integer | 0..65535 | Fast 模式最大触发时间(ms) |
| WdgMaxTriggerTimeSlow | Integer | 0..65535 | Slow 模式最大触发时间(ms) |
| WdgSafety | Boolean | true/false | 看门狗用于安全相关系统 |
| WdgEcucPartitionRef | Reference | EcucPartition | ECU 分区引用(R4.4.0 新增) |
| WdgTriggerSubdivision | Integer | 0..255 | 触发细分数 |
| WdgVersionInfoApi | Boolean | true/false | Wdg_GetVersionInfo() API 开关 |
| 配置参数 | 描述 |
|---|---|
| WDG_E_DISABLE_REJECTED | 看门狗禁用拒绝事件引用 |
| WDG_E_MODE_FAILED | 模式切换失败事件引用 |
WdgGeneral 容器继承 Wdg 容器的所有参数,并添加:
包含 WdgSettingsFast 与 WdgSettingsSlow 子容器。
| 配置参数 | 描述 |
|---|---|
| WdgFastModeTrigger | Fast 模式触发条件值 |
| WdgFastModeWindow | Fast 模式触发窗口(仅窗式看门狗) |
| 配置参数 | 描述 |
|---|---|
| WdgSlowModeTrigger | Slow 模式触发条件值 |
| WdgSlowModeWindow | Slow 模式触发窗口(仅窗式看门狗) |
| 配置参数 | 描述 |
|---|---|
| WdgOffMode | Off 模式配置(仅 WdgDisableAllowed=true 时有效) |
| 配置参数 | 描述 |
|---|---|
| WdgSpiChannelId | SPI 通道 ID(外部 SPI 看门狗) |
| WdgSpiSequenceId | SPI 序列 ID |
| WdgSpiCsPort | SPI 片选端口(DIO) |
| WdgSpiCsPin | SPI 片选引脚(DIO) |
| WdgSpiCsPolarity | 片选极性(高/低有效) |
发布信息包含可在集成时使用的标准 AUTOSAR 公开信息:
本节列出来自 AUTOSAR_SRS_WatchdogDriver 但在本 SWS 中不直接对应的需求(标 N/A):
[SRS_Wdg_12163] 驱动模块去初始化——由于安全原因与大多数看门狗硬件不支持关闭,看门狗驱动不提供 DeInit 函数;[SRS_Wdg_12106] 看门狗不可禁用——仅在配置 WdgDisableAllowed=false 时强制;校对轮次:L1 自动校对(2026-06-13)
Wdg_Init()、Wdg_SetMode()、Wdg_SetTriggerCondition()、Wdg_GetVersionInfo()(带 #if WDG_VERSION_INFO_API == STD_ON 条件编译);每个 API 含完整签名、参数、返回、错误码说明。WDG_E_PARAM_CONFIG=0x10/DRIVER_STATE=0x11/INIT_FAILED=0x12/PARAM_MODE=0x13/PARAM_TIMEOUT=0x14 完整翻译;DET 报告与 DEM 报告说明完整。Wdg、WdgDemEventParameterRefs、WdgGeneral、WdgSettingsConfig、WdgSettingsFast、WdgSettingsSlow、WdgSettingsOff、WdgExternalConfiguration、WdgPublishedInformation;共 30+ 配置参数含范围与描述。