从时间、空间、控制流三维度解析软件分区技术与AUTOSAR实现
汽车功能安全系列文章 | 基于ISO 26262-6:2018
导读:当信息娱乐系统(QM级)与转向控制系统(ASIL-D级)运行在同一颗MCU上时,如何确保低完整性软件的故障不会级联影响高完整性软件?答案就是"软件分区"。本文深入解析ISO 26262-6推荐的软件分区技术,从时间、空间、控制流三个维度,揭秘ASIL-D系统的架构安全设计之道。
一、软件架构安全设计的核心挑战
现代汽车电子控制单元(ECU)的算力不断提升,一颗高性能MCU往往同时承载多种功能:信息娱乐(QM)、车身控制(ASIL-A)、制动控制(ASIL-C/D)等。如果这些不同ASIL等级的软件混跑在一起,低ASIL软件的故障(如内存越界、任务死锁、非法指针访问)可能通过共享资源(内存、总线、CPU时间)级联影响高ASIL软件,导致安全功能失效。
ISO 26262-6明确提出了"freedom from interference"(免于干扰)的架构设计目标,要求通过软件分区技术实现不同ASIL等级软件的安全共存。
图1 ASIL分解的有效组合规则表,展示了从ASIL D到ASIL A各级别分解为低ASIL或QM级组件的合法组合方式。如图1所示,ASIL分解是软件分区设计的前提,通过将高ASIL需求分解到多个独立元素上,降低单个组件的安全完整性要求。

图片来源:51fusa.com
二、软件分区的三大维度
核心要点:软件分区(Software Partitioning)不是单一技术,而是从时间、空间和控制流三个维度构建的综合隔离体系。时间分区通过调度策略隔离任务执行时隙,防止高ASIL任务被低ASIL任务阻塞;空间分区通过内存保护单元(MPU)隔离内存访问权限,防止数据 corruption 跨边界传播;控制流分区通过优先级与监控机制确保高ASIL任务的执行顺序不受干扰。
2.1 时间分区:任务调度的安全隔离
时间分区的核心思想是为不同ASIL等级的任务分配独立的时间窗口。在固定优先级抢占式调度中,高ASIL任务被赋予最高优先级,确保其执行不受低ASIL任务阻塞。在时间触发调度(TTA)中,不同ASIL任务被分配到不同的时隙(Time Slot),通过调度表严格隔离执行时间。
- 固定优先级调度
:高ASIL任务优先级大于低ASIL任务优先级 - 时间触发调度
:不同ASIL任务使用不同时隙,互不重叠 - 执行时间监控
:通过WCET(最坏执行时间)分析确保任务在规定时间内完成
2.2 空间分区:MPU内存保护
空间分区是防止内存越界访问导致数据 corruption 的关键技术。现代汽车MCU(如NXP S32K、Infineon AURIX)均内置内存保护单元(MPU),通过配置内存区域访问权限,实现不同ASIL任务的数据隔离。
图2 汽车微控制器中的内存保护单元(MPU)架构框图,展示了双核配置下每个核心均配备独立的Core Memory Protection Unit(CMPU),通过总线矩阵与系统内存保护单元(SMPU)协同工作,实现对不同安全等级任务内存空间的硬件级隔离。如图2所示,MPU机制是软件空间分区的物理基础。

图片来源:plaxidityx.com
2.3 控制流分区:防止执行顺序被干扰
控制流分区确保高ASIL任务的执行顺序和状态转换不受低ASIL软件干扰。这通常通过以下机制实现:
- 独立状态机
:高ASIL安全功能拥有独立的状态机,与低ASIL功能状态机解耦 - 程序流监控
:通过软件看门狗或硬件监控器检测程序执行路径是否偏离预期 - 调用限制
:禁止低ASIL软件直接调用高ASIL软件的关键函数
图3 ASIL分解的软件分区示意图,展示了微处理器中QM级应用固件与ASIL-D级安全相关软件的分区隔离,通过独立性(Independence)原则确保任何可能导致安全目标违反的软件功能都被隔离在独立分区中。如图3所示,这种分区是ASIL分解落地的工程实现。

图片来源:51fusa.com
三、AUTOSAR架构中的分区实现
核心要点:AUTOSAR是汽车软件领域最广泛采用的标准化架构,其分层设计(应用层、运行时环境RTE、基础软件BSW)天然支持软件分区。应用层(ASW)中的软件组件(SWC)通过RTE进行标准化接口通信,底层通过BSW的内存服务和OS服务实现时间/空间分区。理解AUTOSAR架构是掌握汽车软件分区技术的必经之路。
AUTOSAR架构通过以下机制支持软件分区:
- 软件组件(SWC)隔离
:每个SWC拥有独立的运行实体(Runnable),通过RTE端口通信 - OS-Application分区
:AUTOSAR OS支持将任务分配到不同的OS-Application,每个分区拥有独立的内存空间和调度策略 - 内存服务(MemService)
:通过BSW的内存抽象层实现MPU配置和内存访问控制 - 通信保护(E2E)
:通过端到端保护确保跨分区通信的数据完整性
图4 AUTOSAR分层软件架构图(瑞萨电子版本),清晰展示了应用层(Application Layer)、运行时环境(RTE)、服务层(Services Layer)、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer)及复杂驱动(Complex Drivers)的层次关系。如图4所示,AUTOSAR架构通过标准化分层实现软硬件解耦,为安全相关软件组件的独立开发、验证与复用提供了工程化框架。

图片来源:renesas.cn
图5 AUTOSAR标准化软件架构的完整组件视图,展示了基础软件(BSW)内部的服务层、ECU抽象层和微控制器驱动层,以及它们与微控制器硬件资源的映射关系。如图5所示,这种严格的分层与模块化设计是软件分区技术的架构基础。

图片来源:gi.de
四、冗余采样:接口层的安全设计
在软件分区架构中,接口层是不同分区之间数据交换的"关口",也是故障可能跨边界传播的高风险区域。以ADC采样为例,安全关键传感器(如转向扭矩传感器)的信号采集需要采用冗余采样机制:
- 双通道ADC
:主ADC(如Sigma-Delta ADC)与辅助ADC(如SAR ADC)同时采样同一信号 - 交叉校验
:控制器对两个ADC的采样结果进行一致性检查,偏差超过阈值则触发故障处理 - E2E保护
:跨分区传输的数据附加CRC校验和序列号,检测传输过程中的数据 corruption
图6 冗余ADC采样架构示意图,展示了温度传感器信号经主ADC(Sigma-Delta ADC)与辅助ADC(SAR ADC)双通道采集后,通过独立接口传输至控制器进行交叉校验。如图6所示,这种冗余采样机制是软件接口安全需求(E2E保护、数据校验)的典型硬件实现,可有效检测传感器或ADC本身的故障。

图片来源:analog.com
总结
软件分区是汽车功能安全架构设计的基石。通过时间分区、空间分区(MPU)和控制流分区的综合应用,结合AUTOSAR标准化架构和冗余采样等接口安全技术,工程师可以在单一MCU上实现不同ASIL等级软件的安全共存。理解这些技术,是设计ASIL-D级安全监控软件的前提。
本文配图均来源于网络搜索,仅供学习参考使用。版权归原作者及原出处所有。关注公众号,获取更多汽车电子功能安全干货。
夜雨聆风