第2章:硬件安全需求分析:HARA、安全目标与安全机制分配
各位好,欢迎来到硬件落地的第二讲。
上一章我们聊了功能安全的基本概念和ISO26262的框架。今天要讲的内容,是真正开始动手做硬件安全设计的起点——HARA(危害分析与风险评估)。我个人认为,这一步做得扎实不扎实,直接决定了后续所有工作的质量。说白了,如果连“要防什么”都没搞清楚,后面的安全机制设计就是在瞎忙活。
2.1 HARA:危害分析与风险评估
HARA的全称是Hazard Analysis and Risk Assessment。它的目标很明确:识别系统在故障状态下可能对人员造成的危害,并评估其风险等级。
我刚开始做功能安全时,总觉得HARA就是走个过场,填几张表就完事了。直到有一次,我们忽略了一个看似“低风险”的场景——车辆在高速上突然失去动力辅助转向。结果评审时被客户直接打回,项目延期了两个月。从那以后,我再也不敢轻视HARA了。
2.1.1 HARA的核心三要素
做HARA时,我们需要关注三个核心要素:
- 危害事件:故障发生后,导致的具体危险情况。比如“刹车踏板信号丢失导致车辆无法制动”。
- 运行场景:危害发生时的车辆状态和环境。比如“车辆在高速公路上以120km/h行驶”。
- 可控性:驾驶员或其他人员避免伤害的能力。比如“驾驶员能否在刹车失效时通过手刹或紧急制动停车”。
关键点:HARA不是只分析“故障本身”,而是分析“故障在特定场景下导致的后果”。同一个故障,在不同场景下,风险等级可能完全不同。
2.1.2 ASIL等级的确定
ISO26262通过三个参数来确定ASIL等级:
| 参数 | 全称 | 等级范围 | 说明 |
|---|---|---|---|
| S | Severity(严重度) | S0~S3 | 伤害的严重程度,S3为致命伤害 |
| E | Exposure(暴露概率) | E0~E4 | 运行场景发生的概率,E4为极高 |
| C | Controllability(可控性) | C0~C3 | 驾驶员控制风险的能力,C3为几乎不可控 |
举个例子:如果某个危害的S=3(致命)、E=4(经常发生)、C=3(几乎不可控),那么它的ASIL等级就是ASIL D——最高等级。如果三个参数中有一个是S0、E0或C0,则等级为QM(质量管理),不需要按功能安全流程开发。
我的经验:在确定E值时,不要只看“这个场景理论上可能发生”,要结合实际的使用数据。比如“车辆在高速上行驶”对大多数用户来说E值很高,但“车辆在无人区夜间行驶”可能E值就低很多。我曾经见过一个项目,把E值定得过高,导致ASIL等级虚高,硬件成本翻了一倍。
2.2 安全目标定义
HARA完成后,我们会得到一组危害事件及其ASIL等级。接下来,需要为每个危害事件定义安全目标(Safety Goal)。
安全目标是一个顶层安全要求,它描述了“系统必须做什么来避免或减轻危害”。它不涉及具体实现,只描述“要达成的安全状态”。
2.2.1 安全目标的格式
我个人习惯用以下格式来写安全目标:
安全目标编号:SG-XXX
描述:当[触发条件]发生时,系统应[执行的动作],以避免[危害事件]。
ASIL等级:[ASIL A/B/C/D]
安全状态:[描述系统应进入的安全状态]
容错时间间隔(FTTI):[时间值,单位ms]
举个例子:
安全目标编号:SG-001
描述:当主制动系统失效时,系统应在100ms内激活冗余制动回路,以避免车辆无法制动导致的碰撞。
ASIL等级:ASIL D
安全状态:车辆通过冗余制动回路实现减速至停止。
容错时间间隔(FTTI):100ms
注意:安全目标中的“容错时间间隔(FTTI)”非常关键。它决定了安全机制的响应速度。如果FTTI定得太短,硬件实现成本会很高;定得太长,又可能无法保证安全。我建议在定义FTTI时,参考实际物理系统的响应时间,比如液压制动系统的建压时间、传感器的采样周期等。
2.3 硬件安全需求导出
安全目标定义好后,我们需要把它分解成具体的硬件安全需求(Hardware Safety Requirements, HSR)。这一步是从“顶层要求”到“具体实现”的桥梁。
硬件安全需求通常包括:
- 功能需求:硬件模块需要实现什么功能。比如“MCU应能检测制动踏板位置传感器的开路故障”。
- 性能需求:硬件模块需要达到什么性能指标。比如“故障检测时间应小于10ms”。
- 诊断覆盖率需求:安全机制需要达到的诊断覆盖率。比如“对制动踏板位置传感器的诊断覆盖率应≥99%”。
2.3.1 需求导出的方法
我常用的方法是自上而下分解:
- 从安全目标出发,识别出需要哪些安全机制。
- 将安全机制分配到具体的硬件模块(如传感器、MCU、执行器)。
- 为每个硬件模块定义具体的需求,包括功能、性能、诊断覆盖率等。
举个例子,对于SG-001(制动冗余),我们可能需要以下硬件安全需求:
| 需求编号 | 描述 | 分配模块 | ASIL等级 |
|---|---|---|---|
| HSR-001 | 主制动回路失效时,MCU应在50ms内检测到故障 | MCU | ASIL D |
| HSR-002 | 冗余制动回路应在100ms内激活 | 执行器驱动 | ASIL D |
| HSR-003 | 制动踏板位置传感器的诊断覆盖率应≥99% | 传感器接口 | ASIL D |
避坑指南:我曾经在导出需求时,只关注了“功能”而忽略了“性能”。结果硬件设计完成后,发现故障检测时间比FTTI还长,导致安全机制根本来不及响应。所以,性能需求一定要和FTTI对齐。
2.4 安全机制分配
硬件安全需求定义好后,我们需要把安全机制分配到具体的硬件模块上。安全机制就是用来检测故障、控制故障或减轻故障影响的具体方法。
2.4.1 常见的安全机制
在硬件层面,常见的安全机制包括:
- 冗余设计:比如双MCU、双传感器、双执行器。
- 诊断机制:比如CRC校验、看门狗、电压监控、电流监控。
- 故障响应机制:比如故障时切换到安全状态、降级运行、紧急停机。
2.4.2 分配的原则
我个人总结了几条分配原则:
- 独立性:安全机制和主功能之间应尽量独立,避免共因失效。比如,不要用同一个电源给主功能和诊断电路供电。
- 覆盖率:安全机制的诊断覆盖率要满足ASIL等级的要求。ASIL D通常要求≥99%的诊断覆盖率。
- 响应时间:安全机制的响应时间要小于FTTI。
- 可测试性:安全机制本身要能被测试,确保它能在需要时正常工作。
注意:安全机制本身也可能失效。比如,看门狗电路如果自己坏了,就无法监控MCU。所以,安全机制也需要被监控。这就是所谓的“诊断的诊断”。
2.5 本章知识体系总览
为了让大家更直观地理解本章的知识结构,我画了一张流程图:
嗯,这张图把整个流程串起来了。从HARA开始,到安全目标,再到硬件安全需求,最后到安全机制分配,每一步都环环相扣。你想想看,如果中间任何一步出了问题,后面的硬件设计都会跑偏。
2.6 本章小结
今天的内容信息量不小,我帮你梳理一下核心要点:
- HARA是安全设计的起点,通过S、E、C三个参数确定ASIL等级。
- 安全目标是顶层要求,描述“要达成的安全状态”,必须包含FTTI。
- 硬件安全需求是把安全目标分解到具体硬件模块的功能、性能和诊断覆盖率要求。
- 安全机制分配是把安全机制落实到硬件模块上,并确保独立性、覆盖率和响应时间。
一句话总结:HARA告诉你“要防什么”,安全目标告诉你“防到什么程度”,硬件安全需求告诉你“怎么防”,安全机制分配告诉你“谁来防”。四步走完,硬件安全设计的基础就扎实了。