应用层错误处理说明(Explanation of Error Handling on Application Level)

📄 文档 ID:378 🏷 类型:EXP(说明文档) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:78 📌 状态:Final 🔗 原 PDF:AUTOSAR_EXP_ApplicationLevelErrorHandling.pdf

目录

1 介绍(Introduction)

本文档的目的和目标是综述汽车行业中常用且可在 AUTOSAR 中使用的应用层错误处理机制。这包括应用层的错误处理以及应用层错误的处理。

此处的"错误处理"指完整的处理链,即检测、隔离/识别与恢复。本文档展示了一组对汽车系统有用的错误处理机制,涵盖错误处理的三个阶段。每个机制首先以高级方式进行描述,包括其在错误处理中的适用性和技术方面。然后,回顾与该机制相关的 AUTOSAR 功能,并详细说明该机制在 AUTOSAR 系统中的哪个位置实现或支持。因此,机制列表既包含 AUTOSAR 全部(或部分)提供的机制,也包含在纳入系统时应当由应用开发者在 SW-C 级别实现的机制。

注意:所涵盖的机制并不完整,仅限于可以在基于 AUTOSAR 4.0 版本构建的系统上实现的机制。可以存在替代和额外的机制,AUTOSAR 的未来版本可能支持更多错误处理功能。此外,本文档不强制使用任何机制——决策当然完全取决于应用开发者和集成商。

本文档旨在描述可能的机制,主要面向应用/SW-C 开发者。然而,对于 BSW 模块开发者也可能有用。关注点是随机故障,而非系统性设计故障(如 SW bug)。此类故障的示例包括影响应用、通信或外围设备的硬件故障。本文聚焦于最适合由 SW-C 处理的错误,不涵盖 RTE 内或 RTE 以下的错误处理,例如 COM 和 OS 的错误处理。

2 与其他文档的关系(Relation to other documents)

本文档与 AUTOSAR 发布的许多其他文档相关,尤其是由 AUTOSAR 功能安全团队处理的文档。本文档的目的不是替代这些文档中的任何一个,而是从应用开发者的视角审视其他工作包已完成的工作。

因此,本文档与其他文档之间存在相当数量的重叠,这表明 AUTOSAR 内已达到的成熟度。

针对每个机制,列出了相关的 AUTOSAR 文档清单,作为本文档与其他 AUTOSAR 文档之间的显式关系

关于功能安全机制和措施的信息分布在整个 AUTOSAR 规范文档中。除非知道功能安全机制是如何被支持的以及必要信息的具体位置,否则难以评估如何使用 AUTOSAR 高效地实现安全相关系统。 AUTOSAR 文档《AUTOSAR 中功能安全措施概述》总结了 AUTOSAR 中功能安全相关的关键点,解释了功能安全机制和措施的使用方式,并参考了相应文档。此外,它有助于建立 ISO 26262 要求与 AUTOSAR 措施和机制之间的映射。

3 参考资料(References)

本文档引用了 AUTOSAR 4.0 规范中的多个标准文档,包括:

完整引用清单见原文第 9–11 页。

4 文档导读(Guide to the document)

本文档按以下方式组织:

5 术语与定义(Terms and definitions)

5.1 基本可靠性术语(Basic dependability terms)

中文英文定义
故障Fault系统组件的异常状态,可能导致错误。
错误Error系统状态的不正确,可能导致失效。
失效Failure系统偏离其规定功能。
永久故障Permanent Fault持续存在的故障,直到被修复。
瞬态故障Transient Fault短暂出现的故障,随后消失。
间歇故障Intermittent Fault间歇性出现的故障。
可靠性Dependability系统可被信赖的属性,包括可用性、可靠性、安全性、机密性、完整性、可维护性等。

5.2 故障检测、隔离与恢复(FDIR)(Fault Detection, Isolation and Recovery)

FDIR 是错误处理的三阶段过程

  1. 故障检测(Detection):识别故障的发生;
  2. 故障隔离(Isolation):定位故障源;
  3. 故障恢复(Recovery):将系统恢复到正常状态。

三种恢复策略:

6 范围(Scope)

本文档的范围

7 错误模型(Error model)

AUTOSAR 错误模型区分以下错误类别

错误类型英文说明处理位置
开发错误Development Error开发阶段发现的问题(如参数错误、状态错误)Det(默认错误追踪器)
运行时错误Runtime Error运行时发生的错误(如除零、溢出)Det
瞬态故障Transient Fault短暂出现的故障Dem(诊断事件管理器)
生产错误Production Error生产环境(量产)下发生的错误Dem
扩展生产错误Extended Production Error带有额外信息的生产错误Dem

错误传播路径

  1. 错误源(BSW 或 SW-C)通过 API 返回值或回调通知检测到错误;
  2. 调用者根据错误类型决定处理(继续、降级、复位);
  3. 严重错误通过 DEM 上报,由诊断机制处理。

8 错误处理机制(Error handling mechanisms)

8.1 合理性检查(Plausibility checks)

8.1.1 描述(Description)

合理性检查通过范围检查关系检查逻辑检查验证输入/输出数据是否在合理范围内。

示例

8.1.2 适用性(Applicability)

适用场景:

8.1.3 应用层 vs. BSW(Application level vs. BSW)

BSW 层可执行基础合理性检查(如参数范围)。应用特定的合理性检查应在 SW-C 层实现,因为只有应用层知道数据的语义。

8.1.4 AUTOSAR 参考(AUTOSAR References)

主要参考 AUTOSAR_EXP_ErrorDescription.pdf

8.2 替代值(Substitute Values)

8.2.1 描述

当检测到错误时,使用预定义的合理替代值代替错误值,继续系统运行。

示例

8.2.2 适用性

适用场景:

8.2.3 应用层 vs. BSW

应用层提供替代值;BSW 提供默认值定义机制。

8.2.4 AUTOSAR 参考

主要参考 AUTOSAR_SWS_DefaultErrorTracer.pdf

8.3 投票(Voting)

8.3.1 描述

投票机制通过比较多个独立源(例如多个传感器)的结果来确定"正确答案"。例如:

8.3.2 适用性

适用于安全关键系统,特别是涉及物理量测量的场景(如制动、转向)。

8.8.3 应用层 vs. BSW

通常在 SW-C 层实现;BSW 提供冗余通信机制。

8.3.4 AUTOSAR 参考

主要参考 RTE 规范和 SW-C 模板。

8.4 一致性(Agreement)

8.4.1 描述

一致性检查用于验证分布式系统中多个节点对同一事实的认知是否一致。例如:

8.4.2 适用性

适用于分布式功能(如 V2X、协同驾驶)。

8.4.3 应用层 vs. BSW

应用层使用一致的信息进行决策。

8.4.4 AUTOSAR 参考

主要参考 AUTOSAR_TPS_SoftwareComponentTemplate

8.5 校验和/校验码(Checksums/Codes)

8.5.1 描述

校验和用于检测数据在传输或存储过程中的损坏:

8.8.2 适用性

适用于所有关键数据的存储和传输。

8.5.3 应用层 vs. BSW

BSW 层提供 CRC 库(AUTOSAR_SWS_CRCLibrary),应用层决定何时使用。

8.5.4 AUTOSAR 参考

主要参考 CRC 库规范、E2E 库规范。

8.6 执行序列监控(Execution sequence monitoring)

8.6.1 描述

监控代码的执行顺序是否正确。例如:

8.6.2 适用性

适用于复杂控制逻辑和状态机实现。

8.6.3 应用层 vs. BSW

应用层在 SW-C 中实现。

8.6.4 AUTOSAR 参考

主要参考 RTE 和 SW-C 模板。

8.7 活性监控(Aliveness monitoring)

8.7.1 描述

活性监控验证监控对象(任务、SW-C、ECU)是否按预期频率报告存活。如果未在规定时间内报告,则认为该对象发生故障。

AUTOSAR 中通过 WdgM(看门狗管理器)实现。

8.7.2 适用性

几乎所有安全相关 ECU 都需要活性监控。

8.7.3 应用层 vs. BSW

WdgM 是 BSW 模块;SW-C 通过 WdgM_CheckpointReached() 报告活性。

8.7.4 AUTOSAR 参考

主要参考 AUTOSAR_SWS_WatchdogManager.pdf

8.8 状态与模式管理(Status and Mode Management)

8.8.1 描述

通过统一的状态机管理 ECU 各子系统的运行模式:

8.8.2 适用性

所有 ECU 都需要状态与模式管理。

8.8.3 应用层 vs. BSW

BswM、EcuM、ComM 是 BSW;应用层模式由 SW-C 实现。

8.8.4 AUTOSAR 参考

主要参考 BswM、EcuM、ComM 规范。

8.9 重配置(Reconfiguration)

8.9.1 描述

在运行时重新配置系统参数或软件组件,以适应故障状态或工作模式变化。

示例:

8.9.2 适用性

适用于需要在故障后调整行为的系统。

8.9.3 应用层 vs. BSW

BSW 提供配置切换机制;具体策略由应用层决定。

8.9.4 AUTOSAR 参考

主要参考 EcuM、BswM 规范。

8.10 复位(Reset)

8.10.1 描述

当其他恢复策略失败时,执行复位。复位类型包括:

8.10.2 适用性

适用于无法通过其他方式恢复的严重故障。

8.8.3 应用层 vs. BSW

EcuM 管理复位;SW-C 可请求复位。

8.10.4 AUTOSAR 参考

主要参考 AUTOSAR_SWS_ECUStateManager.pdf

8.11 错误过滤(Error Filtering)

8.11.1 描述

通过过滤机制避免错误洪流(error storm),例如:

8.11.2 适用性

所有使用 Dem 的系统。

8.11.3 应用层 vs. BSW

Dem 实现过滤;SW-C 可通过 API 配置。

8.11.4 AUTOSAR 参考

主要参考 AUTOSAR_SWS_DiagnosticEventManager.pdf

8.12 内存保护(Memory Protection)

8.12.1 描述

通过内存保护机制防止分区之间相互干扰(freedom from interference):

8.12.2 适用性

所有多分区 ECU 都应启用内存保护。

8.12.3 应用层 vs. BSW

OS 和 Memory Mapping 提供内存保护,应用层不直接涉及。

8.12.4 AUTOSAR 参考

主要参考 OS 规范和 Memory Mapping 规范。

8.13 时间保护(Timing Protection)

8.13.1 描述

通过时间保护机制检测:

8.13.2 适用性

所有 ASIL 等级 ECU 都应启用时间保护。

8.13.3 应用层 vs. BSW

OS 提供时间保护,应用层无需直接涉及。

8.13.4 AUTOSAR 参考

主要参考 AUTOSAR_SWS_OS.pdf

9 方面映射(Aspect mapping)

9.1 映射到 FDIR 过程和错误模型(Mapping to FDIR process and Error Model)

每种错误处理机制与 FDIR 阶段和错误模型的对应关系:

机制检测隔离恢复错误模型
合理性检查部分开发/运行时
替代值
投票瞬态/永久
一致性永久
校验和瞬态/永久
执行序列开发
活性监控部分永久
状态/模式管理
重配置
复位永久
错误过滤
内存保护永久
时间保护永久

9.2 映射到实现层级(Mapping to implementation level)

每种机制在不同 AUTOSAR 层的实现位置:

机制SW-CRTEBSWOS
合理性检查
替代值
投票部分
校验和
活性监控✓(WdgM)
状态/模式管理✓(BswM、EcuM)
复位✓(EcuM)
内存保护
时间保护

10 终止与重启分区(Terminating and restarting partitions)

10.1 介绍(Introduction)

10.1.1 汽车应用(Automotive Applications)

汽车应用对可用性安全性有严格要求。当某个软件组件发生故障时,立即复位整个 ECU 往往不可接受(驾驶体验差)。更好的方案是仅终止并重启故障分区

10.1.2 软件分区与错误隔离区域(Software Partitioning & Error Containment Regions)

AUTOSAR 通过OS-Application(OS 应用)实现分区。每个 OS-Application 有独立的内存、时间和错误隔离。

10.2 基本原理 – 用例(Rationale – Use Cases)

10.2.1 用例 1:软件分区(Use Case 1: Software Partitioning)

用例:将不同 ASIL 等级的 SW-C 部署到不同分区。例如:

10.2.2 用例 2:应用层错误处理(Use Case 2: Application-level Error Handling)

用例:单个 SW-C 内部检测到错误,请求重启所在分区,以保持 ECU 其他部分继续运行。

10.3 终止与重启分区的方法(Approach for Terminating and Restarting Partitions)

10.3.1 OS 特性(OS features)

AUTOSAR OS 提供以下与分区终止/重启相关的特性:

10.3.2 从 OS-Application 到分区的演进(Going from OS-Applications to partitions)

AUTOSAR 4.x 将 OS-Application 概念进一步发展为分区(Partition)。每个分区可有多个 OS-Application,支持更细粒度的隔离。

10.3.3 分区终止与重启的时序图(Sequence diagram for termination and restart of a partition)

典型流程:

  1. SW-C 检测到不可恢复错误;
  2. SW-C 调用 Rte_Call_<PartitionTerminate>()
  3. RTE 调用 OS 的 TerminateApplication()
  4. OS 触发分区中其他任务的 ShutdownHook;
  5. OS 停止分区;
  6. EcuM 检测到分区停止;
  7. EcuM 根据重启策略重启分区(冷启动或暖启动);
  8. 分区重新初始化;
  9. SW-C 重新开始正常运行。

10.3.4 对用例的支持(Support for Use Cases)

上述机制同时支持用例 1(分区)和用例 2(应用层错误处理)。

10.3.5 一致性考量(Consistency Aspects)

分区重启时需要考虑数据一致性

10.4 集成商责任(Integrator Responsibility)

集成商负责:

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)