1 目的(Purpose)
本文档的目的:
- 给出 BSW 异常行为的概述(不限于单个模块);
- 澄清错误处理机制,以保证任何 BSW 实现具有相同的行为,并允许更安全地交换模块;
- 列出为应用软件提供的 BSW 机制,并可能指出需要补充的不足;
- 从安全分析的角度,给出不同机制对失效模式的检测和恢复覆盖情况。
本文档面向 BSW 模块开发者和应用/SW-C 开发者。
本文档描述了 AUTOSAR 基础软件处理的所有现有错误,以及架构根据 FDIR(故障、检测、隔离与恢复)过程对这些错误的反应方式。
本文档还描述了每种现有错误处理机制对已识别失效模式的覆盖。假设失效模式是与硬件相关的随机失效。用于检测这些硬件失效的软件机制也可能检测出 SW(设计)故障。这些机制被映射到失效模式列表,并评估其在检测和恢复程度方面的效果。
限制:目前,本文档的范围仅限于 CAN 通信栈和内存栈。
本文档仅为描述性,不包含需求。基础软件模块的功能和需求在相应的规范文档中规定。
本文档仅描述 AUTOSAR 架构中包含的标准错误。可以因特定实现和/或特定硬件特性添加特定错误。
2 与其他文档的关系(Relation to other documents)
本文档与 AUTOSAR 发布的许多其他文档相关。本文档的目的不是替代其他文档,而是提供 BSW 中错误处理的完整视图。因此本文档与其他文档之间存在相当数量的重叠。注意:本文档仅为描述性,不包含需求。
3 文档导读(Guide to the document)
以下章节的内容摘要:
- 第 4 章:通用机制:描述通用的错误处理机制。
- 第 5 章:通信相关错误:
- 5.1 概述:通信栈中现有错误处理机制概述,以及每种机制到已识别失效模式的映射;
- 5.X:精确描述通信栈中每种错误的 AUTOSAR 架构行为。
- 第 6 章:内存相关错误:
- 6.1 概述:内存栈中现有错误处理机制概述,以及每种机制到已识别失效模式的映射;
- 6.X:精确描述内存栈中每种错误的 AUTOSAR 架构行为。
对于每个错误:
- 一张图呈现该错误的信息流概要,并指出错误在哪里被检测、缓解或恢复;
- 每个模块的表格详细列出错误处理的具体项:
| 项 | 说明 |
|---|---|
| 检测(Detection) | 描述模块如何检测或被通知此错误情况 |
| 反应(Reaction) | 指示模块的内部反应(如内部状态变化) |
| 报告(Report) | 指示如何将错误通知给栈中的其他模块或 AUTOSAR 基础架构 |
| 恢复(Recovery) | 指示如何/是否由模块恢复或缓解错误 |
4 通用机制(Generic Mechanisms)
4.1 上报给 DEM(诊断事件管理器)(Report to the Diagnostic Event Manager (DEM))
4.1.1 概要(Summary)
DEM(Diagnostic Event Manager)是 AUTOSAR 中集中管理生产错误和扩展生产错误的 BSW 模块。所有 BSW 模块和 SW-C 都应通过 DEM 上报此类错误。
4.1.2 模块的角色(Roles of the modules)
在错误处理过程中,各模块的角色:
- 检测模块:检测到错误并调用 DEM 接口;
- DEM:接收错误事件,根据配置的去抖(debounce)算法确定事件状态(passed/failed/prepassed),并存储事件信息;
- FIM(Function Inhibition Manager):根据 DEM 的事件状态,决定是否禁用某些功能;
- DCM(Diagnostic Communication Manager):响应外部诊断请求(如 UDS)读取 DEM 中的错误状态。
5 通信相关错误(Communication related errors)
5.1 概述(Overview)
5.1.1 错误处理机制(Error handling mechanisms)
CAN 通信栈的错误处理机制包括:
- 硬件错误检测(如 CAN 控制器 Bus Off);
- 协议错误检测(如 DLC 不匹配、传输协议错误);
- 时间监控(如 Deadline Monitoring);
- 数据一致性检查(如 PDU counter、CRC);
- 通信状态管理(如 NM 状态机)。
5.1.2 CAN 栈的错误列表(Error list for CAN stack)
本章详细描述的 CAN 通信错误包括:
- CAN Bus Off
- CAN 控制器硬件超时
- CAN 发送缓冲区满
- CAN 接收 DLC 错误
- COM RX/TX Deadline Monitoring
- CAN TP 发送/接收错误
- CAN NM TX Deadline Monitoring
- PDU 复制/计数器错误
- 客户端/服务器超时
5.1.3 EH 机制到硬件失效模式的映射(Mappings of EH mechanisms to hardware failure modes)
每种错误处理机制对硬件失效模式的覆盖情况详见原文 5.1.3 节表格。
5.2 通信信道丢失(Loss of communication channel)
5.2.1 CAN Bus Off
错误描述:当 CAN 控制器检测到过多的发送错误(通常为 255 个 TEC)时,控制器进入 Bus Off 状态,停止参与总线通信。
| 项 | 说明 |
|---|---|
| 检测 | CAN 控制器硬件检测 TEC 计数达到 255,触发 Bus Off 状态。 |
| 反应 | CAN 驱动器(CanDrv)进入 Bus Off 状态,停止发送;CanIf 通知 CanSM。 |
| 报告 | CanSM 上报 Bus Off 状态至 ComM 和 BswM;CanDrv 上报 CAN_E_BUSOFF 至 Dem。 |
| 恢复 | 等待恢复时间后,CanDrv 尝试重新初始化 CAN 控制器(通常 250ms);成功后恢复正常通信;失败后由 CanSM 决定是继续重试还是切到 No Communication 状态。 |
5.2.2 CAN 控制器硬件超时(CAN Controller Hardware Timeout)
错误描述:当 CAN 控制器长时间不响应CPU 的访问时发生硬件超时。
| 项 | 说明 |
|---|---|
| 检测 | CanDrv 通过超时机制(轮询或中断)检测控制器不响应。 |
| 反应 | CanDrv 报告错误,禁用 CAN 控制器。 |
| 报告 | CanDrv 上报 CAN_E_TIMEOUT 至 Dem。 |
| 恢复 | EcuM 重启 CAN 控制器或整个 ECU。 |
5.3 信号错误(Signal error)
5.3.1 CAN 发送缓冲区满(CAN Transmission buffer full)
错误描述:当所有 CAN 发送硬件缓冲区(Mailbox)都被占用时,新请求无法入队。
| 项 | 说明 |
|---|---|
| 检测 | CanDrv 尝试入队发送请求时无可用 Mailbox。 |
| 反应 | CanDrv 返回 CAN_BUSY 给调用者(CanIf)。 |
| 报告 | 可选地上报至 Dem。 |
| 恢复 | 调用者根据上层策略决定:重试、丢弃、或触发应用层错误处理。 |
5.3.2 CAN 接收 DLC 错误(CAN Reception DLC error)
错误描述:接收到的 PDU 的 DLC 与配置值不匹配。
| 项 | 说明 |
|---|---|
| 检测 | CanIf 比较接收的 DLC 与配置值。 |
| 反应 | 可选地拒绝该 PDU 或按配置的 DLC 处理。 |
| 报告 | 上报 CAN_E_DLC_ERROR 至 Dem。 |
| 恢复 | 无自动恢复;可通过配置或应用层处理。 |
5.3.3 COM RX 截止期监控(COM RX Deadline Monitoring)
错误描述:未在配置的截止期内接收到预期的信号。
| 项 | 说明 |
|---|---|
| 检测 | COM 模块维护每个 RX 信号的接收时间戳,超时则触发监控。 |
| 反应 | COM 标记信号为 EXPIRED 状态。 |
| 报告 | 可选地上报 COM_E_MONITORING 至 Dem。 |
| 恢复 | 应用层读取信号时检查 EXPIRED 状态;下次成功接收自动清除。 |
5.3.4 COM TX 截止期监控(COM TX Deadline Monitoring)
错误描述:信号未在配置的截止期内成功发送。
| 项 | 说明 |
|---|---|
| 检测 | COM 模块维护每个 TX 信号的发送时间戳,超时则触发监控。 |
| 反应 | COM 记录超时;可选地触发应用通知。 |
| 报告 | 可选地上报至 Dem。 |
| 恢复 | 下次成功发送自动清除。 |
5.3.5 CAN TP 发送错误(CAN Transport Protocol error during transmission)
错误描述:多帧(TP)数据传输过程中发生协议错误。
| 项 | 说明 |
|---|---|
| 检测 | CanTp 检测超时、流控制(FC)错误、序列号错误等。 |
| 反应 | CanTp 终止传输并释放资源。 |
| 报告 | 上报 CANTP_E_* 至 Dem;通知 PduR。 |
| 恢复 | 调用者(上层)根据应用策略决定重试或取消。 |
5.3.6 CAN TP 接收错误(CAN Transport Protocol error during reception)
错误描述:多帧(TP)数据接收过程中发生协议错误。
| 项 | 说明 |
|---|---|
| 检测 | CanTp 检测超时、CF 序列错误等。 |
| 反应 | CanTp 终止接收并释放缓冲区。 |
| 报告 | 上报 CANTP_E_* 至 Dem。 |
| 恢复 | 调用者根据应用策略决定。 |
5.3.7 CAN NM TX 截止期监控(CANNM TX Deadline Monitoring)
错误描述:NM(网络管理)消息未在截止期内成功发送。
| 项 | 说明 |
|---|---|
| 检测 | CanNm 检测 NM 消息发送超时。 |
| 反应 | CanNm 通知应用层 NM 状态变化。 |
| 报告 | 上报 CANNM_E_* 至 Dem。 |
| 恢复 | CanNm 切换到错误状态或重试。 |
5.3.8 PDU 复制错误(PDU replication error)
错误描述:同一 PDU 在传输层被复制(duplicate)。
| 项 | 说明 |
|---|---|
| 检测 | 接收端通过 PDU 计数器或 E2E 机制检测复制。 |
| 反应 | 接收端丢弃重复 PDU。 |
| 报告 | 通过 E2E 库上报。 |
| 恢复 | 无自动恢复;可通过重传请求恢复。 |
5.3.9 PDU 计数器错误(PDU counter error)
错误描述:PDU 计数器的值与预期不连续(丢失、乱序)。
| 项 | 说明 |
|---|---|
| 检测 | 接收端通过 PDU 计数器检测丢失或乱序。 |
| 反应 | 接收端标记 PDU 序列错误。 |
| 报告 | 通过 E2E 库上报。 |
| 恢复 | 无自动恢复;可能需要应用层重传。 |
5.3.10 客户端/服务器超时(Client / Server timeout)
错误描述:客户端调用服务器操作,在截止期内未收到响应。
| 项 | 说明 |
|---|---|
| 检测 | RTE 维护调用的超时计时。 |
| 反应 | RTE 返回 RTE_E_TIMEOUT 给调用者。 |
| 报告 | 可选地上报至 Det。 |
| 恢复 | 调用者根据应用策略决定重试或处理错误。 |
6 NVRAM 相关错误(NVRAM related errors)
6.1 概述(Overview)
6.1.1 错误处理机制(Error handling mechanisms)
NVRAM 栈的错误处理机制包括:
- Flash/EEPROM 驱动器级错误检测;
- FEE/EA 一致性检查;
- NVM 校验和验证;
- 冗余数据保护(Block 副本);
- 静默校验(static block check)。
6.1.2 NVRAM 栈的错误列表(Error list for NVRAM stack)
本章详细描述的 NVRAM 错误包括:
- Flash 写/擦除/读/比较错误
- 外部 Flash 硬件 ID 不匹配
- EEPROM 写/擦除/读/比较错误
- FEE/EA 一致性检查错误
- NVM CRC 检查错误
- NVM 写验证错误
- 静态块检查错误
- 冗余丢失
- NVM API 请求失败
6.1.3 EH 机制到 NVRAM 硬件失效模式的映射(Mappings of EH mechanisms to NVRAM hardware failure modes)
每种错误处理机制对 NVRAM 硬件失效模式的覆盖情况详见原文 6.1.3 节表格。
6.2 驱动级错误(Driver level errors)
6.2.1 Flash 写操作错误(Flash write job error)
错误描述:Flash 写操作因硬件错误(如电压异常、坏块)失败。
| 项 | 说明 |
|---|---|
| 检测 | Flash 驱动(Fls)检测硬件错误状态寄存器。 |
| 反应 | Fls 返回 MEMIF_JOB_FAILED,终止当前写操作。 |
| 报告 | 上报 FLS_E_WRITE_FAILED 至 Dem。 |
| 恢复 | Fee/EA 检查坏块状态;标记坏块;重试其他块或块组。 |
6.2.2 Flash 擦除操作错误(Flash erase job error)
错误描述:Flash 擦除操作失败。
| 项 | 说明 |
|---|---|
| 检测 | Fls 检测擦除错误状态。 |
| 反应 | Fls 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 FLS_E_ERASE_FAILED 至 Dem。 |
| 恢复 | 标记坏块;切换到备份扇区(若配置)。 |
6.2.3 Flash 读操作错误(Flash read job error)
错误描述:Flash 读取失败。
| 项 | 说明 |
|---|---|
| 检测 | Fls 检测读取错误或返回非法值。 |
| 反应 | Fls 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 FLS_E_READ_FAILED 至 Dem。 |
| 恢复 | 从冗余副本恢复;否则数据丢失。 |
6.2.4 Flash 比较操作错误(Flash compare job error)
错误描述:Flash 比较结果不匹配。
| 项 | 说明 |
|---|---|
| 检测 | Fls 在写入后比较,发现数据不一致。 |
| 反应 | Fls 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 FLS_E_COMPARE_FAILED 至 Dem。 |
| 恢复 | 重写或标记坏块。 |
6.2.5 外部 Flash 硬件 ID 不匹配(External Flash Hardware ID Mismatch)
错误描述:外部 Flash 的硬件 ID 与配置不一致。
| 项 | 说明 |
|---|---|
| 检测 | Fls 初始化时读取 JEDEC ID,与配置比较。 |
| 反应 | Fls 初始化失败。 |
| 报告 | 上报 FLS_E_HW_ID_MISMATCH 至 Dem。 |
| 恢复 | EcuM 决定是否使用默认配置或停用 NVRAM 服务。 |
6.2.6 EEPROM 写操作错误(EEPROM write job error)
错误描述:EEPROM 写操作失败。
| 项 | 说明 |
|---|---|
| 检测 | Eep 检测硬件错误状态。 |
| 反应 | Eep 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 EEP_E_WRITE_FAILED 至 Dem。 |
| 恢复 | 重试或上报应用层。 |
6.2.7 EEPROM 擦除操作错误(EEPROM erase job error)
错误描述:EEPROM 擦除操作失败。
| 项 | 说明 |
|---|---|
| 检测 | Eep 检测擦除错误状态。 |
| 反应 | Eep 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 EEP_E_ERASE_FAILED 至 Dem。 |
| 恢复 | 应用层处理。 |
6.2.8 EEPROM 读操作错误(EEPROM read job error)
错误描述:EEPROM 读取失败。
| 项 | 说明 |
|---|---|
| 检测 | Eep 检测读取错误或异常值。 |
| 反应 | Eep 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 EEP_E_READ_FAILED 至 Dem。 |
| 恢复 | 从冗余副本恢复。 |
6.2.9 EEPROM 比较操作错误(EEPROM compare job error)
错误描述:EEPROM 比较结果不匹配。
| 项 | 说明 |
|---|---|
| 检测 | Eep 在写入后比较,发现数据不一致。 |
| 反应 | Eep 返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 EEP_E_COMPARE_FAILED 至 Dem。 |
| 恢复 | 重写或上报。 |
6.3 EEPROM 抽象/Flash 仿真级错误(EEPROM Abstraction / Flash Emulation level errors)
6.3.1 FEE 一致性检查错误(FEE consistency check error)
错误描述:FEE(Flash EEPROM Emulation)的一致性检查失败,Flash 中的数据可能损坏。
| 项 | 说明 |
|---|---|
| 检测 | Fee 启动时遍历所有块,检查其一致性。 |
| 反应 | Fee 标记不一致的块;返回 MEMIF_JOB_FAILED。 |
| 报告 | 上报 FEE_E_INCONSISTENT_BLOCK 至 Dem。 |
| 恢复 | NvM 决定使用默认值、备份副本或标记块无效。 |
6.3.2 EA 一致性检查错误(EA consistency check error)
错误描述:EA(EEPROM Abstraction)的一致性检查失败。
| 项 | 说明 |
|---|---|
| 检测 | Ea 启动时检查数据布局。 |
| 反应 | Ea 标记不一致的块。 |
| 报告 | 上报 EA_E_INCONSISTENT_BLOCK 至 Dem。 |
| 恢复 | NvM 使用默认值或备份。 |
6.4 NVRAM 管理器级错误(NVRAM manager level errors)
6.4.1 NVM CRC 检查(NVM CRC check)
错误描述:NvM 块读取时 CRC 校验失败。
| 项 | 说明 |
|---|---|
| 检测 | NvM 比较存储的 CRC 与计算的 CRC。 |
| 反应 | NvM 设置 NVM_REQ_INTEGRITY_FAILED 状态。 |
| 报告 | 上报 NVM_E_INTEGRITY_FAILED 至 Dem。 |
| 恢复 | 从冗余块恢复;使用默认值;标记块无效。 |
6.4.2 NVM 写验证错误(NVM write verification error)
错误描述:NvM 写入后验证失败。
| 项 | 说明 |
|---|---|
| 检测 | NvM 在写操作后比较数据。 |
| 反应 | NvM 标记写失败。 |
| 报告 | 上报 NVM_E_VERIFY_FAILED 至 Dem。 |
| 恢复 | 重写或标记块无效。 |
6.4.3 静态块检查错误(Static block check error)
错误描述:静态块(写一次,多次读)的检查失败。
| 项 | 说明 |
|---|---|
| 检测 | NvM 在启动时验证静态块的一致性。 |
| 反应 | NvM 设置 NVM_REQ_STATIC_BLOCK_CHECK_FAILED。 |
| 报告 | 上报 NVM_E_STATIC_BLOCK_CHECK_FAILED 至 Dem。 |
| 恢复 | 从冗余副本恢复;标记块错误。 |
6.4.4 冗余丢失(Loss of redundancy)
错误描述:NVRAM 块的冗余副本丢失。
| 项 | 说明 |
|---|---|
| 检测 | NvM 在启动时检测冗余副本数量。 |
| 反应 | NvM 设置 NVM_REQ_REDUNDANCY_LOST。 |
| 报告 | 上报 NVM_E_LOSS_OF_REDUNDANCY 至 Dem。 |
| 恢复 | 应用层决定是否继续运行(已无冗余保护)。 |
6.4.5 NVM API 请求失败(NVM API request failure)
错误描述:NVM API 调用因内部状态错误而失败。
| 项 | 说明 |
|---|---|
| 检测 | NvM 检测参数无效、内部状态不一致等。 |
| 反应 | NvM 返回 E_NOT_OK。 |
| 报告 | 可选地上报至 Det。 |
| 恢复 | 调用者根据错误原因处理。 |