DEENESPTFRRUARHIKOZHNL

Default Error Tracer (DET)

ModulDET (Default Error Tracer)
BSW-Modul-ID15
Standard-Header#include "Det.h"
SWS-SpezifikationAUTOSAR_SWS_DefaultErrorTracer.pdf
ClusterDiagnostic Services

模块指南人工智能生成

集中接收基础软件和 SW-C 的错误报告,并将其转发给集成商 Hook。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 44a890525e71 来源 未决问题(3)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

集中接收基础软件和 SW-C 的错误报告,并将其转发给集成商 Hook。

Default Error Tracer 集中接收来自 BSW 模块和 SW-C 的错误报告。为此提供了用于开发错误的 Det_ReportError、用于运行时错误的 Det_ReportRuntimeError 以及用于瞬态错误的 Det_ReportTransientFault,各自带有模块、实例、API 和错误标识。DET 将每条报告转发给集成商的所有已配置 Hook 或 Callout [SWS_Det_00501]。从 EcuM 中通过 Det_Init 和 Det_Start 启动运行。最重要的边界条件:Det_ReportError 在 R20-11 中不会返回给调用方,而是像断言一样停止程序流 [SWS_Det_00009]。

Default Error Tracer 是来自基础软件和软件组件的错误报告的中央收集点。它提供了三个结构相同的报告服务,带有参数 ModuleId、InstanceId、ApiId 以及 ErrorId 或 FaultId:用于开发错误的 Det_ReportError、用于运行时错误的 Det_ReportRuntimeError 以及用于瞬态错误的 Det_ReportTransientFault([SWS_Det_00009]、[SWS_Det_01001]、[SWS_Det_01003])。EcuM 通过 Det_Init 以及随后的 Det_Start 使 DET 投入运行([SWS_Det_00008]、SWS DET 图 1 第34页)。

det_kontext ecum EcuM det Det ecum->det Det_Init, Det_Start bsw BSW-Module (z. B. CanIf, Dio, Adc) bsw->det Det_ReportError Det_ReportRuntimeError Det_ReportTransientFault swc SW-C rte RTE swc->rte Service-Port DETService rte->det 携带 ModuleId/InstanceId 进行调用 (port defined argument values) hooks Integrator-Code (Error-Hooks / Callouts) det->hooks 所有已配置的 Hooks/Callouts dlt Dlt (optional) det->dlt Dlt_DetForwardErrorTrace dem Dem / 故障内存 hooks->dem 例如 Dem 调用、 存储

上下文图:DET 接收来自 BSW 模块和 SW-C 的报告,并将其转发给集成商 Hook 以及可选地转发给 Dlt。来源:SWS DET 图 2 第28页、[SWS_Det_00202]

DET 本身不对报告进行评估。每个报告服务都会调用为其配置的所有 Hook 或 Callout(DetErrorHook、DetReportRuntimeErrorCallout、DetReportTransientFaultCallout),且所使用的参数与报告的参数相同 [SWS_Det_00501]。通过这些集成商代码,DET 也能访问 DEM 或错误存储器。在此过程中,Callout 应限制在简短、适当的操作范围内 ErrorDescription 第10页。

SW-C 通过客户端-服务器接口 DETService 进行报告。RTE 从 DET 配置中补充 ModuleId 和 InstanceId 作为“port defined argument values”,SW-C 始终收到返回值 E_OK([SWS_Det_00203]、[SWS_Det_00204])。

对于错误情况,这三个服务如何返回至关重要。Det_ReportError 在 R20-11 中不会返回:在执行 Hook 之后,控制流将被停止,就像断言一样([SWS_Det_00009]、RS BSWGeneral 第33页)。相反,运行时报告返回 E_OK。瞬态报告传递 Callout 值,没有 Callout 时返回 E_OK SWS DET 图 6 第36页。瞬态错误自 R24-11 起被取消,Dlt 调用自 R25-11 起被取消 SWS DET 第1页。

通过 Det_ReportError 报告开发错误调用方BSW-Modul (Det User)DetIntegrator-Code带有无效参数的 API 调用Entwicklungsfehler erkanntDet_ReportError(ModuleId,InstanceId, ApiId, ErrorId)altDetErrorHook konfiguriertloop针对每个配置的 Hook<User_Error_Hooks>(ModuleId,InstanceId, ApiId, ErrorId)E_OKkein Hook konfiguriert无 Hook 调用HALT:控制流将不再继续不返回给报告方("never returns" in R20-11)

时序图:发生开发错误时,DET 调用所有已配置的 Hook,随后停止运行,而不返回给报告方。来源:SWS DET 图 9.2 第34页、[SWS_Det_00009]

Default Error Tracer 在系统边界的作用

Default Error Tracer(DET)是基础软件模块和软件组件报告已检测到错误的中央收集点。在 R20-11 中,它为此提供了三个结构相同的报告服务:用于开发错误的 Det_ReportError [SWS_Det_00009]、用于运行时错误的 Det_ReportRuntimeError [SWS_Det_01001] 以及用于瞬态错误的 Det_ReportTransientFault [SWS_Det_01003]。此外还包括管理服务 Det_Init、Det_Start 和 Det_GetVersionInfo([SWS_Det_00008]、[SWS_Det_00010]、[SWS_Det_00011])。DET 本身不对报告内容进行评估。它通过收到的每条报告通知已配置的错误 Hook SWS DET 第16页。

对外而言,DET 的连接十分狭窄。作为唯一预期的接口,规范提及了通过来自 Dlt_Det.h 的 Dlt_DetForwardErrorTrace 可选转发给 Dlt([SWS_Det_00211]、SWS DET 图 2 第28页)。DET 仅能通过 Callout 中的集成商特定代码访问 DEM 和 RTE ErrorDescription 第10页。

det_kontext ecum EcuM det Det ecum->det Det_Init, Det_Start bsw BSW-Module (z. B. CanIf, Dio, Adc) bsw->det Det_ReportError Det_ReportRuntimeError Det_ReportTransientFault swc SW-C rte RTE swc->rte Service-Port DETService rte->det 携带 ModuleId/InstanceId 进行调用 (port defined argument values) hooks Integrator-Code (Error-Hooks / Callouts) det->hooks 所有已配置的 Hooks/Callouts dlt Dlt (optional) det->dlt Dlt_DetForwardErrorTrace dem Dem / 故障内存 hooks->dem 例如 Dem 调用、 存储

上下文图:DET 接收来自 BSW 模块的报告,并通过 RTE 接收来自 SW-C 的报告。它由 EcuM 启动,并仅将报告转发给已配置的集成商代码以及可选地转发给 Dlt。来源:SWS DET 图 2 第28页、[SWS_Det_00202]、[SWS_Det_00211]、ErrorDescription 第10页

启动:由 EcuM 进行初始化和启动

ECU State Manager 使用 Det_Init(Service-ID 0x00)初始化 DET。在此过程中,它传递一个指向所选配置集的指针,类型为 Det_ConfigType,其内容因实现而异([SWS_Det_00008]、[SWS_Det_00210])。随后,Det_Start(Service-ID 0x02)启动 Tracer [SWS_Det_00010]。两个服务都是同步且不可重入的。R20-11 图表显示了来自 EcuM 的先后两次调用 SWS DET 图 1 第34页。EcuM 相应地将 Det_Init 和 Det_ReportError 列为可选接口 SWS EcuM 第142页。

规范并未解释为何将初始化与启动分开。Interpretation:这种两阶段划分大概允许在启动过程中非常早期地初始化 DET,而仅在稍后的步骤中才启用常规操作 [SWS_Det_00010]。 问题 Q-fee4462bdf189dcf (未决)

由 EcuM 启动 DetEcuMDetDet_Init(ConfigPtr)使用所选配置进行初始化Konfigurationssatz (Det_ConfigType)返回(同步)Det_Start()返回(同步)两个服务均为同步且不可重入

时序图:EcuM 首先同步调用带有配置指针的 Det_Init,然后调用 Det_Start。来源:SWS DET 图 1 第34页、[SWS_Det_00008]、[SWS_Det_00010]

三种报告途径及其标识

所有三个报告服务具有相同的参数结构:

  • ModuleId(uint16);
  • InstanceId(uint8),对于单实例模块,该值为 0;
  • ApiId(uint8);
  • ErrorId 或 FaultId(uint8)。

API 标识和错误标识分别由报告模块的 SWS 确定([SWS_Det_00009]、[SWS_Det_01001]、[SWS_Det_01003])。模块 ID 来自基础软件模块列表。基础软件仅使用其中的 0..255 范围 EXP LSA 第157页。

哪种途径正确取决于错误分类。违反基本前置条件属于开发错误,并被当作断言处理;例如软件错误、不正确的集成或无效配置。其余错误属于运行时错误或生产错误 EXP LSA 第154页。如果配置了开发错误检测,BSW 模块将带有其分配的模块 ID 通过 Det_ReportError 报告开发错误 SWS BSWGeneral 第57页。诸如 SPI_DEV_ERROR_DETECT 等预处理器开关可启用或禁用该调用 EXP LSA 第113页。

fehlerklassifikation start Fehler erkannt q1 Grundlegende Vorbedingung verletzt? start->q1 q2 是否与(售后/EOL)诊断相关? q1->q2 不 dev Entwicklungsfehler: Det_ReportError (Programmfluss endet) q1->dev 是 prod 生产错误 (不通过 Det) q2->prod 是 rt Laufzeitfehler: Det_ReportRuntimeError q2->rt 不

活动图:如果违反了基本前置条件,则通过 Det_ReportError 报告开发错误。否则,诊断相关性在生产错误和运行时错误之间做出决定(Det_ReportRuntimeError)。来源:EXP LSA 第154页、[SWS_Det_00009]、[SWS_Det_01001]

例如 ADC 驱动程序使用 ADC_E_BUSY 报告运行时错误,或者 Dds 在消息被丢弃时报告运行时错误,分别通过 Det_ReportRuntimeError(SWS Adc 第95页、SWS Dds 第53页)。BSW 模块使用 ServiceNeeds 类型 ErrorTracerNeeds 描述其需求。它包含角色 Det_ReportError、Det_ReportRuntimeError 和 Det_ReportTransientFault TPS BSWMDT 第266页。

Hook 和 Callout 作为通向集成商代码的桥梁

对 Det_ReportError 的每次调用都会调用在 DetErrorHook 中配置的所有函数。同样,Det_ReportRuntimeError 和 Det_ReportTransientFault 分别调用来自 DetReportRuntimeErrorCallout 或 DetReportTransientFaultCallout 的所有 Callout [SWS_Det_00501]。Hook 和 Callout 具有触发服务的签名,并接收相同的参数([SWS_Det_00181]、[SWS_Det_00184]、[SWS_Det_00187]、SWS DET 第16页)。Hook 接口 <User_Error_Hooks> 的 Service-ID 为 0x10。它是同步且可重入的,并始终返回 E_OK SWS DET 第25页。

Callout 执行什么操作由集成商决定。对于运行时错误和瞬态错误,它们应限制在少数操作中:保存事件、调用 DEM 或执行其他简短、适当的操作 ErrorDescription 第10页。在调用 Det_ReportRuntimeError 之后,无论是否配置了 Callout,DET 始终返回 E_OK(SWS DET 图 4 第35页、SWS DET 图 5 第35页)。

带与不带 Callout 的 Det_ReportRuntimeErrorDet UserDetIntegrator-CodeDet_ReportRuntimeError(ModuleId,InstanceId, ApiId, ErrorId)altDetReportRuntimeErrorCallout konfiguriertloop针对每个配置的 Callout<DetReportRuntimeErrorCallout>(ModuleId,InstanceId, ApiId, ErrorId)E_OKkein Callout konfiguriert不转发E_OK报告方的程序流继续运行

时序图:Det_ReportRuntimeError 调用所有已配置的 Callout,并无论如何都向报告方返回 E_OK。来源:SWS DET 图 4 第35页、SWS DET 图 5 第35页、[SWS_Det_00501]

相反,在 Det_ReportTransientFault 中,DET 将 Callout 的返回值透传给报告方。在没有 Callout 的情况下,它返回 E_OK(SWS DET 图 6 第36页、SWS DET 图 7 第36页)。对于多个 Callout,较新的版本描述了对返回值进行逻辑“或”运算:仅当所有 Callout 都返回 E_OK 时,才会返回 E_OK。该规则大概率在 R20-11 中就已适用 SWS DET 第24页。 问题 (未决)

带与不带 Callout 的 Det_ReportTransientFaultDet UserDetIntegrator-CodeDet_ReportTransientFault(ModuleId,InstanceId, ApiId, FaultId)altDetReportTransientFaultCallout konfiguriertloop针对每个配置的 Callout<DetReportTransientFaultCallout>(ModuleId,InstanceId, ApiId, FaultId)返回值 X对返回值执行逻辑或运算(R20-11 的假设)Callout-Ergebniskein Callout konfiguriertE_OK

时序图:Det_ReportTransientFault 将 Callout 的返回值传递给报告方;在没有 Callout 的情况下,它返回 E_OK。多个 Callout 时的“或”运算被标记为假设。来源:SWS DET 图 6 第36页、SWS DET 图 7 第36页、SWS DET 第24页

通过服务端口连接软件组件

SW-C 通过客户端-服务器接口 DETService 访问 DET。其操作使用端口的模块 ID 调用 Det_ReportError 或运行时报告 [SWS_Det_00202]。SW-C 本身并不传递 ModuleId 和 InstanceId。RTE 将其作为“port defined argument values”进行补充,其值来自 DET 配置的 DetModuleId 和 DetInstanceId([SWS_Det_00204]、[SWS_Det_00205]、[SWS_Det_00206])。对于 SW-C,ApiId 和 ErrorId 未标准化,可在 0x00..0xFF 范围内自由分配。返回值始终为 E_OK [SWS_Det_00203]。端口接口使用 AUTOSAR 数据类型 uint8 和 uint16 [SWS_Det_00200]。

SW-C 通过服务端口报告错误SW-CRTEDetReportRuntimeError(ApiId, ErrorId)通过 R-Port (DETService)携带补充的 ModuleId、InstanceId 进行调用(port defined argument values)来自 DetModuleId / DetInstanceId 的值Det 配置的值Det_ReportRuntimeError(ModuleId,InstanceId, ApiId, ErrorId)E_OKE_OK

时序图:SW-C 仅传递 ApiId 和 ErrorId。RTE 从配置中补充 ModuleId 和 InstanceId,返回值为 E_OK。来源:[SWS_Det_00202]、[SWS_Det_00203]、[SWS_Det_00204]、SWS DET 图 3 第33页

通知的配置

通知函数位于可选容器 DetNotification(多重性 0..1)中。它包含列表 DetErrorHook 和 DetReportRuntimeErrorCallout(各为 0..*)。DetErrorHook 在预编译期配置,并要求函数类型 Std_ReturnType (*f)(uint16, uint8, uint8, uint8) SWS DET 第37页。在 R20-11 中增加了 DetReportTransientFaultCallout [SWS_Det_00501]。参数图表还显示了包含 DetVersionInfoApi 和 DetForwardToDlt 的必选容器 DetGeneral SWS DET (alt) 图 6 第43页。配置从 DetConfigSet/DetModule 和 DetModuleInstance 构建端口 Det_{Name} 以及模块和实例标识 [SWS_Det_00205]。

发生错误时的行为

开发错误被当作断言处理。在调用已配置的 Hook 之后,正常的控制流不会继续,DET 会停止执行,例如通过死循环或挂起指令 RS BSWGeneral 第33页。这与 R20-11 中 Det_ReportError 在 Sync/Async 下的条目相匹配:“Not Applicable: The function never returns” [SWS_Det_00009]。图表显示了带有和不带有已配置 Hook 的这种 HALT(SWS DET 图 9.2 第34页、SWS DET 图 9.3 第35页)。

通过 Det_ReportError 报告开发错误调用方BSW-Modul (Det User)DetIntegrator-Code带有无效参数的 API 调用Entwicklungsfehler erkanntDet_ReportError(ModuleId,InstanceId, ApiId, ErrorId)altDetErrorHook konfiguriertloop针对每个配置的 Hook<User_Error_Hooks>(ModuleId,InstanceId, ApiId, ErrorId)E_OKkein Hook konfiguriert无 Hook 调用HALT:控制流将不再继续不返回给报告方("never returns" in R20-11)

时序图:BSW 模块检测到开发错误并调用 Det_ReportError。DET 调用所有已配置的 Hook,随后停止运行,而不返回给报告方。来源:SWS DET 图 9.2 第34页、SWS DET 图 9.3 第35页、[SWS_Det_00009]、[SWS_Det_00501]

一些图表偏离了这一点。一张时序图注明同步或异步行为取决于实现,并绘制了返回调用方 SWS DET 图 5 第36页。Dio 图表在 Det_ReportError 之后也显示了返回 SWS Dio 图 5 第41页。对 R20-11 具有规范约束力的是 [SWS_Det_00009]。直到 R21-11 才对 Sync/Async 说明进行了澄清 SWS DET 第1页。

运行时错误和瞬态错误不会中断程序流:DET 带着返回值返回给报告方([SWS_Det_01001]、[SWS_Det_01003])。DET 本身仅包含一个自己的开发错误。当使用空指针调用 Det_GetVersionInfo 时,会产生 DET_E_PARAM_POINTER(0x01)[SWS_Det_00301]。较新的版本规定该错误将报告给所有已配置的 Callout。这大概也是针对 R20-11 的原意 SWS DET 第18页。 问题 Q-3a7f5865d61186d4 (未决)

进一步详细证据

后续版本更改了功能范围。来自 R23-11/R24-11 的一个版本将 Det_ReportTransientFault 标记为 OBSOLETE SWS DET 第24页。根据变更历史,瞬态错误自 R24-11 起被取消,Dlt 调用自 R25-11 起被取消 SWS DET 第1页。在 R20-11 中,这两项功能仍是规范的一部分([SWS_Det_01003]、[SWS_Det_00211])。

基于有效负载中提供的规范摘录的 AI 生成模块指南。对 R20-11 具有规范约束力的仅为所链接的需求;来自其他版本的陈述均已做相应标记。

Default Error Tracer (DET)

The DET handles development errors, runtime errors, and transient faults across all BSW modules and SW-Cs.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 Det_Init [SWS_Det_00008] 📄 PDF

void Det_Init (const Det_ConfigType* ConfigPtr);

Service to initialize the Default Error Tracer.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 03eaeb7bec98 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 Det_Init 用作初始化 Default Error Tracer ([SWS_Det_00008]) 的核心服务。它通过头文件 Det.h 提供,并具有签名 void Det_Init (const Det_ConfigType* ConfigPtr)。该函数通过形式输入参数 ConfigPtr 接收指向所选模块配置数据集的指针。该服务未规定返回值([SWS_Det_00008])。

在运行时行为方面,Det_Init 被强制指定为不可重入(Non Reentrant)([SWS_Det_00008])。因此,在运行期间绝不允许从不同的执行上下文中以并行或中断方式调用该函数。该模块大概率会在基础软件的初始化阶段被集中调用,此时其他 BSW 模块或组件尚未向 DET 传输错误(解释)。 问题 Q-143a3c098d03d7f8 (未决)

该函数定义的服务 ID 为 0x00([SWS_Det_00008])。在此规范摘录中,未针对此初始化调用指明其自身的错误代码、特定的错误处理机制或通过 DET 或 DEM 发送的单独错误消息。

在需求跟踪框架内,该接口满足 [SRS_BSW_00310] 对统一 API 命名约定的通用 AUTOSAR 规范(SWS DefaultErrorTracer §6 “Requirements Tracing”)。

本说明由 AI 基于 AUTOSAR R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 Det_ReportError [SWS_Det_00009] 📄 PDF

Std_ReturnType Det_ReportError (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

Service to report development errors.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 52a5f1bc3a91 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数Det_ReportError在AUTOSAR Classic BSW模块中用于在错误检测处于激活状态时报告开发错误([SWS_BSW_00045],[SWS_Det_00009])。该接口声明为可重入([SWS_Det_00009])。执行行为不会返回给调用者(“never returns”);返回类型Std_ReturnType的存在仅用于与服务和钩子兼容([SWS_Det_00009])。

传入参数唯一标识错误上下文([SWS_Det_00009]):

开发错误代表由于软件错误、配置错误或集成问题导致的基本前提条件破坏(EXP_LayeredSoftwareArchitecture §3 “Error Classification”,[SRS_BSW_00337] 原文尚未导入),例如调用未初始化的模块([SWS_BSW_00243])或无效参数([SWS_CANIF_00538])。它们被作为断言处理:在调用DetErrorHook中配置的所有回调([SWS_Det_00501])之后,不得继续正常的控制流;DET例如通过死循环、停机指令或复位来停止执行([SRS_BSW_00337] 原文尚未导入,EXP_LayeredSoftwareArchitecture §3 “Error Classification”)。

此使用说明由AI基于AUTOSAR R20-11规范生成。

实现者指南即将推出(复杂度 I2)

函数 Det_Start [SWS_Det_00010] 📄 PDF

void Det_Start (void);

Service to start the Default Error Tracer.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: c7a7762c6c8d 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步API函数Det_Start用于启动Default Error Tracer(DET)([SWS_Det_00010])。该服务在头文件Det.h中的服务ID 0x02下声明(SWS_DefaultErrorTracer §8.1.3.3 “Det_Start”)。根据语法void Det_Start(void),该函数既不接收输入参数也不接收输出参数,且不向调用者返回任何返回值([SWS_Det_00010])。

对于集成和执行,适用特定条件:

  • 可重入性与并发性:该函数被定义为不可重入(Non Reentrant)([SWS_Det_00010])。不允许来自多个任务或中断上下文的并行调用。
  • 调用上下文:解释:该调用通常在基础初始化后的系统启动期间集中进行,以激活ECU中的错误追踪功能。 问题 Q-b28f205b1cc7acfa (未决)
  • 错误处理:该接口不报告错误状态;在规范摘录中,未为此调用定义错误代码,也未定义DET或DEM事件([SWS_Det_00010])。

在整个系统中,Det_Start符合[SRS_BSW_00310] 原文尚未导入中规定的AUTOSAR基础软件标准化命名约定(SWS_DefaultErrorTracer §6 “Requirements Tracing”)。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 Det_ReportRuntimeError [SWS_Det_01001] 📄 PDF

Std_ReturnType Det_ReportRuntimeError (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, faultErrorTracer uint8 ErrorId);

Service to report runtime errors. If a callout has been configured then this callout shall be called.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a935ac5290c8 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 [SWS_Det_01001] 在 Det.h 中用作接收运行时错误(Runtime Errors)的核心 BSW 服务。它同步工作并设计为可重入的 [SWS_Det_01001]。

用法与参数

调用方 BSW 模块在指示错误时向 [SWS_Det_01001] 传递四个必选参数:

  • ModuleId:报告方 BSW 模块的模块标识符。
  • InstanceId:基于索引的实例编号(对于仅有一个实例的模块,该值为 0)。
  • ApiId:发生错误的 API 函数的标识符。
  • ErrorId:检测到的运行时错误的模块特定标识符。

该服务始终向调用模块返回返回值 E_OK [SWS_Det_01001]。

交互与错误处理

根据 AUTOSAR 架构,运行时错误有别于开发错误(违反基本前提条件)和生产错误(与车间诊断相关)EXP_LayeredSoftwareArchitecture §Integration and Runtime Aspects。例如,该服务作为必选接口被 ADC 驱动程序 [SWS_Adc_00530] 或 DDS [CP_SWS_Dds_00832] 原文尚未导入 集成。

在 CanIf 中,例如通过离线通道尝试发送会导致报告 CANIF_E_STOPPED [SWS_CANIF_00382],而无截断的长度超限则报告为 CANIF_E_TXPDU_LENGTH_EXCEEDED [SWS_CANIF_00900]。

在调用 [SWS_Det_01001] 时,将执行在配置参数 DetReportRuntimeErrorCallout 中存储的所有 callout 函数 [SWS_Det_00503]。如果未配置错误钩子,则不会执行额外的函数调用,只要配置了 DLT,向其转发的操作仍将保持激活 [SWS_Det_00503]。

本使用说明基于 AUTOSAR R20-11 规范版本自动创建。

实现者指南即将推出(复杂度 I2)

函数 Det_ReportTransientFault [SWS_Det_01003] 📄 PDF

Std_ReturnType Det_ReportTransientFault (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 FaultId);

Service to report transient faults. If a callout has been configured than this callout shall be called and the returned value of the callout shall be returned. Otherwise it returns immediately with E_ OK.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a646ffef7d6e 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数Det_ReportTransientFault(服务ID 0x05)供BSW模块用于向Default Error Tracer标准化报告检测到的瞬态错误([SWS_BSW_00225],[SWS_Det_01003])。该服务通过头文件Det.h声明,但在Release R20-11中被标记为已弃用(OBSOLETE)(SWS_DefaultErrorTracer §8.1.3.5 “Det_ReportTransientFault”)。

调用时仅传递输入参数:调用模块的标识符(ModuleId)、实例索引(InstanceId,其中单实例模块传递0)、检测到错误的API的服务ID(ApiId)以及错误编号(FaultId),根据SWS_BSWGeneral §7.2.4.4 “Reporting”,其类型必须为uint8([SWS_Det_01003])。

该调用将错误转发给配置的Callout函数并评估其反馈:

  • 一次调用会导致执行在DetReportTransientFaultCallout下配置的所有回调([SWS_Det_00502])。
  • 如果不存在配置的Callout,该函数立即终止并返回值E_OK([SWS_Det_01003])。
  • 如果恰好设置了一个Callout,Det_ReportTransientFault将返回其类型为Std_ReturnType的返回值([SWS_Det_01003])。
  • 如果存在多个Callout,则形成所有Callout返回值的逻辑“或”运算(总和)。由于定义了E_OK = 0,因此仅当所有Callout均无错误地以E_OK响应时,该函数才返回E_OK([SWS_Det_01003])。

在并发性和执行环境方面,该函数设计为可重入的,因此可以从不同的模块上下文并发调用它([SWS_Det_01003])。

此文本由 AI 基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 <User_Error_Hooks> [SWS_Det_00181] 📄 PDF

Std_ReturnType <User_Error_Hooks> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

-

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ff89a131530f 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

可配置接口<User_Error_Hooks>定义了在检测到开发错误时调用用户定义的Callout函数[SWS_Det_00181]。一旦调用函数Det_ReportError,必须同步执行系统中为此配置的所有Callout [SWS_Det_00180]。该接口的声明通过头文件Det_Externals.h提供SWS DefaultErrorTracer §8.1.5 “Callout Functions / Configurable Interfaces”。

该函数具有服务ID 0x10,并传递四个用于错误分析的诊断参数[SWS_Det_00181]:

  • ModuleId:调用BSW模块的唯一模块ID。
  • InstanceId:模块实例的标识符,从0开始(对于仅具有一个实例的模块,传递0)。
  • ApiId:受影响API函数的标识符,根据相应模块的规范。
  • ErrorId:特定开发错误的标识符。

根据规范,该接口始终返回返回值E_OK,正如对此类服务所要求的那样[SWS_Det_00181]。自定义错误代码或替代状态值无法通过该接口返回给调用者。

在执行方面,<User_Error_Hooks>设计为同步且可重入的[SWS_Det_00181]。如果为同一服务定义了多个Callout,则它们必须具有相同的签名和服务ID [SWS_Det_00180]。解释:由于处理直接在Det_ReportError的调用上下文中进行,用户钩子不应使用阻塞机制,以免延迟系统执行。 问题 Q-acd1afcd9336992f (未决)

此使用说明根据AUTOSAR R20-11规范自动生成。

函数 <DetReportRuntimeErrorCallout> [SWS_Det_00184] 📄 PDF

Std_ReturnType <DetReportRuntimeErrorCallout> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

-

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 19a5d54e4d0b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

可配置的 Callout 接口 <DetReportRuntimeErrorCallout> 用于在 Default Error Tracer 中对运行时错误进行用户特定的捕获与进一步处理(SWS_DefaultErrorTracer §8.1.5 “Callout Functions / Configurable Interfaces”)。一旦调用函数 Det_ReportRuntimeError,DET 便会同步执行为此配置的所有 Callout 函数([SWS_Det_00180]、[SWS_Det_00503])。配置的 Callout 函数通过头文件 Det_Externals.h 提供,并具有服务 ID 0x11([SWS_Det_00184])。

参数与返回值

  • ModuleId (uint16):报告运行时错误的 BSW 模块的数字标识符([SWS_Det_00184])。
  • InstanceId (uint8):模块实例索引,从 0 开始;对于单实例,始终传递 0 ([SWS_Det_00184])。
  • ApiId (uint8):发生运行时错误的 API 服务的标识符 ([SWS_Det_00184])。
  • ErrorId (uint8):检测到的运行时错误的模块特定标识符 ([SWS_Det_00184])。
  • 返回值:根据服务规范,类型 Std_ReturnType 始终返回 E_OK ([SWS_Det_00184])。

并发性与行为

该 callout 函数被指定为可重入的,并在报告者的执行上下文中同步执行 ([SWS_Det_00184])。为同一服务配置的所有 callout 必须具有相同的签名和服务 ID ([SWS_Det_00180])。由于返回值固定指定为 E_OK,因此不会通过 callout 向 DET 反馈错误状态。

注意:此使用说明是基于 AUTOSAR Classic R20-11 规范自动生成的。

函数 <DetReportTransientFaultCallout> [SWS_Det_00187] 📄 PDF

Std_ReturnType <DetReportTransientFaultCallout> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 FaultId);

-

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: aceceb0a4117 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

Callout 钩子 [SWS_Det_00187] 用于在 Default Error Tracer (DET) 中对瞬态错误进行应用程序特定的处理。该函数同步执行,并使用服务 ID 0x12 进行定义 [SWS_Det_00187]。它接收四个输入参数:

  • ModuleId:调用方软件模块的模块标识符 [SWS_Det_00187]。
  • InstanceId:从 0 开始的模块基于索引的实例 ID,其中单实例模块必须传递值 0 [SWS_Det_00187]。
  • ApiId:发生瞬态错误的 API 服务的标识符 [SWS_Det_00187]。
  • FaultId:根据调用模块的 SWS 检测到的瞬态错误标识符 [SWS_Det_00187]。

作为返回值,该接口提供一个类型为 Std_ReturnType 的值,该值直接传播给 Det_ReportTransientFault 的调用者 [SWS_Det_00187]。声明通过头文件 Det_Externals.h 提供 [SWS_Det_00187]。

在并发性方面,该函数被指定为可重入的 [SWS_Det_00187]。由于返回值是同步传递的,callout 实现可能不应包含任何阻塞操作,以免造成报告模块的执行发生不可接受的延迟。 问题 Q-23eaffed8be030bb (未决)

本文本由 AI 基于规范数据生成。

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Det
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Det@rel:R20-11#a30a3af4
Content hash
a30a3af4
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_DefaultErrorTracer.pdf#nameddest=SWS_Det_00008

初始化与状态

Returns the version information of this module.

void Det_GetVersionInfo (Std_VersionInfoType* versioninfo);
Det_Init 函数

Service to initialize the Default Error Tracer.

void Det_Init (const Det_ConfigType* ConfigPtr);

服务

Service to report development errors.

Std_ReturnType Det_ReportError (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

Service to report runtime errors. If a callout has been configured then this callout shall be called.

Std_ReturnType Det_ReportRuntimeError (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, faultErrorTracer uint8 ErrorId);

Service to report transient faults. If a callout has been configured than this callout shall be called and the returned value of the callout shall be returned. Otherwise it returns immediately with E_ OK.

Std_ReturnType Det_ReportTransientFault (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 FaultId);
Det_Start 函数

Service to start the Default Error Tracer.

void Det_Start (void);

Callout 与预期接口

-

Std_ReturnType <DetReportRuntimeErrorCallout> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

-

Std_ReturnType <DetReportTransientFaultCallout> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 FaultId);

-

Std_ReturnType <User_Error_Hooks> (uint16 ModuleId, uint8 InstanceId, uint8 ApiId, uint8 ErrorId);

类型

Configuration data structure of the Det module.