4. 系统级开发:系统级开发流程、技术安全概念、系统架构设计

好,咱们进入系统级开发这个环节。

说实话,很多工程师觉得功能安全就是写文档、做分析。其实不是的。系统级开发才是真正把安全要求落到实处的第一步。你想想看,如果系统架构搭歪了,后面V模型走得再漂亮,也是白搭。

4.1 系统级开发流程——别急着写代码

我个人习惯,拿到一个项目需求后,先不急着看功能怎么实现。我会先问自己三个问题:

  • 这个系统最坏情况下会出什么故障?
  • 故障发生后,对驾驶员和乘客有什么影响?
  • 我们需要做到ASIL哪个等级?

系统级开发流程,说白了就是回答这三个问题的过程。ISO 26262第4部分讲的就是这个。流程大致分几步:

  1. 定义系统边界——哪些东西归我管,哪些是外部依赖
  2. 识别危险事件——HARA分析,这个咱们前面聊过
  3. 制定安全目标——每个危险事件对应一个安全目标
  4. 分配安全要求——把安全目标拆解到硬件和软件
  5. 系统架构设计——画出框图,明确模块分工

核心要点:系统级开发不是一次性的。它是一个迭代过程。我见过太多团队,架构设计完就扔那儿了,等到集成测试才发现安全机制没地方放。嗯,那时候改架构,成本就高了。

4.2 技术安全概念——把安全目标翻译成技术语言

安全目标写的是「车辆不能非预期加速」,对吧?但工程师需要知道的是:怎么检测非预期加速?检测到了之后怎么办?

这就是技术安全概念(TSC)要做的事。

我记得有一次做EPS(电动助力转向)项目。安全目标是「转向不能反向助力」。听起来简单吧?但落到技术层面,你得考虑:

  • 扭矩传感器信号怎么校验?
  • 电机控制器的输出怎么监控?
  • 如果检测到异常,是降级还是关断?

技术安全概念通常包含以下要素:

要素 说明 我的经验
故障检测机制 怎么发现故障 别只依赖一种检测手段,冗余更可靠
故障响应措施 发现故障后做什么 降级模式要设计得平滑,别让驾驶员吓一跳
故障容错时间 从故障发生到响应,能容忍多久 这个时间窗口很关键,我吃过亏
安全状态 系统最终要进入什么状态 安全状态不一定是停机,有时候降级更合理

我的小技巧:写技术安全概念的时候,我习惯画一张时序图。把故障发生、检测、响应、进入安全状态的时间点都标出来。这样评审的时候,大家一眼就能看出时间够不够。

4.3 系统架构设计——搭好骨架,后面才不慌

系统架构设计,说白了就是画框图、分模块、定接口。但功能安全给架构设计加了很多约束。

你想想看,如果两个ASIL D的模块共用同一个电源,电源一坏,两个模块都完蛋。这就是「共因失效」。架构设计的时候,就要想办法避免这种情况。

我常用的架构设计原则:

  • 独立性原则——高ASIL的模块要跟低ASIL的模块隔离开
  • 冗余原则——关键功能要有备份,比如双通道架构
  • 多样性原则——冗余不能一模一样,否则共因失效照样翻车
  • 故障传播控制——一个模块坏了,别把隔壁也带崩了

举个例子,我之前做的一个线控制动项目:

系统架构(简化版):
┌─────────────────────────────────────┐
│          主控制器(ASIL D)          │
│  ┌──────────┐  ┌──────────┐        │
│  │ 主通道    │  │ 监控通道  │        │
│  │ 执行制动  │  │ 校验结果  │        │
│  └──────────┘  └──────────┘        │
└─────────────────────────────────────┘
           │              │
           ▼              ▼
┌─────────────────────────────────────┐
│          执行器(冗余设计)          │
│  ┌──────────┐  ┌──────────┐        │
│  │ 电机A    │  │ 电机B    │        │
│  │ 独立供电  │  │ 独立供电  │        │
│  └──────────┘  └──────────┘        │
└─────────────────────────────────────┘

这个架构里,主控制器内部有主通道和监控通道,互相校验。执行器用了两个电机,各自独立供电。就算一个电机坏了,另一个还能顶上去。

注意:架构设计的时候,一定要考虑「故障注入测试」。我曾经有一个项目,架构设计得很完美,但故障注入一测,发现监控通道的响应时间比预期慢了50毫秒。就这50毫秒,差点导致安全目标不满足。所以,架构设计完了,一定要用仿真或实测验证一下时序。

4.4 系统级开发的输出物

说了这么多,系统级开发到底要产出什么?我列个清单:

  • 系统需求规格书——功能需求+安全需求
  • 技术安全概念文档——TSC,详细描述安全机制
  • 系统架构设计文档——框图、接口定义、模块划分
  • 安全分析报告——FMEA、FTA、DFA等
  • 系统集成测试计划——怎么测、测什么、谁负责

这些文档不是写给别人看的,是给自己团队用的。我见过有些团队,文档写得天花乱坠,但代码实现跟文档完全对不上。嗯,那样的话,评审过不了,认证也过不了。

好了,系统级开发就聊到这儿。下一章咱们讲硬件级开发,到时候聊聊怎么选MCU、怎么做硬件安全机制。有什么问题,欢迎交流。