看门狗管理器(Watchdog Manager, WdgM)是 AUTOSAR 中的服务层(Services Layer)模块,介于应用层(Application Layer)与基础软件层(BSW Layer)之间:
层级关系:
应用 SWC ←→ RTE ←→ WdgM ←→ WdgIf ←→ Wdg Driver ←→ Hardware WDG
WdgM 提供以下核心功能:
| 缩略语 | 描述 |
|---|---|
| API | Application Programming Interface(应用程序编程接口) |
| BSW | Basic Software(基础软件) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| ECU | Electronic Control Unit(电子控制单元) |
| EA | Exclusive Area(独占区) |
| GSS | Global Supervision Status(全局监督状态) |
| ISR | Interrupt Service Routine(中断服务例程) |
| LSS | Local Supervision Status(本地监督状态) |
| OS | Operating System(操作系统) |
| RTE | Runtime Environment(运行时环境) |
| SE | Supervised Entity(被监督实体) |
| SWC | Software Component(软件组件) |
| Wdg | Watchdog(看门狗) |
| WdgM | Watchdog Manager(看门狗管理器) |
| WdgIf | Watchdog Interface(看门狗接口) |
AUTOSAR_SRS_WatchdogDriver — 看门狗驱动需求AUTOSAR_SRS_BSWGeneral — 基础软件通用需求AUTOSAR_SWS_WatchdogDriver — 看门狗驱动规范AUTOSAR_SWS_WatchdogInterface — 看门狗接口规范AUTOSAR_SWS_Det — 默认错误追踪器AUTOSAR_SWS_Dem — 诊断事件管理器AUTOSAR_SWS_EcuM — ECU 状态管理器WdgM.c # 主源文件
WdgM_Lcfg.c # Link-time 配置
WdgM_PBcfg.c # PostBuild 配置
WdgM 通过 ECUC 参数配置:监督机制、SE 集合、检查点、模式、错误处理等。
WdgM 满足的 RS_BRF_NNNNN 需求(来自 AUTOSAR_RS_Features):
| 需求 | 描述 |
|---|---|
| RS_BRF_01064 | AUTOSAR 服务应支持功能安全监督 |
| RS_BRF_01136 | AUTOSAR 应支持系统启动后解析的 BSW 数据变体 |
| RS_BRF_01472 | AUTOSAR 应支持可监督的 SWC 执行 |
| RS_BRF_01856 | AUTOSAR 应支持分区隔离 |
| RS_BRF_01904 | AUTOSAR 应支持监督报告 |
WdgM 自身的 SWS_WdgM_NNNNN 需求 ID 约 100+ 条(详细列表见原文第 6 章追溯表)。
WdgM 提供三类监督机制:
Alive Supervision 监督被监督实体(SE)在配置的最小/最大周期内是否被调用:
WdgMExpectedAliveIndications(最小/最大指示数);WdgMMinMargin(最小裕度)、WdgMMaxMargin(最大裕度);SE 通过 WdgM_Trigger() 或 WdgM_CheckpointReached()(取决于 SE 类型)报告活性。
Deadline Supervision 监督被监督实体从开始到结束的时间是否在配置截止期内:
WdgM_StartDeadline();WdgM_CheckpointReached();Logical Supervision 监督被监督实体的逻辑执行顺序:
WdgMCheckpoint(检查点编号);WdgM 维护两层监督状态:
当任一 SE 的 LSS 变为 FAILED 时,GSS 立即变为 FAILED。
WdgM 与 WDG 模式对齐:
模式切换通过 WdgM_SetMode() API 进行:
WdgM 周期性地(基于 OS Tick)检查所有 SE 的状态:
WdgM 支持 OS-Application(分区)重启:
WdgM_GetFirstExpiredSEID() API 返回首个失败的 SE ID);当监督失败时,WdgM 采取预定义的防御行为:
| 错误码 | 值 | 含义 |
|---|---|---|
WDGM_E_PARAM_CONFIG | 0x10 | 无效的配置指针 |
WDGM_E_PARAM_MODE | 0x11 | 无效的模式参数 |
WDGM_E_PARAM_SEID | 0x12 | 无效的 SE ID |
WDGM_E_INV_STATE | 0x13 | 无效的内部状态 |
WDGM_E_ALREADY_INITIALIZED | 0x14 | 已初始化 |
WDGM_E_NOT_DISABLED | 0x15 | WdgM 未禁用 |
WDGM_E_NULL_POINTER | 0x16 | 空指针 |
无(监督失败通过 Dem 报告为生产错误)。
无。
无(WdgM 不直接产生生产错误;监督失败由 Dem 报告)。
无。
Std_ReturnType(来自 Std_Types.h)Std_VersionInfoType(来自 Std_Types.h)WdgIf_ModeType(来自 WdgIf)| 类型 | 描述 |
|---|---|
WdgM_ConfigType | WdgM 配置结构(指向配置数据的指针) |
WdgM_ModeType | WdgM 模式枚举(WDGM_FAST_MODE/WDGM_SLOW_MODE/WDGM_OFF_MODE) |
WdgM_SupervisionStatusType | 监督状态枚举(WDGM_SupervisedEntity_OK/WDGM_SupervisedEntity_FAILED/WDGM_SupervisedEntity_EXPIRED/WDGM_SupervisedEntity_DEACTIVATED) |
WdgM_GlobalStatusType | 全局状态(WDGM_GLOBAL_STATUS_OK/WDGM_GLOBAL_STATUS_FAILED) |
WdgM_LocalStatusType | 本地状态(同上) |
WdgM_SEIdType | SE 标识符类型(uint16) |
WdgM_CheckpointIdType | 检查点 ID 类型(uint16) |
| API | 签名 | 功能 |
|---|---|---|
WdgM_Init | void WdgM_Init(const WdgM_ConfigType* ConfigPtr) | 初始化 WdgM |
WdgM_DeInit | void WdgM_DeInit(void) | 去初始化 WdgM |
WdgM_GetVersionInfo | void WdgM_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr) | 获取版本信息 |
WdgM_SetMode | Std_ReturnType WdgM_SetMode(WdgM_ModeType Mode) | 设置 WdgM 模式 |
WdgM_GetMode | WdgM_ModeType WdgM_GetMode(void) | 获取当前模式 |
WdgM_CheckpointReached | Std_ReturnType WdgM_CheckpointReached(WdgM_SEIdType SEID, WdgM_CheckpointIdType CheckpointID) | 报告 SE 达到检查点(用于 Alive/Logical 监督) |
WdgM_StartDeadline | Std_ReturnType WdgM_StartDeadline(WdgM_SEIdType SEID) | 开始截止期监督 |
WdgM_GetLocalStatus | WdgM_LocalStatusType WdgM_GetLocalStatus(WdgM_SEIdType SEID) | 获取 SE 本地状态 |
WdgM_GetGlobalStatus | WdgM_GlobalStatusType WdgM_GetGlobalStatus(void) | 获取全局状态 |
WdgM_PerformReset | void WdgM_PerformReset(void) | 主动执行 ECU 复位(可选) |
WdgM_GetFirstExpiredSEID | WdgM_SEIdType WdgM_GetFirstExpiredSEID(void) | 获取首个失败的 SE ID |
WdgM 提供以下回调:
WdgM_Trigger()(内部 API,WdgM 内部主函数调用以触发 WDG);Dem_SetEventStatus)。WdgM 提供主函数 WdgM_MainFunction(),应被 RTE 周期性调用(周期可配置,如 1ms、5ms、10ms)。该函数:
WdgIf_SetTriggerCondition() 触发 WDG。序列图描述 WdgM_Init 流程:
WdgM_Init();应用 SWC 在关键执行点调用 WdgM_CheckpointReached():
WdgM_CheckpointReached(SEID, CPID);WdgM 配置由大量 ECUC 容器与参数定义。核心容器:WdgM、WdgMConfigSet、WdgMMode、WdgMSupervisedEntity、WdgMAliveSupervision、WdgMDeadlineSupervision、WdgMLogicalSupervision、WdgMTrigger、WdgMPartition 等。
| 参数 | 描述 |
|---|---|
| WdgMDefensiveBehavior | 防御行为模式 |
| WdgMDevErrorDetect | 开发错误检测开关 |
| WdgMGetFirstExpiredSEIDApi | WdgM_GetFirstExpiredSEID() API 开关 |
| WdgMImmediateReset | 立即复位(主动)开关 |
| WdgMMainFunctionPeriod | 主函数周期 |
| WdgMModeSupport | 支持的模式 |
| WdgMOsApplicationOwner | 所属 OS-Application |
| WdgMPerformResetApi | WdgM_PerformReset() API 开关 |
| WdgMVersionInfoApi | WdgM_GetVersionInfo() API 开关 |
| 参数 | 描述 |
|---|---|
| WdgMSupervisedEntityId | SE ID(uint16) |
| WdgMEntityConfigSetRef | 配置集引用 |
| WdgMOsApplicationRef | 所属 OS-Application |
| 参数 | 描述 |
|---|---|
| WdgMAliveSupervisionEnabled | 活性监督使能 |
| WdgMExpectedAliveIndications | 预期指示数 |
| WdgMMaxMargin | 最大裕度(指示数) |
| WdgMMinMargin | 最小裕度(指示数) |
| WdgMSupervisionCycle | 监督周期(ms) |
| 参数 | 描述 |
|---|---|
| WdgMDeadlineSupervisionEnabled | 截止期监督使能 |
| WdgMDeadlineMax | 最大截止期(ms) |
| WdgMDeadlineMin | 最小截止期(ms) |
| 参数 | 描述 |
|---|---|
| WdgMLogicalSupervisionEnabled | 逻辑监督使能 |
| WdgMCheckPointId | 检查点 ID |
| 参数 | 描述 |
|---|---|
| WdgMModeId | 模式 ID |
| WdgMModeName | 模式名称 |
| WdgMTransition | 模式转换配置 |
| 参数 | 描述 |
|---|---|
| WdgMTriggerConditionValue | 触发条件值(timeout) |
| WdgMWatchdogDeviceRef | WDG 设备引用 |
| 参数 | 描述 |
|---|---|
| WdgMPartitionId | 分区 ID |
| WdgMAssignedSupervisedEntities | 分配的 SE 集合 |
| WdgMRestartBehavior | 重启行为 |
共 20+ 容器与 100+ 配置参数;完整列表见原文第 10 章。
本节列出来自 AUTOSAR_SRS_WatchdogDriver 但在 WdgM SWS 中不直接对应的需求(标 N/A)。WdgM 作为 WDG 上层抽象,本身不直接对应底层 WDG 驱动的所有需求。
校对轮次:L1 自动校对(2026-06-13)
WdgM_Init/DeInit/GetVersionInfo/SetMode/GetMode/CheckpointReached/StartDeadline/GetLocalStatus/GetGlobalStatus/PerformReset/GetFirstExpiredSEID;每个 API 含完整签名与功能描述。WDGM_E_PARAM_CONFIG=0x10/PARAM_MODE=0x11/PARAM_SEID=0x12/INV_STATE=0x13/ALREADY_INITIALIZED=0x14/NOT_DISABLED=0x15/NULL_POINTER=0x16 完整翻译。