功能安全 ISO 26262 工程实践

ISO 26262 功能安全工程落地:ASIL 分级与 HARA 危害分析、安全目标与功能安全概念、技术安全需求与架构设计、看门狗与锁步核与 E2E 等安全机制、软件安全度量与 MISRA 约束、FMEA 与 FTA 分析、安全案例与验证确认,以及 SOTIF 预期功能安全的边界与落地。

引言

ISO 26262 是汽车电子的功能安全标准,2011 年首版,2018 年第二版扩展到摩托车并把范围从乘用车放宽到所有道路车辆。它的核心逻辑很清晰:先识别「什么危险」,再评估「危险多严重」,据此定「安全等级(ASIL)」,最后用相应强度的手段把风险降到可接受水平。

功能安全的难点不在标准条文(条文是清晰的),而在「如何证明做到了」。它要求全生命周期的追溯链:从危害 → 安全目标 → 功能安全需求 → 技术安全需求 → 实现 → 验证证据,每一环都要可追溯。这不是「写文档」,而是「让安全可论证」。

对软件工程师而言,26262 意味着具体约束:语言子集(MISRA C)、无动态内存、覆盖率要求(ASIL D 要求 MC/DC 100%)、安全机制(看门狗、E2E、锁步核)、以及严格的变更管理。这些约束会显著增加工作量,但正是「确定性」的代价。本文按工程落地顺序拆解。

目录

  1. ISO 26262 概览与 ASIL 分级
  2. 危害分析与风险评估 HARA
  3. 安全目标与功能安全概念
  4. 技术安全需求与架构设计
  5. 安全机制:看门狗、锁步核与 E2E
  6. 软件安全开发与度量
  7. 安全分析 FMEA 与 FTA
  8. 验证确认与安全案例
  9. SOTIF 预期功能安全

1. ISO 26262 概览与 ASIL 分级

26262 覆盖从概念到报废的全生命周期,分 12 个部分:

Part 1  词汇
Part 2  功能安全管理
Part 3  概念阶段(HARA、安全目标)
Part 4  系统层开发(技术安全需求)
Part 5  硬件层开发
Part 6  软件层开发
Part 7  生产与运行
Part 8  支持过程(配置管理、变更管理)
Part 9  ASIL 导向与安全分析
Part 10 指南
Part 11 半导体应用
Part 12 摩托车

ASIL 分级(Automotive Safety Integrity Level):
  ASIL A:最低(如后视镜调节)
  ASIL B
  ASIL C
  ASIL D:最高(如制动、转向、安全气囊)
  QM:非安全相关(Quality Management)

  由三个维度决定:
    S(Severity,严重度):S0~S3
    E(Exposure,暴露度):E0~E4
    C(Controllability,可控性):C0~C3

  组合映射到 ASIL:
    S3 + E4 + C3 → ASIL D
    S1 + E1 + C1 → ASIL A
    含 S0/E0/C0 或 S1+E1+C1 以下 → QM

ASIL 等级直接决定开发强度:ASIL D 要求最严格的覆盖率、最完整的安全机制、最高的诊断覆盖率(硬件 SPFM ≥ 99%、LFM ≥ 90%)。

2. 危害分析与风险评估 HARA

HARA 是功能安全的起点,输出安全目标:

HARA 步骤:
  1. 定义 Item(待分析的系统,如电子驻车制动)
  2. 定义功能(Function)与故障行为
  3. 识别 Malfunction(故障行为导致的危害)
     如「EPB 意外释放」→ 车辆溜车
  4. 评估 S / E / C
  5. 得出 ASIL
  6. 定义安全目标(Safety Goal)

示例(EPB 意外释放):
  危害:车辆在坡道驻车时意外释放制动
  S3:可能造成人员伤亡
  E4:驻车是常见场景(高暴露)
  C3:驾驶员几乎无法控制(不可控)
  → ASIL D

安全目标:
  「EPB 不应在未收到驾驶员指令时释放」
  ASIL D
  FTTI(故障容忍时间间隔):200 ms
    ← 从故障发生到必须被处理的时限

FTTI 是关键概念:它把「安全」翻译成「时间预算」,后续设计都要在 FTTI 内完成故障检测与响应。

3. 安全目标与功能安全概念

安全目标(SG)分解为功能安全概念(FSC),再分解为技术安全概念(TSC):

分解层次:
  安全目标(SG)
    ↓ 分配
  功能安全需求(FSR)
    ↓ 分配
  技术安全需求(TSR)
    ↓ 分配
  硬件/软件安全需求(HSR/SSR)

示例(EPB):
  SG: EPB 不应意外释放(ASIL D)
    FSR1: 系统应检测 EPB 控制器的失效
    FSR2: 检测到失效时,系统应保持制动
    FSR3: 系统应检测驾驶员意图

  TSR1: 用双通道监控电磁阀驱动电流
  TSR2: 失效时切断电磁阀供电(保持制动)
  TSR3: 驾驶员指令需经 E2E 保护与合理性校验

  分解原则:
    一个 ASIL D 需求可分解为两个 ASIL B(D) 需求
    (带 ASIL 分解标记,需满足独立性)
    分解降低单个组件的开发强度,但要求独立性论证

需求的可追溯性是评审重点:每条 TSR 都要能追溯到 FSR,再追溯到 SG。

4. 技术安全需求与架构设计

技术安全架构决定安全机制如何落地:

架构模式:
  1. 双通道(Dual Channel)
     两个独立通道计算,比较结果
     一致才执行,不一致则安全状态
     用于 ASIL D(如线控转向)

  2. 监控通道(Monitor Channel)
     主通道执行,监控通道检查
     监控更简单、更可信(用不同实现)
     如主 CPU + 安全监控芯片

  3. 多样化冗余(Diverse Redundancy)
     两个通道用不同算法/硬件实现
     避免共因失效(common cause failure)

  4. 降级(Degradation)
     失效时进入降级模式而非完全关闭
     如 EPS 助力失效 → 保留机械转向

示例(线控转向 ASIL D):
  主 MCU:AURIX TC3xx 锁步核,计算转向角
  监控:独立 MCU 检查主 MCU 输出
  通信:E2E 保护转向指令
  电源:双路供电
  失效:进入安全状态(保持当前转向或机械备份)

5. 安全机制:看门狗、锁步核与 E2E

三类基础安全机制:

看门狗(Watchdog):
  外部看门狗(Window Watchdog):
    应用必须在一定时间窗内喂狗
    太早喂(程序跑飞)或太晚喂(程序卡死)都触发复位
    ASIL D 用外部看门狗芯片(独立时钟源)

  内部看门狗:
    MCU 内置,成本低,独立性弱

  程序流监控:
    用挑战-应答(Question-Answer)机制
    看门狗问一个随机问题,程序必须答对
    答对说明程序逻辑正常(不只是没卡死)

锁步核(Lockstep):
  两个 CPU 核执行相同指令,比较输出
  延迟 1~2 周期比较,不一致则报错
  AURIX 的锁步核延迟 2 周期
  覆盖瞬态与永久故障(用 DCLS 延迟锁步)
  不能覆盖共因失效(同一时钟、同一电源)

E2E 保护(End-to-End):
  数据在传输前后加 CRC + 计数器 + 数据 ID
  接收端校验,检测损坏、丢失、重复、乱序
  详见车载中间件一章

三类机制的诊断覆盖率不同:锁步核覆盖 CPU 故障,看门狗覆盖程序流,E2E 覆盖通信。

6. 软件安全开发与度量

Part 6 对软件开发有具体约束:

语言与编码:
  MISRA C:2012(ASIL D 强制)
    - 禁动态内存(malloc/free)
    - 禁递归
    - 禁 goto(受限)
    - 强制类型、边界检查
  C++ 用 MISRA C++ 或 AUTOSAR C++14

度量指标:
  圈复杂度(Cyclomatic Complexity):每函数 ≤ 10(ASIL D)
  函数长度:建议 ≤ 50 行
  静态分析:零阻断告警

覆盖率(Part 6 Table 12):
  ASIL D:
    语句覆盖 100%
    分支覆盖 100%
    MC/DC(修正条件/判定覆盖)100%
  ASIL B:
    语句 + 分支覆盖 100%
  ASIL A:
    语句覆盖 100%

  MC/DC 是最难达标的:
    要求每个条件的独立影响被测试
    `if (a && b)` 需要 3 个用例覆盖
    工具:VectorCAST、Cantata、CTC++

防御性编程:
  输入合理性检查
  范围检查
  冗余计算与交叉校验
  默认安全(fail-safe)

MC/DC 100% 是 ASIL D 软件最大的工作量来源,往往需要专门设计测试用例。

7. 安全分析 FMEA 与 FTA

两类分析从不同方向逼近安全:

FMEA(Failure Mode and Effects Analysis):
  自底向上:从组件失效推影响
  分析每个组件的失效模式 → 局部影响 → 系统影响
  输出:RPN(风险优先数)= 严重度 × 发生度 × 检测度
  改进:降低高 RPN 项

FTA(Fault Tree Analysis):
  自顶向下:从顶事件推原因
  顶事件(如「制动失效」)→ 逻辑门 → 基本事件
  输出:最小割集(导致顶事件的最小组合)
  定量:计算顶事件概率

FMEDA(Failure Modes, Effects and Diagnostic Analysis):
  硬件层的定量分析
  计算 SPFM(单点故障度量)与 LFM(潜伏故障度量)
  ASIL D 要求:
    SPFM ≥ 99%
    LFM ≥ 90%
    PMHF(随机硬件失效概率)< 10^-8 /h

  这些指标要求每个硬件组件的失效率(FIT)与诊断覆盖率
  由芯片厂商提供安全手册(Safety Manual)

8. 验证确认与安全案例

安全案例(Safety Case)是论证「系统足够安全」的完整证据链:

安全案例结构(GSN,Goal Structuring Notation):
  G1: 系统满足安全目标(顶层)
    ├─ G2: 安全需求已正确实现
    │    ├─ E1: 需求追溯矩阵
    │    ├─ E2: 测试报告
    │    └─ E3: 静态分析报告
    ├─ G3: 安全机制有效
    │    ├─ E4: FMEA 报告
    │    └─ E5: 故障注入测试
    └─ G4: 过程合规
         ├─ E6: 配置管理记录
         └─ E7: 工具认证

验证与确认(V&V):
  验证(Verification):产品做对了吗?(符合需求规格)
  确认(Validation):做对的产品了吗?(满足实际用途)
  手段:单元测试、集成测试、HIL、实车、故障注入

故障注入(Fault Injection):
  主动注入故障验证安全机制
  如:翻转内存位、断开信号、延迟消息
  验证安全机制能在 FTTI 内响应

独立评估(Assessment):
  ASIL D 通常需第三方独立评估
  评估员检查过程与证据

9. SOTIF 预期功能安全

SOTIF(ISO 21448)处理「功能正常但性能不足」的风险,是 26262 的补充:

26262 vs SOTIF:
  26262:失效导致的风险(东西坏了)
  SOTIF:无失效但性能不足导致的风险(东西没坏但不够好)

  例:摄像头没坏,但雨天识别不出行人
      → 不是失效,是性能边界
      → SOTIF 范畴

SOTIF 的核心概念:
  场景四象限:
    区域 1:已知安全场景
    区域 2:已知不安全场景(测试覆盖)
    区域 3:未知不安全场景(危险,需减少)
    区域 4:未知安全场景(需转化为已知)

  目标:
    减少区域 2 与区域 3(通过测试与设计)
    把区域 4 转化为区域 1

SOTIF 流程:
  1. 功能与场景定义
  2. 危害识别(性能局限导致的)
  3. 风险评估
  4. 功能改进(算法、传感器融合、降级)
  5. 验证(海量场景测试)

  验证方法:
    场景库(Scenario Database)
    仿真测试(百万公里虚拟里程)
    封闭场地测试
    实车路测(SOTIF 要求累计里程)

SOTIF 对 ADAS/AD 尤其重要,感知的边界场景(corner case)是核心挑战。

权衡取舍

决策点选项 A选项 B建议
架构冗余双通道监控通道ASIL D 用双通道,ASIL B 用监控
看门狗内部外部ASIL C/D 用外部看门狗芯片
覆盖率MC/DC 100%分支 100%ASIL D 强制 MC/DC,ASIL B 分支即可
分解不分解ASIL 分解分解降低单件强度,但需独立性论证
分析FMEAFTA两者结合,FMEA 查漏、FTA 定顶事件
验证仿真实车仿真覆盖广,实车验证真实性,结合使用

常见坑清单

  1. 安全活动后置:开发完再补安全分析,需求已冻结,返工巨大,必须贯穿全流程。
  2. FTTI 未定义:没有时间预算,安全机制响应时间无法验证,先定 FTTI 再设计。
  3. 分解未论证独立性:两个 ASIL B 需求共享同一实现,分解无效,需独立性证据。
  4. MC/DC 事后补测:代码写死无法覆盖,需在设计时就考虑可测试性。
  5. 安全机制未验证:只看设计文档,未做故障注入,实际不生效。
  6. 共因失效忽视:双通道共享时钟/电源,同时失效,需多样化设计。
  7. 芯片安全手册未用:忽略 FIT 与诊断覆盖率数据,FMEDA 无法计算。
  8. 变更未走安全流程:小改动引入新风险,所有变更需安全影响评估。
  9. SOTIF 当 26262 处理:性能不足不是失效,分析框架不同,需分别处理。
  10. 安全案例堆文档:证据之间无逻辑链,评估时无法论证,用 GSN 组织。

小结

ISO 26262 的本质是「把安全变成可论证的工程」:从 HARA 识别危害,定 ASIL 与安全目标,分解为技术需求,用安全机制实现,最后用安全案例把证据串成链。对软件工程师,它意味着具体约束——MISRA、无动态内存、MC/DC 覆盖、看门狗与 E2E。

实践路径:先理解 ASIL 分级与 HARA,再学安全需求分解,然后掌握三类安全机制(看门狗、锁步、E2E),最后接触安全案例与 SOTIF。安全机制的实现细节见 AUTOSAR Classic 平台与 RTE ;E2E 保护见 SOME/IP 与车载中间件 ;刷写的安全合规见 车载 OTA 升级与安全 。

ADAS 的 SOTIF 落地见 ADAS 感知一章;若关注整体安全体系与网络安全的交叉,可参考 车载网络安全加固 。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「车载软件」更多文章

  1. 三电与动力总成软件
  2. 车载软件测试与 HIL 台架
  3. ADAS 决策规划与横纵向控制