AUTOSAR RTE
The RTE realizes the Virtual Functional Bus (VFB) on a specific ECU, providing communication between Software Components and basic software.
Funktionen — Übersicht
Std_ReturnType Rte_Start (void);Rte_Start is intended to allocate and initialize system resources and communication resources used by the RTE.Std_ReturnType Rte_Stop (void);Rte_Stop is used to finalize the RTE on the core it is called.void Rte_StartTiming (void);Rte_StartTiming API is intended to release the activation of RunnableEntitys triggered by TimingEvents and BackgroundEvents...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...void SchM_Start (void);Basic Software Scheduler initialized.void SchM_StartTiming (void);Start periodical events for BSW/SWCs.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.void SchM_GetVersionInfo (Std_VersionInfoType* versioninfo);Returns the version information of the Basic Software Scheduler.void <name of the Invocation Handler> (void);Performs invocation of server runnables, hard error runnables, ASCR runnables and triggered runnables via a transformer".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.
Typen — Übersicht
enum Rte_Rips_SwitchNotificationStatusTypeStatus of the en- and dequeue operation on a mode queue Tags: atp.enum Rte_DsmqStatusTypeStatus of the enqueue operation on a distributed shared mode queueRteCalibrationSwAddrMethodRefParentContainerRteComponentTypeReference to the SwAddrMethod for which software calibration support shall be enabled.
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.
函数 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.
函数 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.
函数 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_InitAPI,该 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.
用法与语义
函数 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().
使用
函数 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.
使用
函数 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.
用法与功能范围
函数 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)
函数 SchM_GetVersionInfo [SWS_Rte_07277] 📄 PDF
void SchM_GetVersionInfo (Std_VersionInfoType* versioninfo);
Returns the version information of the Basic Software Scheduler.
函数 <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".
处理程序函数 <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.
函数 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获取;该函数具有服务 ID0xF3[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
数据类型 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
数据类型 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
gemini-3.8-flash-low· 2026-10-13 · 德文原文