4. 技术安全概念(TSC):从抽象到落地的关键一步

各位工程师朋友,咱们今天聊聊技术安全概念。说实话,这是功能安全开发中最容易被低估的环节。很多人觉得,安全需求写完了,直接写代码不就完了?嗯,我当年也这么想过,直到在一次项目中,因为架构设计没考虑清楚,导致后期安全机制互相冲突,改得我头皮发麻。

技术安全概念,说白了就是把上一阶段的安全目标,翻译成具体的、可实现的工程技术方案。它回答一个问题:系统到底怎么做,才能保证安全?

4.1 技术安全概念的定义

技术安全概念(Technical Safety Concept,TSC)是功能安全开发中的核心产物。它位于安全目标(SG)和硬件软件实现之间,起到承上启下的作用。

我个人习惯把TSC理解为「架构层的安全设计说明书」。它包含三个核心要素:

  • 系统架构设计:定义模块划分、通信路径、冗余策略
  • 硬件软件接口:明确HW/SW之间的安全相关交互
  • 安全机制分配:把安全机制落实到具体的硬件或软件模块

关键点:TSC不是需求文档,而是设计文档。它描述的是「怎么做」,而不是「要什么」。

举个例子。安全目标说「车速信号错误时,系统应在100ms内进入安全状态」。TSC就要回答:用什么传感器?信号怎么校验?故障怎么检测?安全状态是什么?谁来执行?

4.2 系统架构设计

架构设计是TSC的骨架。我见过不少项目,架构图画得漂漂亮亮,但一到安全分析就漏洞百出。为什么会这样?因为架构设计没有和安全目标对齐。

做架构设计时,我建议遵循几个原则:

  • 模块化:每个模块的职责要单一,安全相关功能要集中
  • 隔离性:安全关键模块和非安全模块要物理或逻辑隔离
  • 可诊断性:每个安全相关路径都要能自检
  • 失效可预测:任何单点故障都不能导致系统进入未知状态

我记得有一次做EPS(电动助力转向)项目,架构上把扭矩传感器和电机控制放在同一个MCU上。安全分析发现,如果MCU失效,两个功能同时丢失。后来我们改成了双MCU架构,一个负责传感器处理,一个负责电机控制,中间用硬件看门狗互检。嗯,这才算踏实。

实战技巧:架构设计阶段,建议用FMEA(失效模式与影响分析)走一遍。别等到详细设计再改,那成本就高了。

4.3 硬件软件接口

硬件软件接口(HSI)是TSC中最容易被忽视的部分。说白了,就是硬件和软件之间怎么「说话」的。安全相关的接口,必须明确定义。

HSI需要包含的内容:

接口类型 安全相关属性 典型示例
传感器数据 精度、范围、更新频率、校验方式 轮速传感器:100Hz,CRC校验
控制指令 超时监控、合理性检查、回读确认 制动指令:50ms超时,回读校验
状态信号 状态编码、状态转换条件、故障状态定义 系统状态:0x01=正常,0xFF=故障
诊断接口 故障码格式、清除条件、访问权限 UDS诊断:0x19服务读取DTC

我曾经在一个项目中吃过亏。软件团队和硬件团队各自为政,软件以为硬件会做信号滤波,硬件以为软件会做。结果呢?信号噪声导致误触发安全机制,车辆在高速上突然限功率。从那以后,我要求HSI文档必须双方签字确认。

避坑指南:我曾经见过一个项目,HSI里只写了「SPI通信」,没有定义超时时间。结果SPI偶尔卡住,系统没有任何反应。记住:所有安全相关的接口,必须定义失效行为。

4.4 安全机制分配

安全机制分配,就是把安全目标分解到具体的硬件或软件模块。这是TSC中最需要经验的部分。

常见的分配方式:

  • 硬件实现:看门狗、电压监控、硬件冗余、E2E保护
  • 软件实现:程序流监控、数据校验、合理性检查、故障处理
  • 混合实现:部分在硬件,部分在软件,比如安全关断路径

分配时有个原则:安全机制本身也要安全。你想想看,如果安全机制本身会失效,那还不如没有。所以,对于ASIL C/D的系统,安全机制通常需要独立于被监控的功能。

举个例子,监控MCU程序流是否跑飞的机制:

// 软件实现:程序流监控(问答式)
// 硬件看门狗定期询问,软件必须在窗口期内回答

void main_loop(void) {
    while(1) {
        // 执行安全关键功能
        execute_safety_function();
        
        // 喂狗:告诉硬件我还在正常运行
        watchdog_feed(0xA5);  // 特定序列
        
        // 执行非安全功能
        execute_non_safety_function();
    }
}

// 硬件看门狗逻辑(伪代码)
// 如果超过100ms没有收到0xA5,则触发系统复位

你看,这个机制里,软件负责在正确的时间点发送正确序列,硬件负责监控和强制执行。这就是典型的HW/SW协同安全机制。

分配原则总结

  • ASIL A/B:可以软件为主,硬件辅助
  • ASIL C/D:建议硬件独立实现,软件作为补充
  • 安全机制与被监控功能之间要有独立性
  • 每个安全机制都要有对应的测试用例

4.5 我的经验总结

做了这么多年功能安全,我最大的体会是:TSC做得好不好,直接决定了后期开发的痛苦程度。你想想看,如果架构设计有漏洞,后面改代码、改PCB、改测试用例,那成本可不是翻倍那么简单。

最后给大家几个实操建议:

  1. TSC要早做:在系统方案阶段就开始,不要等到详细设计
  2. TSC要评审:至少做一次正式评审,邀请HW、SW、测试、系统工程师一起
  3. TSC要可追溯:每个安全目标都要能追溯到具体的架构模块和安全机制
  4. TSC要迭代:随着设计深入,TSC需要不断更新和完善

好了,技术安全概念就聊到这里。下一章咱们讲讲硬件安全需求的具体开发方法。记住一句话:架构设计决定了安全的天花板,安全机制决定了安全的底线