DEENESPTFRRUARHIKOZHNL

AUTOSAR RTE

ModulRte (Runtime Environment)
BSW-Modul-ID2
Standard-Header#include "Rte.h"
SWS-SpezifikationAUTOSAR_SWS_RTE.pdf
ClusterRuntime Environment (RTE)

模块指南人工智能生成

连接各软件组件之间以及与基础软件的连接,并协调其执行。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: db6362f39e13 来源 未决问题(2)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

连接各软件组件之间以及与基础软件的连接,并协调其执行。

Runtime Environment (RTE) 将 AUTOSAR 软件组件相互连接以及与基础软件模块连接,并通过 Basic Software Scheduler (SchM) 控制 Classic Platform 上的确定性调度规划 (SWS_RTE 第100页)。其生命周期通过从 SchM_Init 和 Rte_Start 到 Rte_Stop 和 SchM_Deinit 的标准化接口进行协调 [SWS_Rte_08060]、[SWS_Rte_03015]。除了客户端-服务器和发送者-接收者模式外,用于校准参数的软件指针方法以及分区边界处的内存保护检查确保了健壮的实时运行 [SWS_Rte_03914]、[SWS_Rte_02752]。

Runtime Environment (RTE) 将 AUTOSAR 软件组件与 ECU 硬件解耦,并与 Basic Software Scheduler (SchM) 共同协调所有应用和基础软件流程的执行 (SWS_RTE 第100页)。受控的启动过程通过 EcuStateManager 分步进行:首先,SchM_Init 初始化调度器结构,接着在调用 BswM_Init 之前执行 SchM_Start,以及执行 SchM_StartTiming 以使能周期性 BSW 事件 [SWS_Rte_08060]、[SWS_Rte_07273]、[SWS_Rte_04548]。随后通过 Rte_Start 启动应用 SW-C,并在关闭时于通过 SchM_Deinit 进行去初始化之前通过 Rte_Stop 停止 [SWS_Rte_03015]、[SWS_Rte_01262]、[SWS_Rte_04551]。

EcuM、SchM 与 RTE 之间的启动和关闭协调EcuMSchMBswMRTEUse Case: BSW-Scheduler HochlaufphaseSchM_Init(ConfigPtr)Interne Datenstrukturen & initial ModeMachines initialisierenSchM_Start()BswM_Init(ConfigPtr)SchM_StartTiming()BswTimingEvents periodisch aktivierenUse Case: RTE ApplikationsstartRte_Start()Applikations-Runnables & ModeTransitions freigebenRTE_E_OKUse Case: Herunterfahren (Shutdown)Rte_Stop()Runnables stoppen, Kommunikation ignorierenRTE_E_OKSchM_Deinit()Rte_Rips_SchM_Deinit() & Ressourcen freigeben

时序图:EcuM、SchM 与 RTE 之间的时间启动和关闭协调。来源:[SWS_Rte_08060]、[SWS_Rte_07273]、[SWS_Rte_04548]、[SWS_Rte_03015]、[SWS_Rte_01262]、[SWS_Rte_04551]、[SWS_Rte_89019]。

通信涵盖了 ECU 内以及 ECU 间的发送者-接收者和客户端-服务器模式 (SWS_RTE 第286页)。无缓冲数据元素通过 initValue 确保一致的初始值,而有缓冲事件则通过 FIFO 队列进行处理 [SWS_Rte_06009]、[SWS_Rte_02521]。在客户端-服务器交互中,两部分的事务句柄将异步请求与相应的响应关联起来 [SWS_Rte_02649]。通过 Rte_Switch 进行的模式切换遵循确定性的十步序列,其中 Distributed Shared Mode Queue 确保多个模式机严格的执行顺序 [SWS_Rte_02631]、[SWS_Rte_02665]、[SWS_Rte_91102]。

CalprmPointered cluster_single Single Pointered Method cluster_double Double Pointered Method refTabSingle <RteParameterRefTab> (RAM 中的 void 指针数组) grpSingle1 ParameterElementGroup 1 (RAM / PIM / Flash) refTabSingle->grpSingle1 grpSingle2 ParameterElementGroup 2 (RAM / PIM / Flash) refTabSingle->grpSingle2 baseRef Base reference (RAM 中的指针变量) refTabRom Calibration reference table (ROM / Flash) baseRef->refTabRom Initial refTabRam Calibration reference table (RAM 中的副本) baseRef->refTabRam 切换后 grpRom ParameterElementGroup (Flash-Originaldaten) refTabRom->grpRom grpRam ParameterElementGroup (Modifizierte RAM-Kopie) refTabRam->grpRam

上下文图:Single Pointered 和 Double Pointered 校准方法的寻址与间接引用结构。来源:[SWS_Rte_03913]、[SWS_Rte_03914]、[SWS_Rte_03947]、AUTOSAR_SWS_RTE 第180页、AUTOSAR_SWS_RTE 第181页。

对于在线校准,RTE 根据 Single Pointered 或 Double Pointered 原理生成指针结构,从而无需硬件仿真即可在 RAM 中修改参数组 [SWS_Rte_03913]、[SWS_Rte_03914]。异常的范围越界或超时通过 Std_ReturnType 报告给调用组件,而分区边界处的内存保护检查可防止未经授权的篡改 [SWS_Rte_01034]、[SWS_Rte_03845]、[SWS_Rte_02752]。

Classic Platform 中 RTE 的角色和系统边界

Runtime Environment (RTE) 构成了 AUTOSAR Classic 架构的功能骨干,它将软件组件 (SW-C) 与底层计算硬件以及底层基础软件模块 (BSW) 完全解耦 (SWS_RTE 第100页)。RTE 生成器为每个 ECU 生成量身定制的接口,该接口通过统一的 API 调用(如 Rte_Read、Rte_Write 或 Rte_Call)解析所有通信关系——包括微控制器上的本地通信 (Intra-ECU) 以及跨通信总线的网络范围通信 (Inter-ECU) [SWS_Rte_01091]、[SWS_Rte_01102]。通过提供生成的 BswModuleDescription 元素以及相应的 BswInternalBehavior 描述,RTE 作为不可或缺的组成部分集成到 AUTOSAR 的配置和打包模式中 [SWS_Rte_05165]、[SWS_Rte_05166]。

同一软件组件的多实例化由 RTE 专门通过共享代码的可重入 Runnable Entities 来解决;明确不支持代码复制 [SWS_Rte_03015]、[SWS_Rte_02002]。在 C 代码中为每个实例传递唯一的实例标识符,或通过 Component Data Structure(CDS)进行寻址,从而确保在共享 Task 上下文中并行执行各实例时不会发生相互数据破坏(SWS_RTE 第126页、SWS_RTE 第804页)。作为应用 SWC 的补充,RTE 通过 Basic Software Scheduler(SchM)涵盖所有 BSW 模块的周期性调度与模式管理 [SWS_Rte_08060]、[SWS_Rte_07273]。

SchM 与 RTE 的生命周期及启动协调

系统启动要求 BSW 调度器(SchM)与面向应用的 RTE 之间遵循严格规定的顺序(SWS_RTE 第459页)。在 SchM 初始化之前,出于系统安全考虑,仅可使用锁定函数 SchM_Enter 和 SchM_Exit。EcuStateManager 首先调用函数 SchM_Init,从而初始化内部数据结构与模式机,并启动带有 Background-Events 的 BswSchedulableEntities [SWS_Rte_08060]、[SWS_Rte_07584]。在调用 BswM_Init 之前,必须先调用 SchM_Start [SWS_Rte_07273]、[SWS_Rte_04548]。随后通过 SchM_StartTiming 使能周期性 BSW 流程(BswTimingEvents)的激活 [SWS_Rte_04548]、[SWS_Rte_04551]、[SWS_Rte_07574]。

EcuM、SchM 与 RTE 之间的启动和关闭协调EcuMSchMBswMRTEUse Case: BSW-Scheduler HochlaufphaseSchM_Init(ConfigPtr)Interne Datenstrukturen & initial ModeMachines initialisierenSchM_Start()BswM_Init(ConfigPtr)SchM_StartTiming()BswTimingEvents periodisch aktivierenUse Case: RTE ApplikationsstartRte_Start()Applikations-Runnables & ModeTransitions freigebenRTE_E_OKUse Case: Herunterfahren (Shutdown)Rte_Stop()Runnables stoppen, Kommunikation ignorierenRTE_E_OKSchM_Deinit()Rte_Rips_SchM_Deinit() & Ressourcen freigeben

时序图:EcuM、SchM 与 RTE 之间的时间启动和关闭协调。来源:[SWS_Rte_08060]、[SWS_Rte_07273]、[SWS_Rte_04548]、[SWS_Rte_03015]、[SWS_Rte_01262]、[SWS_Rte_04551]、[SWS_Rte_89019]。

只有在所需的基础服务运行后,EcuStateManager 才会通过 Rte_Start 激活应用 SWC 的执行,并为未绑定的 On-Entry-Runnables 启动模式转换 [SWS_Rte_03015]、[SWS_Rte_06766]。若在 Rte_Start 处的资源分配失败,该函数将返回错误码 RTE_E_LIMIT [SWS_Rte_01262]。在 ECU 关闭时,Rte_Stop 首先终止应用执行,并从此时起忽略传入的请求和数据 [SWS_Rte_02538]、[SWS_Rte_02535]、[SWS_Rte_02536]。只有在 Rte_Stop 完全终止后,才允许调用 SchM_Deinit,后者释放调度器的所有系统资源并通过 Rte_Rips_SchM_Deinit 触发特定于插件的清理 [SWS_Rte_04551]、[SWS_Rte_07277]、[SWS_Rte_89019]。

通信模式:Sender-Receiver 与 Client-Server

在 Sender-Receiver 范式中,RTE 在数据语义与事件语义之间有着根本区别(SWS_RTE 第286页)。在数据语义(swImplPolicy != queued)下,缓冲区中始终保留最新写入的值,并通过 Rte_Read 显式消费或通过 Rte_IRead 隐式消费 [SWS_Rte_01091]、[SWS_Rte_06000]。在隐式读取时,RTE 保证在 Runnable Entity 的整个执行期间数据值保持一致副本 [SWS_Rte_06001]。在首次接收之前,RTE 提供配置的 initValue,从而不会处理未初始化的内存状态 [SWS_Rte_06009]、[SWS_Rte_06010]。

带 DataSemantics 的 ECU 间 Sender-Receiver 通信Sender-SWCSender-RTECOM-StackEmpfaenger-RTEEmpfaenger-SWCUse Case: Initialisierungsphase使用 initValue 预填充缓冲区Rte_Read_p_o(&data)data = initValue (RTE_E_OK)Use Case: 数据传输Rte_Write_p_o(data)Com_SendSignal(signalId, &data)RTE_E_OKSignalempfang via Bus & Rte_COMCbk内部信号缓冲区的更新Rte_Read_p_o(&data)data = empfangener Wert (RTE_E_OK)

时序图:具有初始值保护的非缓冲信号的 Inter-ECU Sender-Receiver 通信。来源:[SWS_Rte_01091]、[SWS_Rte_06009]、[SWS_Rte_01289]、AUTOSAR_SWS_RTE 第148页。

与此相反,事件语义(swImplPolicy = queued)通过 FIFO 缓冲区结构无损处理数据序列,该缓冲区通过 Rte_Send 填充并通过 Rte_Receive 递减 [SWS_Rte_01072]、[SWS_Rte_01092]、[SWS_Rte_02521]。如果达到通过 RteQueuedReceiverQueueLength 设定的缓冲区上限,RTE 将丢弃新到达的数据并设置相应的错误标志 [SWS_Rte_08940]、[SWS_Rte_02523]。对于大数据量,RTE 使用专门的传输路径,如 LdCom 或带有信号缓冲区锁定的 Large-Data-COM [SWS_Rte_01376]、[SWS_Rte_01379]。

Client-Server 通信支持同步调用(Rte_Call)以及通过 Rte_Result 进行独立结果查询的异步交互 [SWS_Rte_01102]、[SWS_Rte_01111]。在服务器端,若未配置直接调用,RTE 会将传入的请求缓存在 FIFO 队列中,而在客户端,响应则暂存在长度为 1 的缓冲区中 [SWS_Rte_02527]、[SWS_Rte_02528]。在跨分区或跨 ECU 调用时,由 Client Identifier 和 Sequence Counter 组成的两部分 Transaction Handle 可确保响应数据包与原始请求的精确匹配 [SWS_Rte_02649]、[SWS_Rte_08711]。

模式管理、状态转换与 Distributed Shared Mode Queues

模式管理允许通过专用模式机(ModeMachineInstances)协调切换运行状态,这些模式机通过 Rte_Switch 进行控制 [SWS_Rte_02631]。每个状态转换都会经历由十个独立步骤组成的确定性序列,其中包括激活模式锁、受控等待受影响的 Runnables 终止,以及顺序执行 OnExit、OnTransition 和 OnEntry 实体等 [SWS_Rte_02665]。只有在所有阶段完全结束后,才会触发确认事件 ModeSwitchedAckEvent,其状态可通过 Rte_SwitchAck 查询 [SWS_Rte_02679]、[SWS_Rte_02725]、[SWS_Rte_02758]。

ModeTransition s1 1. 激活 Mode Disablings s2 2. 等待受影响的 ExecutableEntities 终止 s1->s2 s3 3. 执行 OnExit ExecutableEntities s2->s3 s4 4. 等待所有 OnExit Entities 结束 s3->s4 s5 5. 执行 OnTransition ExecutableEntities s4->s5 s6 6. 等待所有 OnTransition Entities 结束 s5->s6 s7 7. 执行 OnEntry ExecutableEntities s6->s7 s8 8. 等待所有 OnEntry Entities 结束 s7->s8 s9 9. 切换 Mode Disablings s8->s9 s10 10. 触发 ModeSwitchAckEvents s9->s10

活动图:ModeMachineInstance 内部模式转换的确定性十阶段流程。来源:[SWS_Rte_02665]、[SWS_Rte_02679]、EXP_ModeManagementGuide 第16页。

为了在存在多个模式机时强制执行严格的模式切换顺序——例如点火状态与发动机状态之间——RTE 提供了 Distributed Shared Mode Queues(DSMQ)(SWS_RTE 第442页)。此类队列中入队与出队操作的状态通过类型 Rte_DsmqStatusType 来指示 [SWS_Rte_91102]。对于软件簇转换,Rte_Rips_SwitchNotificationStatusType 映射了相应的入队和出队状态 [SWS_Rte_91113]。解释:对于 BSW 调度器,可能倾向于选择在 Rte_Start 之前配置同步点,以便在使能周期性 Task 之前建立确定性的系统状态 [SWS_Rte_06767]。 问题 Q-d194460a04c885f3 (未决)

标定、数据仿真与内存拓扑

标定参数由 RTE 集中定位在内存中,因为只有 RTE 生成器了解 ECU 上所有组件和分区的总体占用情况 [SWS_Rte_03961]。为了在无需专用仿真硬件的情况下实现在线标定,RTE 支持诸如 Single Pointered Method 和 Double Pointered Method 等软件仿真方法(SWS_RTE 第236页、SWS_RTE 第237页)。在 Single Pointered Method 中,RAM 中存在一个由指向 ParameterElementGroups 的 void* 条目组成的指针表(<RteParameterRefTab>)[SWS_Rte_03913]、[SWS_Rte_03947]。

CalprmPointered cluster_single Single Pointered Method cluster_double Double Pointered Method refTabSingle <RteParameterRefTab> (RAM 中的 void 指针数组) grpSingle1 ParameterElementGroup 1 (RAM / PIM / Flash) refTabSingle->grpSingle1 grpSingle2 ParameterElementGroup 2 (RAM / PIM / Flash) refTabSingle->grpSingle2 baseRef Base reference (RAM 中的指针变量) refTabRom Calibration reference table (ROM / Flash) baseRef->refTabRom Initial refTabRam Calibration reference table (RAM 中的副本) baseRef->refTabRam 切换后 grpRom ParameterElementGroup (Flash-Originaldaten) refTabRom->grpRom grpRam ParameterElementGroup (Modifizierte RAM-Kopie) refTabRam->grpRam

上下文图:Single Pointered 和 Double Pointered 校准方法的寻址与间接引用结构。来源:[SWS_Rte_03913]、[SWS_Rte_03914]、[SWS_Rte_03947]、AUTOSAR_SWS_RTE 第180页、AUTOSAR_SWS_RTE 第181页。

相比之下,Double Pointered Method 采用二级间接寻址:存放于 ROM/Flash 中的参考表指向参数组,而 RAM 中可修改的基指针(Base reference)初始指向该 Flash 表,并在标定时可重定向至修改后的 RAM 副本 [SWS_Rte_03914]。在此方法中,ParameterDataPrototypes 根据其 swAddrMethod 被划分为不同的组 [SWS_Rte_03908]。RTE 生成器在容器 McSupportData 中通过 McSwEmulationMethodSupport 导出所有结构与指针信息,以便为标定工具(如 INCA 或 CANape)提供对 A2L 寻址的精确访问 [SWS_Rte_05118]、[SWS_Rte_05137]、[SWS_Rte_05138]。解释:对于高度集成的安全 ECU,可能会首选 Double Pointered Method,因为指针表本身主要保留在受保护的 Flash 中,仅在主动标定时才占用 RAM 缓冲区。 问题 Q-fb532d79c1eb906d (未决)

分区、内存保护与 Inter-OS-Application 通信

在多核及具有内存保护的架构中,RTE 通过 Inter-OS-Application Communication(IOC)跨分区边界(OS-Applications)连接软件组件(SWS_RTE 第372页)。在此过程中,RTE 将内部信号缓冲区替换为接近硬件的 IOC 缓冲区及生成的保护函数。对于临界区(ExclusiveAreas)的访问,集成商选择特定机制的配置参数(RteExclusiveAreaImplMechanism),范围涵盖从中断锁到用于跨核访问的 OS 自旋锁(SWS_RTE 第203页)。

若未经测试或不可信的分区(Non-Trusted)向可信的 BSW 或 SWC 分区传递指针参数,RTE 将强制执行地址和内存区域检查 [SWS_Rte_02752]、[SWS_Rte_02753]。仅当所引用的整个内存对象均属于调用分区时,才会转发指针,从而有效防止保护区违规以及对外部内存区域的非法覆盖(SWS_RTE 第378页)。

发生错误时的行为

RTE 的错误处理严格区分基础设施错误与应用错误(SWS_RTE 第579页)。所有错误状态均通过返回类型 Std_ReturnType 直接向调用者指示 [SWS_Rte_01034]。直接基础设施错误包括 RTE_E_TIMEOUT(129)、RTE_E_LIMIT(130)、RTE_E_NO_DATA(131)、RTE_E_UNCONNECTED(134)、RTE_E_IN_EXCLUSIVE_AREA(135)以及 RTE_E_SEG_FAULT(136)等(SWS_RTE 第586页)。

Rte_Read 中的范围检查与错误传播COM-StackRTE-EmpfangRTE-PufferApplikations-SWCNeuer Signalwert empfangen执行 DataSemantics 范围检查 (range check)alt值在定义范围内Pufferwert aktualisieren, Status = RTE_E_OK值超出范围 (Out of Range)Pufferstatus = RTE_E_OUT_OF_RANGERte_Read_p_o(&data)返回值:RTE_E_OUT_OF_RANGE

时序图:通过 Rte_Read 检测与传播值域错误。来源:[SWS_Rte_01091]、[SWS_Rte_01371]、[SWS_Rte_03845]、AUTOSAR_CP_SWS_RTE 第409页。

当使能数据校验(DataSemantics range check)时,RTE 会根据定义的值域检查传入的信号值 [SWS_Rte_01371]。若接收到的值超出边界,读取 API 将返回 RTE_E_OUT_OF_RANGE [SWS_Rte_03845]、[SWS_Rte_03846]。对于具有 Invalidation-Policy 的信号,RTE 在 replace 处将该值替换为 initValue,或者在 keep 处保留先前的值并设置错误事件 [SWS_Rte_05030]、[SWS_Rte_05049]。在通过 aliveTimeout 进行超时监控时,RTE 通过 Rte_COMCbkRxTOut 记录缺失,并将 RTE_E_TIMEOUT 传播给等待的 SWC [SWS_Rte_08061]、[SWS_Rte_03763]。

进一步详细证据

RTE 与调度器的精确技术设计基于有效载荷的以下核心要求:

本模块指南由 AI 策展助手基于 R20-11 的 AUTOSAR 规范编写。

AUTOSAR RTE

The RTE realizes the Virtual Functional Bus (VFB) on a specific ECU, providing communication between Software Components and basic software.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 Rte_Start [SWS_Rte_03015] 📄 PDF

Std_ReturnType Rte_Start (void);

Rte_Start is intended to allocate and initialize system resources and communication resources used by the RTE.

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

函数 Rte_Start 分配并初始化 RTE 所使用的系统和通信资源 [SWS_Rte_03015]。该 API 始终生成 [SWS_Rte_01309],具有签名 Std_ReturnType Rte_Start (void) [SWS_Rte_02569],且必须在有限执行时间内返回而不得陷入死循环 [SWS_Rte_02585]。

在 RTE 所需的所有基础软件模块初始化完成之后,该函数在每个 Core 上只能由 EcuStateManager 从受信任的 OS 上下文中精确调用一次 [SWS_Rte_CONSTR_09035]。该调用在每个 Core 上独立执行 [SWS_Rte_07615],并为分配给该 Core 的所有分区执行分区特定的启动活动 [SWS_Rte_07616]。

在执行流程中,RTE 根据配置的策略初始化为 RAM 块分配的变量 [SWS_Rte_07632]。在变量初始化之后、但在 Runnable 执行之前,RTE 调用所有相关 RTE Implementation Plug-In 的初始化函数 Rte_Rips_Rte_Start [SWS_Rte_80052]。随后,RTE 单次激活由 InitEvent 触发的所有 Runnable [SWS_Rte_06761],并启动向初始模式的切换 [SWS_Rte_06766]。如果 API Rte_StartTiming 不存在,Rte_Start 还会启动由 TimingEvent [SWS_Rte_07575] 或 BackgroundEvent [SWS_Rte_07178] 触发的 Runnable 的激活。

对于错误处理,如果在启用 RteDevErrorDetectUninit 的情况下在 SchM_Init 之前调用了 Rte_Start,则 RTE 或 SchM 会报告错误 RTE_E_UNINIT (0x07) [SWS_Rte_07683]。在执行 Rte_Start 之前不得调用 RTE 的运行时 API,否则同样会导致 RTE_E_UNINIT [SWS_Rte_07682];而 Rte_SetMirror 则允许在 Rte_Start 之前调用 [SWS_Rte_07319]。

本使用说明是基于 AUTOSAR 规范自动生成的。

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

函数 Rte_Stop [SWS_Rte_01262] 📄 PDF

Std_ReturnType Rte_Stop (void);

Rte_Stop is used to finalize the RTE on the core it is called. This service releases all system and communication resources allocated by the RTE on that core.

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

函数 Rte_Stop([SWS_Rte_02570])在每种配置中都会生成([SWS_Rte_01310]),用于终结执行 Core 上的 RTE([SWS_Rte_01262])。在此过程中,将释放 RTE 在该 Core 上分配的所有系统和通信资源([SWS_Rte_01262])。该同步调用保证在有限运行时间内返回([SWS_Rte_02584])。

在整个系统中,必须在 RTE 所需的基础软件模块关闭之前由 EcuStateManager 调用 Rte_Stop([SWS_Rte_CONSTR_09038])。在执行流程中,RTE 调用所有相关 RTE Implementation Plug-In 的停止函数 Rte_Rips_Rte_Stop([SWS_Rte_80053]),这些插件必须提供此类生命周期接口([SWS_Rte_70047])。只有在 Rte_Stop 完全结束后,才允许执行 SchM_Deinit([SWS_Rte_CONSTR_09056])。

在某个 Core 上调用 Rte_Stop 之后,RTE 将不再在该 Core 上激活、启动或释放任何 RunnableEntity 实例([SWS_Rte_02538])。只要底层操作系统保持活动,Rte_GetMirror 仍可继续调用且不受影响([SWS_Rte_07350])。

发生错误时,如果超过内部限制或所需资源的分配失败,该函数将返回 RTE_E_LIMIT([SWS_Rte_01262])。如果启用了 RteDevErrorDetectUninit,则在 Rte_Stop 之后调用不允许的 API 时,RTE 会报告错误 RTE_E_UNINIT (0x07)([SWS_Rte_07682])。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

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

函数 Rte_StartTiming [SWS_Rte_06753] 📄 PDF

void Rte_StartTiming (void);

Rte_StartTiming API is intended to release the activation of RunnableEntitys triggered by TimingEvents and BackgroundEvents after the last call of a Rte_Init function.

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

函数 Rte_StartTiming 用于在 RTE 初始化完成后,启用由 TimingEvent 或 BackgroundEvent 触发的 RunnableEntity 的激活([SWS_Rte_06753],[SWS_Rte_06756])。它被实现为无参数且无返回值的函数([SWS_Rte_06754],[SWS_Rte_06758]),并且必须在有限的执行时间内返回([SWS_Rte_06757])。

关于调用上下文和调用顺序,该 API 受到严格的约束条件限制:

  • 该函数只能在 RTE 完全初始化之后被调用,具体为在 Rte_Start 的调用结束之后([SWS_Rte_CONSTR_09061])。
  • 它旨在在最后一次调用 Rte_Init 函数之后执行([SWS_Rte_06753])。
  • 一旦生成了至少一个 Rte_Init API,该 API 就会被生成或提供([SWS_Rte_06755])。

调用 Rte_StartTiming 时,它会立即启动周期性和基于背景的激活([SWS_Rte_06759],[SWS_Rte_06760])。相反,如果配置中不存在该 API,则改由对 Rte_Start 的调用直接启用由 TimingEvent 和 BackgroundEvent 触发的 Runnable([SWS_Rte_07178],[SWS_Rte_07575])。未为该调用定义特定的错误代码或返回值([SWS_Rte_06754])。

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

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

函数 SchM_Init [SWS_Rte_08060] 📄 PDF

void SchM_Init (const SchM_ConfigType* ConfigPtr);

SchM_Init is intended to allocate and initialize system resources used by the Basic Software Scheduler part of the RTE for the core on which it is called.

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

用法与语义

函数 SchM_Init 分配并初始化调用 Core 上由 RTE 的 Basic Software Scheduler(SchM)使用的系统资源([SWS_Rte_08060])。该接口始终生成([SWS_Rte_07271])并具有签名 void SchM_Init(const SchM_ConfigType* ConfigPtr)([SWS_Rte_07270])。它同步执行且必须在有限的执行时间内返回,不得进入死循环([SWS_Rte_07273])。

在初始化过程中,SchM_Init 执行以下步骤:

  • 它为属于 Basic Software Scheduler 的每个模式机实例启动向初始模式的转换([SWS_Rte_07532])。
  • 它启动对由 BswBackgroundEvent 事件触发的 BswSchedulableEntity 实例的激活([SWS_Rte_07584])。
  • 它调用所有涉及的 RTE Implementation Plug-In 的初始化函数 Rte_Rips_SchM_Init([SWS_Rte_80051])。

调用上下文和顺序条件

一旦 Basic Software Scheduler 所需的 BSW 模块已初始化,在每个 Core 上仅允许由 EcuStateManager 调用 SchM_Init 恰好一次([SWS_Rte_CONSTR_09055])。后续 API(如 Rte_Start)只有在 SchM_Init 完全结束后才允许调用([SWS_Rte_CONSTR_09036])。

错误处理

如果使用 NULL 指针作为参数调用 SchM_Init,Basic Software Scheduler 将报告错误 RTE_E_DET_ILLEGAL_VARIANT_CRITERION_VALUE(0x02)([SWS_Rte_07684])。如果在 SchM_Init 之前调用调度器 API(如 SchM_Switch、SchM_Mode 或 SchM_Start)或 Rte_Start,则在激活 RteDevErrorDetectUninit 时将报告错误 RTE_E_UNINIT(0x07)([SWS_Rte_07683])。

本使用说明由 AI 系统基于 AUTOSAR 规范生成。

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

函数 SchM_Start [SWS_Rte_07273] 📄 PDF

void SchM_Start (void);

Basic Software Scheduler initialized. Shall be called before BswM_Init().

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

使用

函数 SchM_Start 用于启动 RTE 模块中的 Basic Software Scheduler,并且在接口生成过程中始终会提供 [SWS_Rte_04547]。它具有无参数的 C 语言签名 void SchM_Start(void) [SWS_Rte_04546] 且不提供返回值。对于其执行,存在具有约束力的规定:调用必须在有限运行时间内返回,且绝不能进入死循环 [SWS_Rte_04548]。由于缺乏异步回调机制,这大概率属于同步阻塞的初始化调用。 问题 Q-b6ad9ed696841d7a (未决)

调用上下文与并发性

对于调用上下文以及与其他系统组件的交互,存在严格的限制:

  • 调用者与频次:该函数在每个处理器内核上只能由 EcuStateManager 独占调用,且在各内核上只能精确调用一次 [SWS_Rte_CONSTR_09055]。
  • 时序条件:只有在 RTE 的 Basic Software Scheduler 部分所需的所有基础软件模块均已完全初始化之后,才允许进行该调用 [SWS_Rte_CONSTR_09055]。
  • 系统启动期间的交互:执行后,Basic Software Scheduler 处于就绪状态;该调用必须在通过 BswM_Init() 初始化 BSW 管理器之前进行 [SWS_Rte_07273]。

错误处理

针对该函数,Payload 中未定义特定的错误码、返回值或向 DET 或 DEM 发送的通知。

本文本由 AI 基于 AUTOSAR 规范 R20-11 创建。

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

函数 SchM_StartTiming [SWS_Rte_04548] 📄 PDF

void SchM_StartTiming (void);

Start periodical events for BSW/SWCs. SchM_Init() has to be called before.

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

使用

函数 SchM_StartTiming 具有无参数签名 void SchM_StartTiming(void) [SWS_Rte_04549],并始终由 RTE 生成器生成 [SWS_Rte_04550]。它的调用通过启动由 BswTimingEvent 触发的 BswSchedulableEntity 实例的激活,为 BSW 和 SWC 启动周期性事件 [SWS_Rte_04548] [SWS_Rte_07574]。该函数必须在有限的执行时间内返回,且不得执行无限循环 [SWS_Rte_04551]。

调用上下文与限制

在调用 SchM_StartTiming 之前,必须强制调用过 SchM_Init [SWS_Rte_04548]。此外,存在一项有约束力的限制:在所有 Basic Software Scheduler 所需的基础软件模块初始化完成后,SchM_StartTiming 在每个 Core 上只能由 EcuStateManager 调用恰好一次 [SWS_Rte_CONSTR_09055]。

错误处理

如果在 SchM_Init 之前调用 SchM_StartTiming,在开发错误检测 RteDevErrorDetectUninit 已激活的前提下,Basic Software Scheduler 或 RTE 将报告错误 RTE_E_UNINIT (0x07) [SWS_Rte_07683]。

该文本由 AI 生成,并基于 Release R20-11 的规范。

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

函数 SchM_Deinit [SWS_Rte_04551] 📄 PDF

void SchM_Deinit (void);

SchM_Deinit is used to finalize Basic Software Scheduler part of the RTE of the core on which it is called. This service releases all system resources allocated by the Basic Software Scheduler part on that core.

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

用法与功能范围

函数 SchM_Deinit 用于在其被调用的 Core 上终结 RTE 的 Basic Software Scheduler 部分 [SWS_Rte_04551]。在此过程中,该服务释放该 Core 上由 BSW 调度器占用的所有系统资源 [SWS_Rte_04551]。该函数既无参数也无返回值(void SchM_Deinit(void))[SWS_Rte_07274],并且始终由 RTE 生成器生成 [SWS_Rte_07275]。关于时序行为,规范要求 SchM_Deinit 必须在有限的执行时间内返回 [SWS_Rte_07277]。

调用上下文和顺序条件

在 ECU 关闭阶段调用时,适用强制性的顺序规定:

  • 函数 SchM_Deinit 仅在 RTE 完全终结之后,即 Rte_Stop 终止之后才允许使用 [SWS_Rte_CONSTR_09056]。
  • 必须由 EcuStateManager 在 Basic Software Scheduler 运行所需的基础层关闭之前进行调用 [SWS_Rte_CONSTR_09057]。
  • 在某个 Core 上调用 SchM_Deinit 之后,该 Core 上的 BSW 调度器不得再激活或启动 BswSchedulableEntity 的任何实例 [SWS_Rte_07586]。

插件清理

在去初始化过程中,RTE 会在 SchM_Deinit 内强制调用所有参与的 RTE Implementation Plug-In 的函数 Rte_Rips_SchM_Deinit,以完成其清理工作 [SWS_Rte_80054]。

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

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

函数 <name of the Invocation Handler> [SWS_Rte_89015] 📄 PDF

void <name of the Invocation Handler> (void);

Performs invocation of server runnables, hard error runnables, ASCR runnables and triggered runnables via a transformer".

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

处理程序函数 <name of the Invocation Handler> 在 Rte 模块中负责通过 Transformer 同步调用各种类型的 Runnable [SWS_Rte_89015]。受支持的单元包括服务器 Runnable、硬错误(Hard-Error)Runnable、ASCR Runnable 以及触发型 Runnable [SWS_Rte_89015]。

该接口既没有输入、输入/输出参数,也没有输出参数,并且不返回值(签名 void (void))[SWS_Rte_89015]。该调用同步处理,并通过服务 ID 0xEE 进行标识 [SWS_Rte_89015]。其声明通过头文件 Rte_Rips_<PlugIn>.h 提供 [SWS_Rte_89015]。

关于并发性,该函数被声明为有条件可重入(Conditional Reentrant)[SWS_Rte_89015]。这推测意味着,仅当存在不同的执行上下文或独立的插件实例时,才允许并发调用。 问题 Q-24aabb36a2be58f4 (未决)标识符 <name of the Invocation Handler> 以及头文件名称 <PlugIn> 代表占位符;实际名称推测在插件配置时确定。

本使用说明由 AI 根据 AUTOSAR R20-11 规范生成。

函数 Rte_Rips_SchM_Deinit [SWS_Rte_89019] 📄 PDF

void Rte_Rips_SchM_Deinit (void);

Rte_Rips_SchM_Deinit deinitializes those RTE Implementation Plug-In parts which are relevant for the SchM related operations.

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

函数 Rte_Rips_SchM_Deinit 用于对 RTE Implementation Plug-In 中与 Basic Software Scheduler (SchM) 操作相关的组成部分进行去初始化 [SWS_Rte_89019]。它属于强制性生命周期接口,除 Rte_Rips_SchM_Init、Rte_Rips_Rte_Start 和 Rte_Rips_Rte_Stop 之外,必须由每个 RTE Implementation Plug-In 提供 [SWS_Rte_70047]。

对于集成和使用,适用以下规定:

  • 调用上下文与执行流程:该接口具有签名 void Rte_Rips_SchM_Deinit (void),不接受任何参数且无返回值 [SWS_Rte_89019]。它以同步方式执行 [SWS_Rte_89019]。该调用并非由软件组件发起,而是由 RTE 在 SchM_Deinit 内部针对所有涉及的插件进行协调 [SWS_Rte_80054]。
  • 文件包含与标识符:声明可通过头文件 Rte_Rips_<PlugIn>.h 获取;该函数具有服务 ID 0xF3 [SWS_Rte_89019]。
  • 并发与限制:该函数被指定为非可重入(Non Reentrant)[SWS_Rte_89019]。由此推测,在 SchM_Deinit 中调用期间,不得再有竞争的 SchM 活动访问该插件。 问题 Q-60aec1abc9e891b2 (未决)
  • 错误处理:规范未为 Rte_Rips_SchM_Deinit 规定错误代码或返回值,也未定义向 DET 或 DEM 报告的错误消息 [SWS_Rte_89019]。

本使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

类型 Rte_Rips_SwitchNotificationStatusType [SWS_Rte_91113] 📄 PDF

Status of the en- and dequeue operation on a mode queue Tags: atp.Status=draft

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

数据类型 Rte_Rips_SwitchNotificationStatusType([SWS_Rte_91113])基于 uint8,并通过 Rte_Type.h 提供。它用于在 RTE Implementation Plug-In 上下文中指示模式队列(Mode Queue)上入队和出队操作的状态。

取值范围包含两个操作方向的状态码([SWS_Rte_91113]):

  • RTE_SWITCH_NOTIFICATION_SKIP(0x00):无法取出模式切换通知。
  • RTE_SWITCH_NOTIFICATION_ENQUEUED_FIRST (0x01):通知已排入空队列。
  • RTE_SWITCH_NOTIFICATION_ENQUEUED_NOT_FIRST (0x02):通知已排入已有内容的队列。
  • RTE_SWITCH_NOTIFICATION_ENQUEUE_FAILED(0x03):排入非空队列失败。
  • RTE_SWITCH_NOTIFICATION_DEQUEUED_LAST (0x04):最后一个模式切换通知已从队列中取出。
  • RTE_SWITCH_NOTIFICATION_DEQUEUED_NOT_LAST (0x05):已取出一个通知;队列中仍保留其他通知。

在使用中,该类型出现在两个同步、可重入的接口中:函数 Rte_Rips_<PlugIn>_Switch_<BswSwcI>_<MMI>([SWS_Rte_91114])接收该状态作为输入参数 switchNotificationStatus,以便向插件通知入队过程。与此相对,函数 Rte_Rips_<PlugIn>_DequeueModeSwitch_<MMI>_<OsTask>([SWS_Rte_91115])在最后一个 On-Entry ExecutableEntity 终止后从队列中取出通知时,返回该类型作为返回值。

入队时的错误在功能上通过状态值 RTE_SWITCH_NOTIFICATION_ENQUEUE_FAILED 进行报告([SWS_Rte_91113]);有效负载中未指明单独的 DET 或 DEM 条目。解释:出队常量处的规范文本“was enqueued from mode queue”推测属于编撰原因,实际是指取出操作。 问题 Q-6e9e040dcd341f66 (未决)该元素及相关接口被标记为草案(Draft)([SWS_Rte_91113])。

本使用说明由自动化系统生成,且完全基于 AUTOSAR 版本 R20-11 的规范数据。

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

类型 Rte_DsmqStatusType [SWS_Rte_91102] 📄 PDF

Status of the enqueue operation on a distributed shared mode queue

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

数据类型 Rte_DsmqStatusType 基于 uint8,并根据 [SWS_Rte_80085] 以及 [SWS_Rte_91102] 与其字面量一同在头文件 Rte_Type.h 中定义。它用于指示分布式共享模式队列(DSMQ)中模式切换通知的入队和出队操作状态 [SWS_Rte_91102]。

取值范围包含以下字面量 [SWS_Rte_91102]:

  • RTE_DSMQ_ENQUEUED_FIRST (0x01):通知已排入此前为空的 DSMQ。
  • RTE_DSMQ_ENQUEUED_NOT_FIRST (0x02):入队操作发生在一个已填充(非空)的 DSMQ 中。
  • RTE_DSMQ_ENQUEUE_FAILED (0x03):排入非空 DSMQ 失败。
  • RTE_DSMQ_DEQUEUED_LAST(0x04):最后一个模式切换通知已从 DSMQ 中取出。
  • RTE_DSMQ_DEQUEUED_NOT_LAST (0x05):已取出一个通知,而队列中仍保留其他通知。

在错误处理方面,字面量 RTE_DSMQ_ENQUEUE_FAILED 指示队列非空时入队过程失败 [SWS_Rte_91102]。

该类型用作传递给 RTE Implementation Plug-In (RIPS) 接口的传入参数 dsmqstatus。函数 Rte_Rips_<PlugIn>_DsmqSwitch_<BswSwcI>_<MMI> 同步通知插件有关排入 DSMQ 的信息 [SWS_Rte_91103]。此外,Rte_Rips_<PlugIn>_DsmqTransitionEnd_<BswSwcI>_<MMI> 在 DSMQ-Transition-OsTask 中同步向 RIPS 报告模式转换的完成 [SWS_Rte_91106]。这两个回调服务均声明为同步且可重入 [SWS_Rte_91103]、[SWS_Rte_91106]。

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

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

类型 RteCalibrationSwAddrMethodRefParentContainerRteComponentType [SWS_Rte_05145] 📄 PDF

Reference to the SwAddrMethod for which software calibration support shall be enabled. Multiplicity 0..* Type Foreign reference to SW-ADDR-METHOD Post-Build Variant Multiplicity false Post-Build Variant Value false Multiplicity Configuration Class Pre-compile time X All Variants Link time – Post-build time – Value Configuration Class Pre-compile time X All Variants Link time – Post-build time – Scope / Dependency scope: local No Included Containers 8.7 Implicit communication configuration Figure 8.22: Configuration of the implicit communication SWS Item [ECUC_Rte_09034] Container Name

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

Record
AUTOSAR/AP/record/CP_MOD_Rte
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Rte@rel:R20-11#0e87011a
Content hash
0e87011a
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_RTE.pdf#nameddest=SWS_Rte_03015

初始化与状态

Rte_Rips_SchM_Deinit deinitializes those RTE Implementation Plug-In parts which are relevant for the SchM related operations.

void Rte_Rips_SchM_Deinit (void);

SchM_Deinit is used to finalize Basic Software Scheduler part of the RTE of the core on which it is called. This service releases all system resources allocated by the Basic Software Scheduler part on that core.

void SchM_Deinit (void);

Returns the version information of the Basic Software Scheduler.

void SchM_GetVersionInfo (Std_VersionInfoType* versioninfo);
SchM_Init 函数

SchM_Init is intended to allocate and initialize system resources used by the Basic Software Scheduler part of the RTE for the core on which it is called.

void SchM_Init (const SchM_ConfigType* ConfigPtr);

服务

Rte_Start 函数

Rte_Start is intended to allocate and initialize system resources and communication resources used by the RTE.

Std_ReturnType Rte_Start (void);

Rte_StartTiming API is intended to release the activation of RunnableEntitys triggered by TimingEvents and BackgroundEvents after the last call of a Rte_Init function.

void Rte_StartTiming (void);
Rte_Stop 函数

Rte_Stop is used to finalize the RTE on the core it is called. This service releases all system and communication resources allocated by the RTE on that core.

Std_ReturnType Rte_Stop (void);
SchM_Start 函数

Basic Software Scheduler initialized. Shall be called before BswM_Init().

void SchM_Start (void);

Start periodical events for BSW/SWCs. SchM_Init() has to be called before.

void SchM_StartTiming (void);

Callout 与预期接口

Performs invocation of server runnables, hard error runnables, ASCR runnables and triggered runnables via a transformer".

void <name of the Invocation Handler> (void);

类型

Status of the enqueue operation on a distributed shared mode queue

Status of the en- and dequeue operation on a mode queue Tags: atp.Status=draft

Reference to the SwAddrMethod for which software calibration support shall be enabled. Multiplicity 0..* Type Foreign reference to SW-ADDR-METHOD Post-Build Variant Multiplicity false Post-Build Variant Value false Multiplicity Configuration Class Pre-compile time X All Variants Link time – Post-build time – Value Configuration Class Pre-compile time X All Variants Link time – Post-build time – Scope / Dependency scope: local No Included Containers 8.7 Implicit communication configuration Figure 8.22: Configuration of the implicit communication SWS Item [ECUC_Rte_09034] Container Name