本节摘要:功能安全不是“不出错”的许诺,而是故障必然发生时系统仍可知、可控、可收敛。ISO 26262 用汽车安全完整性等级把风险和措施匹配。AUTOSAR 提供分层、分区、诊断、看门狗和静态调度,让技术安全概念有地方落地。读完应能区分可靠性与功能安全,并说明高低等级共存时必须隔离。
阅读完本节,你应当能够:
雨夜隧道里前车爆胎,域控制器要在短时间窗内诊断感知是否仍可信,校验决策完整性,必要时把执行交给更高完整度的路径并停到安全位置。这不是完美许诺,是运行设计域内不把人暴露于不合理风险。可靠性谈无故障概率;功能安全谈故障发生时行为是否仍在剧本内。现代控制器上数十个组件共享核与总线,未校验报文、越界写、未加锁的全局量,都可以把高等级指令静默丢掉。所以要生命周期方法论:安全目标 → 机制 → 需求 → 技术安全概念 → 可测试实现。
等级不是拍模块名。电动助力转向扭矩叠加,伤害严重、高速常见、人难以在毫秒级纠正,往往落到最高一档;空调风门通常低得多。高等级要求的单点故障覆盖率和开发流程成本显著上升。数字来自分析,不来自“这个模块听起来重要”。不要在教程里编造覆盖率公式条款,以标准正文和安全案例模板为准。

检测:诊断事件、看门狗、锁步或互比、通信超时与无效值。隔离:功能抑制、分区、禁止低等级写高等级缓冲。收敛:预定义安全状态,例如禁止叠加扭矩、缓慢减速、保持最后有效转向还是回到机械回退,必须在概念里写死,不能现场发明。
RTE 生成若允许越层或共享,机制会被旁路。OS 若不能证明截止期,再多检测也来不及。存储若在掉电后交出半新校准,控制律会在错误坐标系里“正确运行”。所以功能安全不是第 6 章才开始的插件,是第 2、3 章设计有没有做对的考试。
分解允许把一个高等级目标拆到多个较低等级元素加独立机制,但独立性必须可论证:共同时钟、共同电源、共同编译选项都可能成为共因。分解不是为了偷懒降流程,是为了在硬件上可实现。偷懒式分解会在审核时被打回。
高等级要求的工具信心、代码规范、覆盖率测试、配置管理,都应能指回描述里的安全元素。模型生成代码时,安全机制插入要可追溯到具体运行实体。手写部分应最小化并走同样流程。宣称“应用层百分之九十生成所以安全”,却说不清剩余手写碰了哪些寄存器,案例仍然空洞。
共存在工程上最痛。同一微控制器跑气囊相关和氛围灯,必须让后者无法写前者的栈和配置。内存保护、时间隔离、独立看门狗窗口,是典型手段。若硬件做不到,就把高等级挪走,而不是写一份希望。
| 安全问题 | 架构抓手 | 失败形态 |
|---|---|---|
| 随机硬件故障 | 检测与冗余 | 看不见的错误输出 |
| 软件系统性缺陷 | 流程与规范 | 所有件带同样的 bug |
| 干扰 | 分区与抑制 | 低等级拖死高等级 |
| 时间 | OS 截止期 | 检测来得太晚 |
⚠️ 常见坑:用信息安全的加密当功能安全。密钥对了,随机硬件故障仍会让执行器乱跳。两者正交。
💡 关键直觉:安全状态是产品行为的一部分,要标定、要测试、要让驾驶员的预期可被说明。
Adaptive 上 ASIL D 级应用仍属艰难探索。常见格局是:感知规划在 Adaptive 用监控和降级,执行闭环在 Classic 用可证明栈。跨域指令必须带时效和许可。第 7.1 节会写网关。不要假设 POSIX 上的分区等于 MCU 上的 MPU 分区,证明材料不同。
标准更新周期以年计,项目安全概念不能等待下一版联盟文档才开始。用当前平台提供的机制把案例做完整,比追新名词重要。
等级分解允许把一个高等级目标拆到多个较低等级元素加独立机制,但独立性必须可论证。共同时钟、共同电源、共同编译选项、共同生成配置,都可能成为共因。分解不是为了偷懒降流程。偷懒式分解会在审核时被打回。硬件做不到隔离时,把高等级功能挪到另一颗控制器,比写一份希望更诚实。
证据链应能从安全目标走到描述里的元素,再走到生成代码位置和测试向量。宣称应用层大部分由模型生成所以安全,却说不清剩余手写碰了哪些寄存器,案例仍然空洞。覆盖率数字因等级而异,高等级对单点故障检测的要求显著更严。不要背具体百分比当口头禅,以标准正文和项目安全计划为准。Adaptive 上高等级应用仍艰难,常见格局是执行闭环留在 Classic。证明材料不同,不能把进程隔离直接等同于微控制器内存保护。
靠分区、内存保护、时间隔离和受控端口,而不是靠程序员自觉。低等级氛围灯不得写高等级制动缓冲。共享内存私通会让安全案例失效,因为干扰路径无法被分析关闭。硬件做不到就挪走高等级功能。希望不是机制。机制要能在技术安全概念里被指到 OS 对象和 RTE 生成选项。指不到对象的隔离,是幻灯片隔离。幻灯片过不了审核,也过不了故障注入。
安全状态是产品行为,要标定、要测试、要能向驾驶员的预期说明。禁止叠加扭矩、缓慢减速、机械回退,每一种都改变车辆动态,不能在故障注入时才第一次见面。见面太晚,驾驶员会把安全状态当成故障本身,从而做出更危险的干预。干预是可控性评分里的人因,人因不能靠希望。希望与高等级流程不兼容。流程要求技术安全概念里写清状态、进入条件、退出条件、对诊断灯的影响。写清之后,模式管理和功能抑制才知道自己在执行剧本而不是在发明。发明发生在夜间台架时,看起来像经验丰富;发生在高速公路时,看起来像未定义。未定义与不合理风险只有一层纸。纸就是那份写清的概念。概念不写,分层再漂亮也只是把未定义分配到了更多模块上。分配不是消除。消除靠剧本,剧本靠测试,测试靠注入,注入靠事件清单。清单又回到诊断栈。安全原来一直围着坐标系转,从不外挂。
把安全状态当产品功能来做标定。禁止叠加扭矩会改变转向手感,缓慢减速会改变后车预期,机械回退会改变驾驶员负荷。三种都不是“内部实现细节”。细节若不进用户可见的说明和测试,故障注入时会第一次见面,见面太晚会引发更危险的人因干预。人因是可控性评分的一部分。评分不能靠希望驾驶员冷静。冷静要靠可预测。可预测要靠写清进入退出条件和对灯的影响。写清之后,模式管理和抑制矩阵才是在演戏而不是在即兴。即兴在台架像经验,在高速公路像未定义。未定义离不合理风险只隔一层纸。纸就是技术安全概念。概念不写,分层只是把未定义分配到更多模块。分配不是消除。消除靠剧本、注入、事件清单。清单要把危害分析里的目标变成 DEM 能看见的名字。看不见的目标,覆盖率再漂亮也是空集。空集过不了把召回追溯到盲区的审计。审计要的是具体事件对具体目标,不是模块在位证明。在位证明很像合规,合规若只在位,车上仍可能在出错时发明。发明是本节的反面教材。正面教材是:出错时系统走的路,在设计时已经走过。走过的路才能被测试。被测试的路才能被声称安全。声称之前先把高低等级的私通内存拆掉。私通是对隔离的取消。取消隔离等于取消共存。取消共存就老老实实把高等级挪走。挪走比希望便宜。
共因分析不要停在两套代码。共同时钟、共同电源、共同生成配置、共同编译选项,都能让“独立”变成幻觉。幻觉式分解会在审核被打回,打回发生在项目已经按低流程开发之后,成本最高。最高成本的避免办法是:分解提案必须列出共因清单和独立性证据,证据指向 OS 对象、MPU 配置、电源域、时钟源。指不到对象的独立是幻灯片独立。幻灯片过不了故障注入。注入应包括让低等级疯狂写,看高等级缓冲是否仍完整。仍完整,隔离才存在。不完整,再多流程文件也是旁白。旁白救不了液压。液压要的是分区真的挡住了写。挡住写是第 2 章执行主权和第 3 章 OS 对象在安全上的会合。会合点必须能在生成选项里打开。打开了,RTE 才不会为了快而把两边放进同一缓冲。同一缓冲是案例失效的最短路径。最短路径很诱人,诱人处总写着性能。性能账若不算案例被打回的月份,账就是假的。假账会让人删分层。删分层会让十五年搬家权一起消失。消失后还要面对芯片停产。停产年才会证明:安全隔离和可移植性其实是同一套坐标上的两个投影。投影都要,不能只留一个。
下一节转向行为可信:谁有资格发出那条看起来合法的控制报文。