SBC Watchdog 深度 — Simple / Window / Q&A + MCU 协同

功能安全L1别名 watchdog · window watchdog · Q&A watchdog · SBC watchdog · 看门狗 · challenge-response

本质与导读

本质 Watchdog 是 SBC 独立监视 MCU 是否真在按预期跑代码 —— 不是靠 MCU 自证。所以 ASIL D 主驱要上 Q&A WD:SBC 出题、MCU 算 CRC/查表后回答,验的是 CPU+Flash+算法链全活,而非只看喂狗 task 在跑。trip 时 SBC 直接拉硬件 STO 进 safe state、不经 MCU 决策,这才是 ASIL D 分解 channel B 物理/时钟/软件/电源四项独立的核心。

主线坐标:旁支 · 低压控制域 · ↑ 全景主线

1. 3 类看门狗协议

看门狗的本质都是"MCU 定时喂狗,超时则 reset",但喂的方式 + 验证深度决定保护强度。Simple 只看时间;Window 加时间窗口;Q&A 还验算法正确性。下图把三类时序 + Q&A 详细协议一次画清:

Watchdog 3 类协议 — Simple / Window / Q&A


2. Simple Watchdog

最基础形式:MCU 任何时间在 Tmax 内喂一次,WD 计数器 reset;超 Tmax 未喂 → WD trip → SBC 拉 nRESET。

实现:

void main_task(void) {
  while (1) {
    // application code...
    feed_watchdog();  // GPIO toggle 或 SPI write
    delay_ms(50);
  }
}

保护强度:

  • ✓ MCU 整体卡死 (CPU hang) → 喂狗 task 也停 → reset
  • ✗ 死循环里调 feed_watchdog():仍喂狗,WD 不 trip,application 实际挂了
  • ✗ stuck loop:也喂狗,WD 不查 application 在哪里

ASIL 上限 B。EV 主驱不够


3. Window Watchdog

升级版:喂狗必须在时间窗口 [Tmin, Tmax] 内,早喂也 trip

典型:

  • Tmin = 5 ms
  • Tmax = 15 ms
  • 喂狗时间窗口宽度 10 ms

实现:

void main_task(void) {
  uint32_t last_feed_us = get_time_us();
  while (1) {
    // application code...
    uint32_t now = get_time_us();
    if (now - last_feed_us >= T_MIN_US) {
      feed_watchdog();
      last_feed_us = now;
    }
    // 不在窗口内不喂
  }
}

保护强度:

  • ✓ 同 Simple WD
  • 防"死循环喂狗" — 死循环执行快,会早喂触发 reset
  • ✓ 防 stuck loop(任务慢 → 错过窗口)
  • ✗ 不能验"喂狗代码"是否真在 main task 里跑(还是被错误调度跑了)

ASIL 上限 C-D。EV 主驱够用但偏简单。


4. Q&A Watchdog (Challenge-Response)

最严:SBC 出题 → MCU 算 → 答。整个 protocol 验CPU + Flash + 算法真在执行。

典型 SBC (NXP FS65) Q&A 算法:

  • SBC 每 10 ms 生成 4-bit seed + 4-bit 计数器(合 8-bit Q)
  • MCU 必须用预存查表 + CRC + counter算出 16-bit response
  • SBC 比对 expected response,匹配 → 喂狗 + 下一题;不匹配 → 错次 +1
  • 连续 3 次错 → 拉 nRESET + STO

典型协议:

// MCU 端
void wd_task_10ms(void) {
  uint8_t Q = sbc_read_question();  // SPI 读 SBC
  uint16_t A = compute_answer(Q);    // 加密 / 查表 / CRC
  sbc_write_answer(A);
}

uint16_t compute_answer(uint8_t Q) {
  // 算法在 Flash table + RAM 状态
  uint8_t seed = (Q >> 4) & 0x0F;
  uint8_t counter = Q & 0x0F;
  uint16_t base = ANSWER_LUT[seed];
  return crc16(base + counter);  // 真涉及 Flash + RAM + CPU
}

保护强度:

  • ✓ Window WD 所有
  • 验 CPU 真在执行算法(死循环喂狗也算不对答案)
  • 验 Flash 完整性(LUT 数据正确)
  • 验 RAM 状态(counter 递增)
  • ✗ 仍不能验 application 逻辑正确(算法本身可能 bug)

ASIL 上限 D,EV 主驱 ASIL D 首选


5. 主流 SBC Q&A 协议 (2026)

下表汇总主流 SBC 内置 Q&A 协议特征:

SBCQ 长度A 长度周期算法
NXP FS658-bit16-bit10 msLUT + CRC8
Infineon TLF3558432-bit32-bit5-20 ms 可配多项式 + counter
TI TPS653814-bit4-bit50 msXOR + LUT
ST L97848-bit16-bit10 msCRC + seed
MPS MP2932简化 simple WD不支 Q&A,经济款

EV ASIL D 主流配对:TC397 + TLF35584 / S32K3 + FS65 — 都 Q&A。


6. Watchdog Trip 后的硬件反应

watchdog 错次达阈值 → SBC 不是只 reset,而是多硬件信号同时拉:

  1. nRESET 拉低 → MCU 复位 → 应用停
  2. STO pin 拉低 → 栅极驱动 IC 关栅 → 主驱 safe state
  3. FAIL_OUT pin 通知 VCU(可选)
  4. 内部状态机 进 FAULT 永久态 — 需重新上 12V 才能恢复

EV 主驱watchdog trip 直接拉硬件 STO,不靠 MCU 决策 — 这是 ASIL D 分解 channel B 的本质。

链接:SafeState Manager §3 2nd-Level


7. 调试常见问题

EV PEU 开发中 watchdog 是最容易 debug 失败的模块。下表 5 个反复出现的:

7.1 Q&A 算法 mismatch

MCU 端算法跟 SBC 期望不一致(版本 / 多项式 / seed 用错) → 量产瞬间所有 ECU watchdog trip。

对策:

  • 用 SBC 厂商的 reference C code(NXP / Infineon 都给)
  • 集成测试覆盖 Q&A 至少 1000 个不同 seed

7.2 timing 不够

MCU 算 Q→A 时间超过 SBC timeout(典型 ≤ 100 μs)→ 假 fail。

对策:

  • profile MCU 算法时间,留 50% margin
  • 把 LUT 放 Flash 0 wait state 区
  • 关键算法 inline,避免函数调用开销

7.3 SPI bus 失常

Q&A 通过 SPI 通讯,SPI bus 错(CRC / 通讯丢)→ 假 fail。

对策:

  • SPI 走线短 + 屏蔽
  • 每 Q&A 帧带 CRC + retransmit (但要避免延误 timeout)

7.4 多任务调度抢占

RTOS 下 wd task 被高优先级中断抢占 → 没及时回答 → fail。

对策:

  • wd task 设最高优先级
  • 关键中断不超过 50 μs

7.5 单元测试缺失

集成测试不模拟 watchdog fail → 量产后无 way to test → 真 fail 时 reaction 错。

对策:

  • 必有"unit test: SBC fault injection 模拟 Q answer wrong"
  • HIL 测试包 Q&A 故障 scenario

8. ASIL D DFA 中 watchdog 的角色

ASIL D = B(D) + B(D) 分解时,SBC Q&A WD 是 channel B 的核心:

  • channel A:主 MCU 双核 lockstep(开发 B 等级)
  • channel B:SBC + Q&A WD + STO 硬件(开发 B 等级)

DFA 4 项独立性证据(见 topic-asil-decomposition-deep §3):

  1. 物理独立:SBC 单独 IC,独立 LDO
  2. 时钟独立:SBC 内部时钟,不共享 MCU 时钟
  3. 软件独立:Q&A 算法跑 SBC 内部 ROM,跟 MCU SW 完全分离
  4. 电源独立:12V → SBC 独立 buck,不共享 MCU 主 power

watchdog 是 SBC 监视 MCU 的主要手段,SBC 自身不需要被 MCU 监视(双向不对称是 OK 的)。


9. 设计参数速查

EV 主驱 ASIL D Q&A WD 典型参数:

参数典型值来源
Q 长度8-16 bitSBC datasheet
A 长度16-32 bitSBC datasheet
Q&A 周期10 ms项目级配置
MCU 算法时间< 100 μsprofile,SBC timeout 决定
错次阈值3 次SBC 内部 (部分可配)
Trip 反应时间< 1 μs (硬件)SBC datasheet
FTTI< 100 ms (整链)ISO 26262 + HARA 决定

10. 5 个工程陷阱

watchdog 设计失败往往不是协议本身,而是配置 / timing / 测试 4 类问题。下表 5 个典型坑:

陷阱描述预防
Simple WD 用于 ASIL D防不了死循环必上 Q&A
MCU 算法太慢timeout failprofile + LUT inline
Q&A 算法 mismatch量产瞬间所有 ECU trip用 vendor ref code + 集成测试
WD task 被中断抢占假 failtask 最高优先级 + IRQ < 50μs
没 HIL 测试 WD trip量产 fail 才发现FI test 必涵盖

核心要点

  • 3 类 WD:Simple (ASIL B 上限) / Window (ASIL C-D) / Q&A (ASIL D 首选)
  • Q&A protocol 让 SBC 验 CPU + Flash + RAM + 算法链 真在跑,Simple WD 不行。
  • EV 主驱 ASIL D 必 Q&A,典型 10ms 一轮 + 3 次错阈值 + 硬件 STO 反应。
  • 主流 SBC:FS65 + TLF35584 + TPS65381 全内置 Q&A。
  • WD trip 直接拉 STO 硬件 pin,不靠 MCU 决策 — ASIL D 分解 channel B 的本质。
  • DFA 4 项独立性:物理 / 时钟 / 软件 / 电源 必证。
  • 5 个工程陷阱集中在 配置 + timing + 算法 mismatch + 测试,代码逻辑反而少。

缩写表

只列本页用到的工业标准缩写;通用英语…

只列本页用到的工业标准缩写;通用英语 / 单位 / 月份 / 我们的 层/Lx tag 不列。覆盖不到的术语见正文 inline 注释。

缩写全称中文 / 备注
SBCSystem Basis Chip系统基础芯片(电源 + 收发器 + 监控集成)
MCUMicrocontroller Unit微控制器(本页多指车规多核 MCU)
STOSafe Torque Off安全转矩关闭 (IEC 61800-5-2)
NXPNXP Semiconductors恩智浦半导体
TITexas Instruments德州仪器
ISOInternational Organization for Standardization国际标准化组织
EVElectric Vehicle电动车
ASILAutomotive Safety Integrity LevelISO 26262 安全完整性等级 QM→A→B→C→D
DFADependent Failure Analysis相关失效分析(ISO 26262-9)
STSTMicroelectronics意法半导体
VCUVehicle Control Unit整车控制器
ECUElectronic Control Unit电子控制单元
SPISerial Peripheral Interface串行外设接口
RTOSReal-Time Operating System实时操作系统
LDOLow Dropout Regulator低压差线性稳压器
FTTIFault Tolerant Time Interval容错时间间隔
HARAHazard Analysis and Risk Assessment危害分析与风险评估,part 3
FMEDAFailure Modes, Effects and Diagnostic Analysis含诊断覆盖的 FMEA

Cross-references