e-GAS 三层监控架构 — Powertrain / EV 的 ASIL-D 骨架
本质与导读
本质 e-GAS 的三层监控源于德国汽车工业为防"意外加速"(unintended acceleration)的标准化安全架构,如今所有 ASIL-D 动力总成 ECU 都沿用同一骨架。核心是三套独立的故障假设、检测与 safe state 切换:L1 主功能、L2 用简化算法独立验证 L1、L3 用外部 SBC 监控整个 MCU 是否还活着。ISO 26262 未明文要求三层,但工业界默认 ASIL-D = 三层,因为只有这样才能同时覆盖 systematic 与 random 失效。
核心要点
- 三层 = 三种独立故障假设 — L1 应用代码错 / L2 内存翻转 / L3 整 MCU 死
- L2(TMS)是 e-GAS 的精髓 — 在同一 MCU 上跑"驾驶员意图"简化模型,交叉验证 L1 输出
- L3 = SBC + Q&A WD — 物理独立芯片 + 问答式看门狗,捕获 MCU 卡死 / 时钟错 / clock-storm
- FFI 是关键挑战 — L1 / L2 同一芯片,要靠 MPU + 不同 task period + 不同 ADC channel 实现 freedom from interference
- ASIL 分配:L1 = QM~ASIL-B,L2 = ASIL-D,L3 = ASIL-D(SBC 硬件资质)
- 典型 PFH < /h — 三层组合达到 ISO 26262 ASIL-D 随机硬件失效目标
- 历史标准:AKEG (Arbeitskreis EGAS) 工作组 v6.0 (2015),Bosch / VW / BMW / Daimler / Audi 共同制定
1. 历史背景 — 为什么会有 e-GAS
1990 年代电子节气门(drive-by-wire throttle)取代机械拉线时,安全工程师面临前所未有的问题:软件 bug 可以直接造成 100% 油门。机械拉线时代,司机松脚就一定收油,而电子节气门一切由 ECU 软件决定。2002-2005 年间欧洲多起"意外加速"事件,促使 Bosch 主导、VW/BMW/Daimler 参与的 AKEG (Arbeitskreis EGAS) 工作组在 2003 年发布第一版三层监控概念,2015 年定到 v6.0。
虽然 e-GAS 表面只是"节气门安全",它的真正贡献是把"如何在不可信的复杂软件上构建可信子系统"这个问题给出了工程答案。这套答案后来被 ISO 26262 第 5/6 部分内化为标准做法,也被 AUTOSAR Powertrain Profile 和所有现代 EV inverter / BMS / EPS 沿用。
e-GAS ≠ ISO 26262…
e-GAS ≠ ISO 26262 e-GAS 是架构模式(具体怎么搭),ISO 26262 是流程标准(怎么开发)。两者不冲突 —— e-GAS 提供了 ISO 26262 ASIL-D 最常见的实现样式,但不是唯一。也有 lockstep dual-core(双核同步比对)作为替代方案,代价是芯片成本翻倍。
2. 三层总览
整个架构看一张图就清楚:
三层各自负责一种故障检测,它们的输入、算法、芯片资源都尽可能独立,这样才能保证"任何一层失效时,其他两层独立工作把系统切到 safe state"。
| 层 | 位置 | 角色 | 代码量 | ASIL |
|---|---|---|---|---|
| L1 | 主 MCU | 完整 powertrain 功能 | ~ 95% | QM ~ ASIL-B |
| L2 | 主 MCU(独立 task) | 扭矩监控 TMS | ~ 5% | ASIL-D |
| L3 | 外部 SBC | 整 MCU 健康监控 | 固件 | ASIL-D(硬件资质) |
注意 L1 的 ASIL 标 "QM ~ ASIL-B" 而不是更高 —— 这是 ASIL 分解 的力量:L1 通过 L2 监控被"提升"到等效 ASIL-D 系统级别,而 L1 自己可以以较低的 ASIL 开发,大幅降低成本。详见 topic-asil-decomposition。
3. Level 1 — 主功能(可能 buggy)
Level 1 承载完整的 powertrain 控制策略 —— 油门解析 / map / PID / 动态补偿 / 能量回收 / OBD 等所有"看得见"的功能。它的代码量大、依赖第三方库、需要频繁标定迭代 —— 这些特征注定它不可能做到 ASIL-D 流程(那样开发成本会十倍化)。
L1 自己做基本的输入检测:
- range check — 每个 sensor 读数在合理范围
- rationality check — 多源交叉检查(双 pedal 误差 < 5%)
- sensor diagnostic — 短路 / 开路 / 卡值检测
但 L1 不验证自己的输出 —— 那是 L2 的责任。L1 检测到 sensor fault 时,典型反应是 降级运行(limp-home,扭矩限制 30%,转速限制 3000 rpm)+ 写 DTC + 点 MIL 灯。
4. Level 2 — TMS(扭矩监控系统)— e-GAS 的精髓
Level 2 是整个架构最值得理解的部分。它和 L1 跑在同一 MCU上,但执行完全独立的任务:计算驾驶员意图允许的扭矩上限 ,然后验证 L1 输出的 不超过它。
4.1 输入精简 — 仅 pedal + brake
L2 故意只用最少、最可信的输入:
- 加速踏板(独立 ADC channel,与 L1 共享物理传感器但 ADC 路径独立)
- 制动开关(物理触点,高可信)
- gear lever 位置(P/R/N/D)
4.2 算法极简 — 线性映射 + 安全余量
L2 的核心算法是一个分段线性 / 查表的"驾驶员意图模型":
其中 是简化版的 driver intent map, 是 - 的安全余量,确保 L1 在正常工况下不会被 L2 误判。
特殊规则:
- brake override:任何 brake-on → (无条件)
- direction lock:gear = P/N →
- OEM-specific clamp:某些主机厂要求倒车扭矩 <
4.3 交叉验证 — 不等不行,等多了也不行
每个周期,L2 算出 ,与 L1 输出的 比较:
是"误判防抖"阈值(典型 -), 是连续违例时间(典型 -)—— 避免单次 noise 触发误关 inverter。
L2 检测到 fault 后:MCU 自己 cut PWM 输出 / 切到 fail-silent state / 等 MCU reset。L2 不直接关电源(那是 L3 的事)。
4.4 FFI — 同一 MCU 如何独立?
这是 e-GAS 最巧妙的部分。L1 / L2 都在同一颗 MCU 上,但通过多重隔离实现 freedom from interference:
| 维度 | 实现 |
|---|---|
| 空间隔离 | MPU 划分 RAM/ROM 区,L1/L2 不能互写 |
| 时间隔离 | OS time-slice,L1 = 1 ms / L2 = 5 ms 不同 task |
| 数据隔离 | 独立 ADC channel / 独立 CAN handler / 独立 EEPROM region |
| 代码隔离 | L2 用独立 compiler 选项 / 独立单元测试 / 形式化验证 |
| 时钟隔离 | L2 周期由独立 timer(STM1)触发,不依赖 L1 中断链;但片内 timer 仍共享 MCU 时钟树——主时钟失效这一共因只能靠 L3 外部 WD 覆盖(TLF35584 独立内部振荡器) |
典型 MCU 资源占比:L2 用 < 5% CPU + < 10% RAM,但开发成本占整个 ECU 软件的 30-40%(因为 ASIL-D 流程贵)。
5. Level 3 — SBC Q&A Watchdog
L1 和 L2 都是软件,任何软件都依赖底层硬件正常工作。如果 MCU 本身死机(clock 错 / 内存 ECC 错 / 中断风暴 / 电源故障),L1 / L2 一起失效 —— 这时候必须有"外部观察者"判断 MCU 还活着没。这就是 Level 3 的角色,由物理独立的 SBC(System Basis Chip)承担。
5.1 Q&A WD vs 普通 WD
普通 watchdog 只要 MCU 定时 "kick" 一次就 OK —— 但这无法检测程序卡在错误循环里也定时 kick 的情况。Q&A WD 引入"挑战-应答":
- SBC 用 LFSR + counter 生成 question
- MCU 读 ,运行约定的函数 ,算出 answer
- MCU 在指定 timing window 内 SPI 写回
- SBC 验证 是否正确
错答 / 早答 / 晚答 都算 fault。 函数必须包含程序执行流程的状态(如关键 task 完成标志),这样卡死的程序无法算出正确 answer。
5.2 window-based timing
时间窗约束是关键:
- closed window(前段):MCU 不应该 refresh,过早 = fault
- open window(中段):MCU 必须 refresh
- 错过 open window = too late = fault
这样**任何"卡循环导致提前 refresh"或"任务挂起导致漏 refresh"**都被精确检测。
5.3 INIT_FS 与运行容忍
上电启动时,MCU 还在初始化,可能错过几次 Q&A —— SBC 允许 7 次连续错误(INIT_FS 阶段)。运行中容忍下降到 3 次 —— 任何 3 次错答触发 RSTB(MCU reset)+ 重新进入 INIT_FS。
如果 reset 后连续多轮 INIT_FS 失败,SBC 拉 FS0B (fail-safe output B) 低,直接关 gate driver power,整车进 fail-safe 状态。WDT 详细原理与 SBC 实现见 topic-sbc-mc33907-design。
6. 三种 powertrain 映射
e-GAS 框架在不同动力系统中的具体实现:
6.1 燃油 ICE — 原始出发点
控制变量 = throttle 角度。
- L1:油门 + 转速 → throttle map + 喷油 + 点火
- L2:油门 → 允许 throttle 上限, → fault
- L3:SBC 关 throttle motor 电源 → throttle 弹簧复位到 ICE 怠速位
ICE 的优势是有机械备份(throttle 复位弹簧),即使整个 ECU 死机,机械结构自动回到安全状态。
6.2 混动 HEV / PHEV — 双源扭矩
控制变量 = 。
- L1:复杂能量分配(发动机 + 电机)+ 充放电策略
- L2:油门 → 总驱动扭矩上限 , → fault
- L3:SBC 在 HCU(混动控制器)+ MCU 双方,关 inverter PWM + ICE 进 limp-home
混动复杂之处在于两个扭矩源都要算到总和里,任何一方失控都可能造成总扭矩超限。L2 必须能同时拿到 ICE 和 motor 的"声明扭矩"做加总验证。
6.3 纯电 BEV — 最严格
控制变量 = (电机磁链)。
- L1:FOC + MTPA + 弱磁 + SVPWM
- L2:油门 → , → ASC(三相短路 / Active Short Circuit)
- L3:SBC 关 gate driver power → 全部 SiC MOS OFF → free-wheel diode 续流
BEV 没有机械备份 —— 一旦 inverter 失控,唯一的安全状态是 ASC(三相短路)或 FW(自由轮),具体选哪个根据车速:
- 低速(< 50 km/h):FW 安全(free-wheel,电机被动旋转无扭矩)
- 高速(> 50 km/h):ASC 安全(三相短路,电机产生制动扭矩防超速)
详见 topic-asil-d-case-studies 中的 EV inverter 安全状态切换。
7. unintended acceleration — 三层共同对抗的核心故障
e-GAS 设计的核心 use case 是"意外加速",即驾驶员没踩油门,车却加速。下面给出 4 类故障假设,展示三层如何协同:
| 假设 | 故障描述 | 哪一层捕获 |
|---|---|---|
| 1 | pedal 物理卡住 100% | 检不出 — pedal 信号本身正确,car 应该加速 |
| 2 | L1 输出 80% 扭矩但 pedal = 0% | L2 — TMS 检测 |
| 3 | MCU 死机 / clock 错 | L3 — Q&A WD 失败 → FS0B |
| 4 | SBC 自己坏 | MCU 反查 SBC heartbeat + 两 SBC 互监 |
假设 1 不属于 ECU 责任(机械故障),其他三类都被三层覆盖。
假设 4 — SBC 自己坏怎么办…
假设 4 — SBC 自己坏怎么办 ISO 26262 要求 ASIL-D 系统对所有元件做单点失效分析。SBC 自身故障的检测靠两条:(a) MCU 定期读 SBC status register,任何不一致 → MCU 直接进 safe state;(b) 高端方案用两颗 SBC 互监(罕见,成本高,仅航空 / 国防 / 大客)。Tesla / 比亚迪 / 宁德 EV 主流方案是 (a),配合 SBC 出厂级 ISO 26262 ASIL-D 认证。
8. ASIL 分配实战
e-GAS 三层在 ASIL 分解中的典型分配:
| 系统目标 | ASIL | 拆解到 |
|---|---|---|
| 防止 unintended acceleration | ASIL-D | L1 (ASIL-B) + L2 (ASIL-D) |
| 防止 MCU 死机 → 黑屏 | ASIL-D | L3 (ASIL-D) |
| OBD 诊断完整性 | ASIL-A | L1 |
| Functional 标定一致性 | QM | L1 |
此分配对应 ISO 26262-9:2018 §5.4.9(Figure 2)的 D(D) + QM(D) 方案:监控通道 L2 承 D(D),功能通道 L1 形式上只需 QM(D)——本设计按 ASIL-B 开发 L1,以同时覆盖 OBD(ASIL-A)等其他目标;两通道独立由 FFI 保证。监控式架构中,D 的开发严格性落在监控层——这正是 L2 代码量 <5% 却占开发成本 30-40% 的原因。
具体到开发流程:
9. 常见误区
工程实践中最常见的几个错误,绝大多数源于"没理解三层独立性的根本目的"。下面 6 条来自实际项目复盘和 ISO 26262 audit 反馈。
- ❌ "L2 算法越复杂越好" — 恰恰相反,L2 必须简单到可以形式化验证。复杂 L2 = 失去 L2 的意义
- ❌ "L1 和 L2 共享 driver intent map" — 必须独立 map,否则 map 错误同时影响两层
- ❌ "L3 用 MCU 内部 WDT 就够" — 内部 WDT 在 MCU 故障时也会失效,必须外部 SBC
- ❌ "三层都用同一个时钟源" — clock 错时三层一起死,L3 必须独立 oscillator
- ❌ "QM ASIL-B 等于 ASIL-D" — 不对,ASIL 分解要求 FFI + 独立性证明,不是数学加法
- ❌ "lockstep 双核可以替代三层" — lockstep 解决随机失效,但不解决 systematic(软件 bug)失效。需要双核 + 独立软件版本 才等价 e-GAS
10. 工程 cheat-sheet
下表压缩 e-GAS 在产品开发中的关键决策点,按时间顺序排列。
| 阶段 | 决策点 | 推荐做法 |
|---|---|---|
| 概念 | 选 e-GAS vs lockstep | 单 MCU + SBC = e-GAS(主流);双核 lockstep = 大功率高安全 |
| 概念 | ASIL 等级 | 动力 = ASIL-D;辅助 = ASIL-B/C |
| 架构 | 选 SBC | NXP MC33907_8(主流)/ TI TPS65381 / ST L9788 |
| 架构 | L2 算法策略 | 分段线性映射 + brake override + 5-10% margin |
| 软件 | L1/L2 隔离 | MPU + 不同 task period + 独立 ADC + 独立 timer |
| 软件 | L2 验证 | 100% MC/DC + 形式化验证 / 独立 reviewer |
| 集成 | Q&A WD 参数 | INIT_FS 7× / 运行 3× / window 5-10 ms |
| 测试 | fault injection | 软件 bit-flip / clock stuck / SBC SPI error |
| 认证 | 文档 | ISO 26262 Part 9 ASIL 分解 work product |
11. 自检题
按章节顺序的 10 题,前 4 题考三层角色,5-7 考 FFI + Q&A,8-10 考 ASIL 分配 + EV 应用。
- e-GAS 全称是什么?哪个工作组制定?
- Level 1 / 2 / 3 的代码量比例约为多少?ASIL 等级分别是?
- 为什么 L2 算法必须简单,不能用复杂 PID?
- brake override 在 L2 是怎么实现的?为什么用物理开关而非 CAN?
- 同一 MCU 上的 L1 / L2 通过哪 5 种维度实现 FFI?
- Q&A WD 的 closed window 和 open window 各自含义?
- INIT_FS 阶段允许 7 次错答,运行中允许几次?为什么不同?
- ASIL-D = ASIL-B + ASIL-D(ASIL-B) 的合理性?需要满足什么前提?
- BEV 失控时,低速和高速的 safe state 各是什么?
- lockstep 双核能否完全替代 e-GAS?有哪个 ASIL 维度不覆盖?
12. Worked Design — 400V/100kW BEV 主驱 e-GAS 三层实现(TC397 + TLF35584 + 1EDI3035AS)
本节给出与本 wiki 功能安全域同一标准参考平台的 e-GAS 三层端到端工程实现,所有器件参数与 FTTI 数字均与 topic-asil-d-case-studies §7 和 topic-iso26262-part4-system TSC 示例交叉对齐,可独立复核。
12.1 系统配置
此系统以 TC397 双核锁步对(CPU0/1)承载 L2 TMS,CPU2-5 承载 L1 FOC,TLF35584 作 L3 外部看门狗。
| 层 | 器件 | ASIL | 关键参数 |
|---|---|---|---|
| L1(FOC 主控) | TC397 CPU2-5 | ASIL B | FOC/SVPWM;1ms 任务周期 |
| L2(TMS 监控) | TC397 CPU0/1(Lockstep) | ASIL D | 10ms 任务;独立 ADC 路径、MPU 分区、STM1 timer |
| L3(MCU 健康) | TLF35584QKVS2 | ASIL D | Q&A WD window 10ms(典型值);INIT_FS 7次/运行 3次 |
| 栅驱/保护 | 1EDI3035AS ×6 | ASIL D | DESAT 保护;FS0B→PWM_DIS 有效延迟 ≤200μs |
| 功率级 | SCT3080AL ×6 | — | 650V/80mΩ SiC |
L1/L2 的 Freedom from Interference 通过硬件 MPU 强制 RAM 分区、L1/L2 分别使用 APP_PEDAL1/APP_PEDAL2 独立 ADC 通道、以及分属 STM0/STM1 的独立定时器实现,详见 topic-freedom-from-interference §9 TC397 MPU 映射表。
12.2 FTTI 时序预算(200ms)
HARA 给出安全目标"防止 BEV 意外加速(ASIL D)"的 FTTI = 200ms;两条独立检测路径均须在此窗口内完成检测并进入 safe state。
| 路径 | 检测时间 | 反应时间 | 合计 |
|---|---|---|---|
| L2 检测 L1 扭矩输出超限 | 10ms × 3 周期去抖 = 30ms | SBC SPI 帧 ~4μs + FS0B <1ms + PWM_DIS ≤200μs ≈ 5ms | 35ms |
| L3 检测 MCU 整体卡死 | 10ms × 3 次漏答 = 30ms | FS0B 反应 <1ms + PWM_DIS ≤200μs ≈ 1.2ms | 31.2ms |
裕量:L2 路径余量 ms(为路径时间的 4.7 倍),L3 路径余量 ms(为路径时间的 5.4 倍)。两路均远优于 FTTI,满足 ISO 26262-4 §6 "FTTI - FDTI ≥ FRTI" 要求。
L2 对 L1 的扭矩偏差阈值:偏差 > 5% 持续 3 个 10ms 周期(30ms)触发故障——与 topic-iso26262-part4-system TSC 示例一致。
12.3 ASIL 分解形式验证(ISO 26262-9 §5.4.9)
e-GAS 三层对应 ISO 26262-9 的两级独立要求,第一级是通道分解,第二级是独立于通道的 MCU 整体监控。
第一级分解(ISO 26262-9:2018 §5.4.9/Figure 2,D(D)+QM(D) 方案):安全目标 ASIL D = 功能通道(L1,形式要求 QM(D),本设计实际按 ASIL B 开发)‖ 监控通道(L2,ASIL D(D));独立性前提为 FFI 经 §12.1 的硬件措施保证。括号内 D 为上层继承的安全目标 ASIL。监控式架构里 D 的严格性落在 L2 —— 与 §8 分配表、§12.1 器件表及 L2 的 MC/DC + 形式化验证流程一致。
第二级覆盖(L3,非分解要求):TLF35584 Q&A WDT 覆盖"L1+L2 整个 MCU 死机"这一共因场景,确保 L1/L2 同时失效时系统仍能切换到 safe state。
TLF35584 FMEDA 参数(来源:topic-asil-d-case-studies §7.5 真实器件数字):λ = 0.8 FIT,DC = 99%,残余 λ_res = 0.008 FIT。此 WDT 路径残余 < 0.01 FIT,满足 ASIL D 单路径 PMHF ≤ 10 FIT 要求。
12.4 safe state 切换顺序(< 5ms)
两条 safe state 路径覆盖不同故障层面,互相补充而非冗余。
软件路径(L2 检测 L1 超限):L2 TMS fault → TC397 CPU0 SMU alarm → SMU 在 1μs 内驱动 Safe-Out → SPI 帧 ~4μs 写 TLF35584 → TLF35584 停止喂狗 → FS0B 拉低(<1ms) → 1EDI3035AS PWM_DIS ≤200μs → SCT3080AL 完全关断。
硬件路径(L3 Q&A 超时):连续 3 次漏答 → TLF35584 RSTB 拉低(MCU reset)+ FS0B 同步拉低(<1ms) → 1EDI3035AS PWM_DIS 有效 → SCT3080AL 关断。
高速(> 50km/h)场景改 ASC(三相主动短路)而非高阻浮空,转速阈值推导见 topic-asil-d-case-studies §2.4。
13. Gotcha 链
13.1 TLF35584 5V 供电共轨 — DFA CCF 致命
L1 CPU 和 L2 CPU(Lockstep)共用 TLF35584 同一 5V 轨时,整车起动电池骤降或 12V 短暂掉电可使两路同步失效。此时 ASIL D 分解独立性归零,SPFM 实际 ≈ 50% 而 FMEDA 纸面仍显示 99%。根因:DFA 未枚举此 CCF 路径。修法:Monitor 路径(L2 CPU)单独接保持电容 Chold 确保 VCC 短暂跌落期间续跑 ≥10ms;FMEDA β 回填实测 β 值。此例见 topic-asil-d-case-studies §8.2 作为 DFA 典型失误。
13.2 INIT_FS 期间监控空窗漏计
TLF35584 的 INIT_FS 阶段允许 7 次连续漏答,若 MCU 在行驶中 reset(非冷启),7 × 10ms = 70ms 的监控宽容期必须纳入 FDTI 预算。系统工程师往往只算"正常运行"的 Q&A 3次窗口,忽略热复位后重新进入 INIT_FS 这一边界场景。修法:在 Safety Concept 中明确"行驶中 reset → FDTI = INIT_FS 时间 + 3窗口时间 ≤ FTTI - FRTI"。
13.3 L2 引用 L1 共享代码库 — systematic 错误共因
L2 TMS 为节省开发成本借用 L1 的 motor model 库或 CAN 解析库时,L1 的软件 bug 同时污染 L2。两层用同一套输入处理代码→同一 bug 导致两层同时给出错误扭矩上限→安全架构形同虚设。根因:FFI 软件维度(代码隔离)未满足 ISO 26262-6 §7.4.16 独立开发要求。修法:L2 必须有独立编译单元、独立 reviewer、独立 unit test;禁止 #include L1 功能头文件。
13.4 普通窗口 WDT 替代 Q&A WDT — 漏检程序跑飞
普通窗口看门狗只需 MCU 在时间窗内发送任意 kick 信号即可续命;程序跑飞进死循环但 ISR 仍定时 kick 时,窗口 WDT 无法区分"正常运行"和"跑飞但 ISR 活着"。Q&A WDT 要求答案包含执行流程状态(关键 task 完成标志),死循环中算不出正确答案。ASIL D 应用强制 Q&A WDT;混用窗口 WDT 会被 ISO 26262 Part 5 FMEDA 审计揪出,SM DC 从 99% 降到 ≈ 60%。
13.5 Q&A window 过宽 — 卡循环不被检测
window 配置为 1024ms 时,MCU 卡在 100ms 内的错误循环中仍能在窗口内给出正确答案。ASIL D 应用典型 window 为 5-20ms(对应 5ms-20ms 任务周期);超过 FTTI/10 的 window 需专项论证。TLF35584 支持 1ms-1024ms 可配置;项目配置必须写入 Safety Plan 并被 FMEA 验证。
13.6 TC397 内部 WDT 替代外部 TLF35584 — L3 独立性丧失
TC397 内部 WDT(STM + SMU)依赖 MCU 时钟和电源正常工作——MCU 电源失效、时钟失锁或 ECC 死机时内部 WDT 同步失效。L3 的存在意义正是"物理独立于被监控的 MCU"(外部独立 oscillator + 独立 VCC)。以内部 WDT 充当 L3 等于把检测器和被检测对象放在同一故障域——ISO 26262 FMEDA 将此整条 L3 路径标为 SPFM = 0。
14. Corner
14.1 冷启(-40°C)时钟漂移 — Q&A window 需额外裕量
TLF35584 内部 RC 振荡器在 -40°C 时频率偏移可达 ±20%。若 Q&A window = 10ms,实际窗口在极低温下可能仅 8ms;而 TC397 内部 STM 同样受晶振初始精度影响,导致"MCU 认为在时间窗内 kick"但 SBC 判断超时。应对:将 Q&A window 设为标称 L2 任务周期的 2×以上(如任务 5ms → window 10ms);在 Safety Analysis 中将 ±20% 时钟漂移作为最恶劣场景验证。
14.2 TC397 Lockstep compare error — 区分 L2 bug 与 transient 翻转
Lockstep CPU0/CPU1 比对失败(FCCU fault)既可能是 L2 TMS bug(systematic 错误),也可能是单粒子翻转(transient random)。直接进入 safe state 会导致误退出;重试(retry-on-error)机制若次数过多则超出 FTTI。策略:单次 compare error → SMU capture + 1 次 CPU reset 重试(占用 FDTI < 10ms);重试后再次 compare error → 确认为 systematic → 立即进 safe state,不再尝试。此双阶策略须在 FTA 中枚举 transient 频率(SER,软错误率)与 FTTI 裕量的关系。
14.3 多次 INIT_FS 失败后 TLF35584 永久 LATCH
TLF35584 连续多轮进 INIT_FS 后仍无法通过 Q&A(如 MCU 固件损坏)时,TLF35584 进入 LATCH 状态:FS0B 永久拉低,RSTB 持续低电平。此状态不能通过 MCU reset 解除,必须整车断电(VCC 掉至阈值以下)。现场表现为"车辆点火后一直无法起步,断电重试"。Safety Concept 应在 FTA 中标注此 LATCH 失效模式为 Safe State(系统停止即为安全),并在用户手册中要求整车断电 >5s 作为恢复程序。
Cross-references
- ← 索引
- topic-functional-safety — ISO 26262 总体流程
- topic-asil-decomposition — ASIL 分解规则与 e-GAS 的关系
- topic-functional-safety-chip-selection — SBC 与 MCU 选型
- topic-sbc-mc33907-design — Level 3 SBC 硬件实现(NXP MC33907_8)
- topic-ev-safety-development-flow — EV 整车功能安全开发流程
- topic-asil-d-case-studies — ASIL-D 工程实例(含 e-GAS 应用)+ FMEDA 参数 SSOT
- topic-current-sensing-safety — TMS 的 motor 电流测量冗余
- topic-freedom-from-interference — TC397 MPU 分区与 L1/L2 FFI 验证
- topic-iso26262-part4-system — TSC 扭矩偏差阈值与 FTTI 时序示例