# AUTOSAR SRS RTE — 运行时环境需求 ## 文档元信息 | 字段 | 值 | |------|-----| | **文档标题** | Requirements on Runtime Environment(运行时环境需求) | | **文档所有者** | AUTOSAR | | **文档责任方** | AUTOSAR | | **文档标识号** | 083 | | **文档状态** | Final(最终版) | | **所属 AUTOSAR 标准** | Classic Platform(经典平台) | | **所属标准版本** | 4.4.0 | ## 文档变更历史 | 日期 | 版本 | 变更人 | 变更说明 | |------|------|--------|----------| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | • 新增对 RTE 实现插件的支持:[SRS_Rte_00300] - [SRS_Rte_00317]
• 新增对数据结构在 SOME/IP 中的扩展序列化(带 TLV 标签/长度/值编码)的支持:[SRS_Rte_00261] | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | • 文字编辑性修改 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | • 新增对 ExtendedBufferAccess 的支持:[SRS_Rte_00254]、[SRS_Rte_00255]、[SRS_Rte_00256]、[SRS_Rte_00257]、[SRS_Rte_00258]、[SRS_Rte_00259]、[SRS_Rte_00260] | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | • 新增需求:[SRS_Rte_00253] | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | • 新增对概念的支持:
 – NVDataHandlingRTE:[SRS_Rte_00245]
 – EfficientCOMforLargeData:[SRS_Rte_00246]
 – SenderReceiverSerialization:[SRS_Rte_00247]、[SRS_Rte_00248]、[SRS_Rte_00249]、[SRS_Rte_00250]、[SRS_Rte_00251]
• 新增需求:[SRS_Rte_00252] | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | • 删除需求:[SRS_Rte_00125] | | 2013-03-15 | 4.1.1 | AUTOSAR Release Management | • 新增对概念的支持:
 – Enhance Port Compatibility:[SRS_Rte_00236]
 – Refined Scheduling of Runnables:[SRS_Rte_00237]
 – Provide Activating RTE Event:[SRS_Rte_00238]
 – Enhanced BSW Allocation:[SRS_Rte_00241]、[SRS_Rte_00242]、[SRS_Rte_00243]
 – Rapid Prototyping Support for AUTOSAR ECUs:[SRS_Rte_00244]
• 新增需求:[SRS_Rte_00239]、[SRS_Rte_00240]
• 修改需求:[SRS_Rte_00084] | | 2011-12-22 | 4.0.3 | AUTOSAR Release Management | • 修改需求:[SRS_Rte_00155]、[SRS_Rte_00154]
• 新增需求:[SRS_Rte_00234]、[SRS_Rte_00235] | | 2011-04-15 | 4.0.2 | AUTOSAR Release Management | • 修改需求:[SRS_Rte_00210]、[SRS_Rte_00020]
• 新增对以下概念的支持:
 – AUTOSAR Scheduler 协调
 – RTE API 增强
 – Triggered Event(触发事件)
 – Enhance Measurement and Calibration(增强测量和标定)
 – Avoidance of duplicated Type Definitions(避免类型定义重复)
 – Integrity and Scaling at ports(端口完整性和缩放)
 – Implicit Communication Enhancement(隐式通信增强)
 – A2L Generation Support(A2L 生成支持)
 – Support of large data types(支持大数据类型)
 – Fixed Data Exchange(固定数据交换)
 – Variant Handling(变体处理)
 – Time Determinism(时间确定性)
 – DLT Concept(DLT 概念)
 – Memory related Concepts(内存相关概念)
 – Build System Enhancement(构建系统增强)
 – Multi Core Architectures(多核架构)
 – Memory Partitioning(内存分区)
 – Error Handling(错误处理)
 – VMM AMM Concept | | 2009-12-18 | 4.0.1 | AUTOSAR Release Management | • 法律声明修订 | | 2009-02-04 | 3.1.2 | AUTOSAR Release Management | • 修改需求:[SRS_Rte_00005]
• 删除需求:[SRS_Rte_00044] | | 2008-08-13 | 3.1.1 | AUTOSAR Release Management | • 法律声明修订 | | 2007-12-21 | 3.0.1 | AUTOSAR Release Management | • 扩展文档元信息;进行小幅布局调整 | | — | 2.1.1 | AUTOSAR Release Management | • "用户建议"修订;"修订信息"增加 | | 2006-11-28 | 2.1 | AUTOSAR Release Management | • 新增需求:[SRS_Rte_00153] - [SRS_Rte_00161]
• 修改需求:[SRS_Rte_00151]
• 法律声明修订 | | 2006-05-16 | 2.0 | AUTOSAR Release Management | • 新增需求:[SRS_Rte_00152]
• 修改需求:[SRS_Rte_00133]、[SRS_Rte_00013]、[SRS_Rte_00077]、[SRS_Rte_00075]
• 删除需求:[SRS_Rte_00136]
• 日期格式改为 dd-mm-yyyy | | 2005-05-31 | 1.0 | AUTOSAR Release Management | • 初始发布 | ## 目录 - [1 文档范围](#1-文档范围) - [1.1 文档约定](#11-文档约定) - [2 功能概述](#2-功能概述) - [3 需求追踪](#3-需求追踪) - [4 RTE 需求](#4-rte-需求) - [4.1 功能需求](#41-功能需求) - [4.1.1 与 AUTOSAR OS 的交互](#411-与-autosar-os-的交互) - [4.1.2 与 AUTOSAR COM 的交互](#412-与-autosar-com-的交互) - [4.1.3 与应用软件组件的交互](#413-与应用软件组件的交互) - [4.1.4 与基础软件组件的交互](#414-与基础软件组件的交互) - [4.1.5 BSW 调度器的生成](#415-bsw-调度器的生成) - [4.1.6 测量和标定支持](#416-测量和标定支持) - [4.1.7 一般需求](#417-一般需求) - [4.1.8 VFB 追踪](#418-vfb-追踪) - [4.1.9 应用软件组件的初始化和终结化](#419-应用软件组件的初始化和终结化) - [4.1.10 API](#4110-api) - [4.1.11 C/C++ API](#4111-cc-api) - [4.1.12 初始化和终结化操作](#4112-初始化和终结化操作) - [4.1.13 分区重启和终止](#4113-分区重启和终止) - [4.1.14 错误操作](#4114-错误操作) - [4.1.15 RTE 实现插件](#4115-rte-实现插件) - [4.2 非功能需求](#42-非功能需求) - [4.2.1 一般需求](#421-一般需求) ## 参考文献 | 编号 | 文献 | |------|------| | [1] | Standardization Template — AUTOSAR_TPS_StandardizationTemplate | | [2] | Requirements on Standardization Template — AUTOSAR_RS_StandardizationTemplate | | [3] | Virtual Functional Bus — AUTOSAR_EXP_VFB | | [4] | Software Component Template — AUTOSAR_TPS_SoftwareComponentTemplate | | [5] | Basic Software Module Description Template — AUTOSAR_TPS_BSWModuleDescriptionTemplate | | [6] | Requirements on Mode Management — AUTOSAR_SRS_ModeManagement | | [7] | Specification of Memory Mapping — AUTOSAR_SWS_MemoryMapping | | [8] | Specification of Compiler Abstraction — AUTOSAR_SWS_CompilerAbstraction | | [9] | Specification of Platform Types — AUTOSAR_SWS_PlatformTypes | | [10] | General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral | | [11] | Specification of Diagnostic Log and Trace — AUTOSAR_SWS_DiagnosticLogAndTrace | --- ## 1 文档范围 AUTOSAR 及其本文档的目标是定义 AUTOSAR 运行时环境(Run-time Environment, RTE)的需求和行为。 AUTOSAR 的职责范围不涉及 RTE 的具体实现方式,但所有需求和行为规范均经过内部审查,以确保至少存在一种可行的实现方式。 ### 1.1 文档约定 AUTOSAR 文档中需求(Requirements)的表示遵循 [TPS_STDT_00078] 中规定的表格形式,详见 [1] 中 Standardization Template 的"支持可追溯性"(Support for Traceability)章节。 表达义务的动词形式应使用 [TPS_STDT_00053] 中规定的形式,以表明需求,详见 [1] Standardization Template 的"支持可追溯性"章节。 --- ## 2 功能概述 运行时环境(Run-Time Environment,RTE)位于 AUTOSAR ECU 架构的核心位置。 RTE 是 AUTOSAR 虚拟功能总线(Virtual Function Bus, VFB)接口在特定 ECU 上的实现(realization),因此它为应用软件组件之间的通信以及访问包括 OS 在内的基础软件组件提供基础设施服务。 应用软件组件包含与 CPU 和位置无关的系统软件。这意味着,在系统设计者施加的约束条件下,应用软件组件在系统配置过程中可以被映射到任何可用的 ECU 上。RTE 负责确保组件能够通信,并且无论组件映射到何处,系统都能按预期的方式持续工作。 RTE 既包含因组件到 ECU 的不同映射而产生的系统基础设施的可变元素,也包含标准化的 RTE 服务。RTE 针对每个 ECU 进行生成和/或配置,以确保 RTE 在该 ECU 上是最优的。 --- ## 3 需求追踪 下表引用了 [2] 中规定的需求,并链接到这些需求的实现。 | 需求 | 描述 | 由以下需求实现 | |------|------|----------------| | [RS_BRF_00057] | AUTOSAR 应定义内存映射机制 | [SRS_Rte_00169]、[SRS_Rte_00170] | | [RS_BRF_01024] | AUTOSAR 应为公共符号提供命名规则 | [SRS_Rte_00164]、[SRS_Rte_00165]、[SRS_Rte_00166]、[SRS_Rte_00167]、[SRS_Rte_00168]、[SRS_Rte_00252] | | [RS_BRF_01136] | AUTOSAR 应支持系统启动后解析的已配置 BSW 数据的变体 | [SRS_Rte_00191]、[SRS_Rte_00201]、[SRS_Rte_00202]、[SRS_Rte_00203]、[SRS_Rte_00204]、[SRS_Rte_00206]、[SRS_Rte_00207]、[SRS_Rte_00229] | | [RS_BRF_01160] | AUTOSAR 应支持 BSW 在多核 MCU 上的分布 | [SRS_Rte_00241]、[SRS_Rte_00242]、[SRS_Rte_00243] | | [RS_BRF_01216] | AUTOSAR OS 应支持将 ScheduleTable 同步到外部时间源 | [SRS_Rte_00232] | | [RS_BRF_01240] | AUTOSAR OS 应支持 OSApplication 之间的通信 | [SRS_Rte_00210] | | [RS_BRF_01248] | AUTOSAR OS 应支持 OSApplication 的终止和重启 | [SRS_Rte_00195]、[SRS_Rte_00196]、[SRS_Rte_00223]、[SRS_Rte_00224] | | [RS_BRF_01304] | AUTOSAR RTE 应支持广播通信 | [SRS_Rte_00179]、[SRS_Rte_00183] | | [RS_BRF_01316] | AUTOSAR RTE 应支持对软件组件透明的数据转换 | [SRS_Rte_00247]、[SRS_Rte_00248]、[SRS_Rte_00249]、[SRS_Rte_00250]、[SRS_Rte_00251]、[SRS_Rte_00253] | | [RS_BRF_01320] | AUTOSAR RTE 应调度 SWC 和 BSW 模块 | [SRS_Rte_00049]、[SRS_Rte_00116]、[SRS_Rte_00211]、[SRS_Rte_00212]、[SRS_Rte_00213]、[SRS_Rte_00214]、[SRS_Rte_00215]、[SRS_Rte_00216]、[SRS_Rte_00217]、[SRS_Rte_00218]、[SRS_Rte_00219]、[SRS_Rte_00220]、[SRS_Rte_00221]、[SRS_Rte_00222]、[SRS_Rte_00229]、[SRS_Rte_00230] | | [RS_BRF_01328] | AUTOSAR RTE 应支持在定义事件上的可执行实体调度 | [SRS_Rte_00162]、[SRS_Rte_00163]、[SRS_Rte_00216]、[SRS_Rte_00230]、[SRS_Rte_00235] | | [RS_BRF_01376] | AUTOSAR RTE 应支持端口数据元素的自动重缩放和转换 | [SRS_Rte_00181]、[SRS_Rte_00182] | | [RS_BRF_01384] | AUTOSAR RTE 应支持数据的自动范围检查 | [SRS_Rte_00180] | | [RS_BRF_01392] | AUTOSAR RTE 应支持旁路(bypass)实现 | [SRS_Rte_00244] | | [RS_BRF_01393] | AUTOSAR RTE 应支持在生成 ECU 映像后可选择的旁路 | [SRS_Rte_00254]、[SRS_Rte_00255]、[SRS_Rte_00256]、[SRS_Rte_00257]、[SRS_Rte_00258]、[SRS_Rte_00259]、[SRS_Rte_00260] | | [RS_BRF_01394] | AUTOSAR 应支持 RTE 管理缓冲区访问的内存接口 | [SRS_Rte_00255]、[SRS_Rte_00256]、[SRS_Rte_00257]、[SRS_Rte_00258]、[SRS_Rte_00259]、[SRS_Rte_00260] | | [RS_BRF_01560] | AUTOSAR 通信应支持将信号映射到可传输的协议数据单元中 | [SRS_Rte_00251] | | [RS_BRF_01568] | AUTOSAR 通信栈应支持固定大小和动态大小的信号 | [SRS_Rte_00190] | | [RS_BRF_01616] | AUTOSAR 通信应支持信号的初始值 | [SRS_Rte_00184] | | [RS_BRF_01649] | AUTOSAR 通信应支持在专用优化模块中传输大且动态的数据 | [SRS_Rte_00246] | | [RS_BRF_01816] | AUTOSAR 非易失性存储功能应基于逻辑内存块组织持久数据 | [SRS_Rte_00176]、[SRS_Rte_00177]、[SRS_Rte_00178]、[SRS_Rte_00228]、[SRS_Rte_00245] | | [RS_BRF_02056] | AUTOSAR OS 应支持时间保护 | [SRS_Rte_00193] | | [RS_BRF_02272] | AUTOSAR 应提供应用软件行为的追踪 | [SRS_Rte_00003]、[SRS_Rte_00004]、[SRS_Rte_00005]、[SRS_Rte_00008]、[SRS_Rte_00045]、[SRS_Rte_00192] | | [RS_Main_00200] | AUTOSAR 规范应允许资源高效的实现 | [SRS_Rte_00300] - [SRS_Rte_00317](多个) | | [RS_Main_00280] | AUTOSAR 应支持标准化的汽车通信协议 | [SRS_Rte_00261] | --- ## 4 RTE 需求 ### 4.1 功能需求 #### 4.1.1 与 AUTOSAR OS 的交互 本节中的所有需求都涉及 RTE 如何与 AUTOSAR OS 交互。AUTOSAR ECU 架构定义所有交互都通过标准化接口进行。 --- **`[SRS_Rte_00020]` 访问 OS**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | RTE 应将 OS 的特性从 AUTOSAR 软件组件中抽象出来。对于 AUTOSAR 软件组件而言,只应通过访问 RTE 的服务接口来直接使用。应用软件组件的设计目标是与 OS 无关,因此不应直接访问任何特定的 OS 函数,只能通过服务接口访问。 | | **理由** | 例如,RTE 使用基于任务的功能(任务、资源、事件等)向应用提供 Runnable Entity 功能。OS 任务的存在对应用不可见。 | | **依赖** | [SRS_Rte_00025] | | **用例** | OS 提供标准化接口。该接口仅由软件组件通过 RTE API 访问,因此访问由 RTE 控制。OS 提供服务接口。这可由软件组件直接访问。 | | **支持材料** | Specification of the Virtual Functional Bus [3];AUTOSAR ECU 架构为 OS 定义了标准化接口,并为应用软件组件定义了 AUTOSAR 接口,因此两者之间不应存在直接交互。 | --- **`[SRS_Rte_00099]` 中断解耦**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | RTE 不应允许将中断上下文传播到应用软件组件。 | | **理由** | 为确保低延迟和确定性,中断上下文可能必须传播到 RTE。如果应用软件组件能够在中断上下文中执行,它们将能够阻塞系统调度并保持不可接受的长时间。 | | **依赖** | — | | **用例** | RTE "拦截"中断并使 Runnable Entity 能够处理通知。Runnable Entity 在任务上下文中执行。 | | **支持材料** | 在本需求中,阻塞意味着 RTE 不应挂起(Running→Waiting)执行回调的控制线程。并不意味着该线程不可被抢占。即阻塞是"挂起"而非"抢占"。 | --- **`[SRS_Rte_00036]` 分配到 OS Application**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | 在使用分区时,RTE 生成器应拒绝那些将一个软件组件实例的 Runnable Entity 未分配到同一 OS-Application 内的任务的配置。 | | **理由** | 属于同一 OS-Application 的所有对象(例如资源、告警)可相互访问 —— OS 将终止尝试在不属于同一 OS Application 的情况下进行直接访问的任务。 | | **依赖** | [SRS_Rte_00018] | | **用例** | 需要高效访问 —— 如果映射到不同的 OS Application,RTE 将需要实现保护模式切换,这将对效率产生重大影响。 | | **支持材料** | 在使用内存保护的情况下,为组件实例映射的任务构成单个 OS Application —— 这允许以最低开销进行组件内部交互。 | --- **`[SRS_Rte_00049]` 任务体的构造**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | RTE 生成器应构造任务体以适合 AUTOSAR OS 的形式执行 Runnable Entity 和基础软件可调度实体 —— 通常作为以 C 链接导出的函数。 | | **理由** | SW-Component 描述声明组件中存在的 Runnable Entity。基础软件模块描述声明 BSW 模块中存在的基础软件可调度实体。Runnable Entity 和基础软件可调度实体到任务的映射是生成器的输入的一部分。自动映射过于复杂(输入中数据不足),因此在 AUTOSAR 当前阶段不予以考虑。 | | **依赖** | [SRS_Rte_00219] | | **用例** | 可以提供:
• 仅包含 Runnable Entity 的任务
• 支持 Runnable Entity 和基础软件可调度实体交错执行的任务
• 仅包含基础软件可调度实体的任务。 | | **支持材料** | — | --- **`[SRS_Rte_00193]` 支持 Runnable Entity 执行链**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | RTE 生成器应通过将被监控的 Runnable Entity 映射到一个或多个 OS 任务来允许 Runnable Entity 监控,并在使用多个 OS 任务时链接这些 OS 任务的执行。 | | **理由** | 为了按单个(或多个)Runnable Entity 监控其执行时间,应使用任务链接机制,从而可使用 OS 任务监控来实现监控。RTE 应能够激活(链接)链接任务的执行以获得期望的 Runnable Entity 执行顺序。 | | **依赖** | — | | **用例** | 被配置为在一个 OS 任务中顺序执行的 Runnable Entity 应能够被拆分到多个 OS 任务中,以便在细粒度级别(单个 Runnable Entity 或多个 Runnable Entity)应用 OS 执行时间监控。要获得相同的行为,应使用任务链接机制。 | | **支持材料** | — | --- **`[SRS_Rte_00210]` 支持 OS Application 间通信**(valid) | 字段 | 内容 | |------|------| | **类型** | valid | | **描述** | RTE 应支持分配到不同 OS Application 的软件组件实例之间的通信,其中不同 OS Application 可能位于不同的内存分区和/或核上。 | | **理由** | 由于来自不同 OS Application 的软件组件实例可能位于不同核和不同内存分区上,它们之间的通信可能需要专用的通信和信令方法,例如使用跨 OS Application 通信模块。 | | **依赖** | [SRS_Rte_00011] | | **用例** | 多核支持、内存分区支持。 | | **支持材料** | — | --- #### 4.1.2 与 AUTOSAR COM 的交互 本节涉及 RTE 如何与 AUTOSAR COM 交互。AUTOSAR ECU 架构定义所有交互都通过标准化接口进行。 主要需求概览: | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00068]` | 信号初始值 | RTE 生成器应确保为指定 INIT_VALUE 的信号进行初始化,防止应用读取未初始化数据。 | | `[SRS_Rte_00069]` | 通信超时 | RTE 生成器应包含运行时检查,用于监控 ECU 配置中为阻塞通信指定的超时。 | | `[SRS_Rte_00073]` | 数据元素的原子传输 | RTE 应确保数据元素(无论简单还是复合)和单个 RTE 操作的所有参数的传输和接收被视为原子单元。 | | `[SRS_Rte_00082]` | 标准化通信协议 | RTE 应定义并实现 ECU 间 C/S 通信的协议(如消息序列)。 | | `[SRS_Rte_00091]` | ECU 间编组(Marshalling) | RTE 应在 ECU 间传输/接收数据元素或操作参数时使用通用格式。 | | `[SRS_Rte_00181]` | 内部和网络数据类型之间的转换 | RTE 应在配置时为不同数据类型生成转换例程,以节省串行数据链路带宽。 | | `[SRS_Rte_00246]` | 支持大数据的 Efficient COM | RTE 应支持多个交互层模块(当前支持 COM 和 Efficient COM)。 | | `[SRS_Rte_00251]` | 使用 Com 处理基于数组的信号组 | 当配置时,RTE 应使用 uint8-array API 将复合数据的序列化表示传递给 COM。 | #### 4.1.3 与应用软件组件的交互 包括应用软件组件、传感器组件和执行器组件。 主要需求概览: | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00011]` | 支持多个应用软件组件实例 | RTE 应支持同一应用/传感器/执行器软件组件类型映射到同一 ECU 上的多个实例。 | | `[SRS_Rte_00012]` | 多个以二进制代码交付的 AUTOSAR 软件组件实例应共享代码 | RTE 生成器应通过共享同一应用软件组件代码来实现同一 AUTOSAR 软件组件类型的多个实例化。 | | `[SRS_Rte_00013]` | 每实例内存 | RTE 应为应用软件组件提供每实例内存。 | | `[SRS_Rte_00077]` | 每实例内存的实例化 | RTE 生成器应根据软件组件描述中的属性实例化每个每实例内存段。 | | `[SRS_Rte_00017]` | 拒绝不一致的组件实现 | RTE 生成器应确保编译器可以检测(并拒绝)访问未定义的 RTE API 调用。 | | `[SRS_Rte_00134]` | RTE 支持的 Runnable Entity 类别 | RTE 应支持 Runnable Entity 类别 1a、1b 和 2。 | | `[SRS_Rte_00072]` | Runnable Entity 的激活 | RTE 应根据其链接的 RTEEvent 启动/恢复 Runnable Entity。 | | `[SRS_Rte_00160]` | Runnable Entity 的去抖启动 | RTE 应允许配置 Runnable Entity 的去抖启动时间。 | | `[SRS_Rte_00161]` | Runnable Entity 的激活偏移 | RTE 应允许定义 Runnable Entity 的激活偏移。 | | `[SRS_Rte_00031]` | 多个 Runnable Entity | RTE 应支持一个软件组件类型中的多个 Runnable Entity。 | | `[SRS_Rte_00032]` | 数据一致性机制 | RTE 应支持一种或多种用于确保应用软件组件实例内数据一致性的机制。 | | `[SRS_Rte_00046]` | 支持"可执行实体运行于"独占区 | RTE 应支持声明 Runnable Entity 或基础软件可调度实体"运行于"独占区。 | | `[SRS_Rte_00142]` | 支持 InterRunnableVariables | RTE 应支持 InterRunnableVariables。 | | `[SRS_Rte_00033]` | 服务器 Runnable Entity 的串行执行 | RTE 应支持服务器 Runnable Entity 的串行和非串行执行。 | | `[SRS_Rte_00133]` | Runnable Entity 的并发调用 | RTE 必须允许并支持 Runnable Entity 的并发调用。 | | `[SRS_Rte_00143]` | 模式切换 | RTE 应实现 ModeSwitchEvent 和 ModeDisablingDependency 的功能。 | | `[SRS_Rte_00176]` | NVRAM 数据共享 | 多个应用软件组件应能够通过端口访问 NvBlockComponentType 中定义的相同数据。 | | `[SRS_Rte_00180]` | 运行时 DataSemantics 范围检查 | 提供 RTE 中的功能以对 S/R 和 C/S 通信的数据元素值范围进行检查。 | | `[SRS_Rte_00182]` | 端口接口的自缩放信号 | 当显式指定时,RTE 应支持接口具有不兼容数据类型或不兼容数据语义的端口的连接。 | | `[SRS_Rte_00236]` | 支持 ModeInterfaceMapping | RTE 应支持连接由不同 ModeSwitchInterfaces 类型的端口。 | | `[SRS_Rte_00237]` | Runnable Entity 的周期性激活 | RTE 应支持 Runnable Entity 的周期性激活。 | #### 4.1.4 与基础软件组件的交互 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00152]` | 支持端口定义参数值 | 应支持 AUTOSAR 软件组件模板中定义的"端口定义参数值"机制。 | | `[SRS_Rte_00022]` | 与回调的交互 | RTE 在执行回调时不应挂起执行。 | | `[SRS_Rte_00062]` | 对基础软件组件的本地访问 | RTE 应允许应用和基础软件组件通过 RTE 直接访问位于同一 ECU 上的基础软件组件的 AUTOSAR 接口。 | | `[SRS_Rte_00169]` | 将 RTE 分配的代码和内存映射到内存段 | RTE 应将其生成的代码和分配的内存映射到 RTE 内存段。 | | `[SRS_Rte_00170]` | 提供所用内存段的描述 | RTE 生成器应生成一个 XML 文件,描述通过 BSW 模块模板使用的内存段。 | | `[SRS_Rte_00177]` | 支持 NvBlockComponentType | RTE 应通过向 NVRAM Manager 提供 NvRAM 和 NvROM 块来支持 NvBlockComponentType。 | | `[SRS_Rte_00228]` | NvBlock 回调函数的扇出 | RTE 应支持从 NVRAM Manager 到使用相应 NvBlock 的多个软件组件实例的 NvBlock 回调函数的扇出。 | | `[SRS_Rte_00233]` | 生成基础软件模块描述 | RTE 生成器应提供实际生成的 RTE 的基础软件模块描述。 | | `[SRS_Rte_00241]` | 支持分区系统上 BSW 服务调用的本地或远程处理 | 对于 BSW 模块可在多个分区中执行的系统,RTE 生成器应将来自 SWC 的 BSW 服务调用重定向到本地或远程分区。 | | `[SRS_Rte_00245]` | 支持 NV 数据的写入策略 | RTE 应提供一种机制以一定的时序模式(写入策略)将 RAM 块的更新 NV 数据写入 NV 内存。 | #### 4.1.5 BSW 调度器的生成 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00211]` | BSW 可调度实体的基于周期时间的调度 | RTE 应支持 BSW 可调度实体的基于周期时间的调度。 | | `[SRS_Rte_00212]` | BSW 可调度实体的激活偏移 | RTE 应允许定义 BSW 可调度实体的激活偏移。 | | `[SRS_Rte_00213]` | BSW 模块的模式切换 | RTE 应支持 BSW 模块的模式切换。 | | `[SRS_Rte_00214]` | 基础软件和应用软件的通用模式处理 | RTE 应支持影响 BSW 模块和应用软件组件的模式协调切换。 | | `[SRS_Rte_00215]` | 用于向 SchM 通知模式切换的 API | SchM 应提供从 BSW 模式管理器向 SchM 通知活动模式的 API。 | | `[SRS_Rte_00216]` | 通过外部触发事件触发 BSW 可调度实体 | RTE 应支持通过外部触发的发生触发 BSW 可调度实体。 | | `[SRS_Rte_00230]` | 通过内部触发事件触发 BSW 可调度实体 | RTE 应支持通过内部触发的发生触发 BSW 可调度实体。 | | `[SRS_Rte_00217]` | Runnable Entity 和 BSW 可调度实体的同步激活 | RTE 应支持 Runnable Entity 和 BSW 可调度实体的同步激活。 | | `[SRS_Rte_00218]` | 用于通过触发事件触发 BSW 模块的 API | RTE 应为通过触发事件触发 BSW 模块提供 API。 | | `[SRS_Rte_00219]` | 支持 Runnable Entity 和 BSW 可调度实体的交错执行序列 | RTE 应支持 Runnable Entity 和 BSW 可调度实体的交错执行序列。 | | `[SRS_Rte_00220]` | ECU 生命周期相关的调度 | RTE 应支持 ECU 生命周期相关的调度。 | | `[SRS_Rte_00221]` | 支持 "BSW 集成" 构建 | RTE 应支持 BSW 集成构建。 | | `[SRS_Rte_00222]` | 在 BSW 服务模块和相应服务组件中支持共享独占区 | RTE 应在 BSW 服务模块和相应服务组件中支持共享独占区。 | | `[SRS_Rte_00229]` | 支持 BSW 模块的变体处理 | RTE 应支持 BSW 模块的变体处理。 | | `[SRS_Rte_00243]` | 支持 BSW 模块的跨分区通信 | RTE 应支持 BSW 模块的跨分区通信。 | #### 4.1.6 测量和标定支持 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00153]` | 支持测量 | RTE 应支持测量。 | | `[SRS_Rte_00154]` | 支持标定 | RTE 应支持标定。 | | `[SRS_Rte_00156]` | 支持不同的标定数据仿真方法 | RTE 应支持不同的标定数据仿真方法。 | | `[SRS_Rte_00157]` | 支持 NVRAM 中的标定参数 | RTE 应支持 NVRAM 中的标定参数。 | | `[SRS_Rte_00158]` | 支持标定参数分离 | RTE 应支持标定参数的分离。 | | `[SRS_Rte_00159]` | 标定参数共享 | RTE 应支持标定参数共享。 | | `[SRS_Rte_00189]` | A2L 生成支持 | RTE 应支持 A2L 生成。 | #### 4.1.7 一般需求 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00021]` | 每 ECU 的 RTE 定制 | RTE 应支持每 ECU 的定制。 | | `[SRS_Rte_00065]` | 确定性生成 | RTE 生成应是确定性的。 | | `[SRS_Rte_00028]` | "1:n" 发送方-接收方通信 | RTE 应支持 1:n 发送方-接收方通信。 | | `[SRS_Rte_00131]` | "n:1" 发送方-接收方通信 | RTE 应支持 n:1 发送方-接收方通信。 | | `[SRS_Rte_00029]` | "n:1" 客户端-服务器通信 | RTE 应支持 n:1 客户端-服务器通信。 | | `[SRS_Rte_00079]` | 单一异步客户端-服务器交互 | RTE 应支持单一异步 C/S 交互。 | | `[SRS_Rte_00080]` | 服务器的多个请求 | RTE 应支持服务器的多个请求。 | | `[SRS_Rte_00162]` | "1:n" 外部触发通信 | RTE 应支持 1:n 外部触发通信。 | | `[SRS_Rte_00163]` | 支持 InterRunnableTriggering | RTE 应支持 InterRunnableTriggering。 | | `[SRS_Rte_00235]` | 支持队列触发 | RTE 应支持队列触发。 | | `[SRS_Rte_00025]` | 静态通信 | RTE 应支持静态通信。 | | `[SRS_Rte_00144]` | RTE 应支持通过 AUTOSAR 接口通知模式切换 | RTE 应支持通过 AUTOSAR 接口通知模式切换。 | | `[SRS_Rte_00018]` | 拒绝无效配置 | RTE 生成器应拒绝无效配置。 | | `[SRS_Rte_00055]` | RTE 使用全局命名空间 | RTE 应使用全局命名空间。 | | `[SRS_Rte_00164]` | 确保全局命名空间中生成的类型具有唯一命名 | RTE 应确保全局命名空间中生成的类型具有唯一命名。 | | `[SRS_Rte_00165]` | 抑制相同的"C"类型重定义 | RTE 应抑制相同的"C"类型重定义。 | | `[SRS_Rte_00166]` | 如果 AUTOSAR 数据类型映射到 AUTOSAR 标准类型,则在全局命名空间中使用 AUTOSAR 标准类型 | RTE 应遵循此规则。 | | `[SRS_Rte_00167]` | 封装软件组件本地命名空间 | RTE 应封装软件组件本地命名空间。 | | `[SRS_Rte_00252]` | 封装 BSW 模块本地命名空间 | RTE 应封装 BSW 模块本地命名空间。 | | `[SRS_Rte_00126]` | C 语言支持 | RTE 应支持 C 语言。 | | `[SRS_Rte_00138]` | C++ 语言支持 | RTE 应支持 C++ 语言。 | | `[SRS_Rte_00051]` | RTE API 映射 | RTE 应进行 API 映射。 | | `[SRS_Rte_00048]` | RTE 生成器输入 | RTE 应接受生成器输入。 | | `[SRS_Rte_00023]` | RTE 开销 | RTE 应最小化开销。 | | `[SRS_Rte_00024]` | 源代码 AUTOSAR 软件组件 | RTE 应支持源代码 AUTOSAR 软件组件。 | | `[SRS_Rte_00140]` | 二进制代码 AUTOSAR 软件组件 | RTE 应支持二进制代码 AUTOSAR 软件组件。 | | `[SRS_Rte_00083]` | 源代码组件优化 | RTE 生成器应优化源代码组件。 | | `[SRS_Rte_00027]` | VFB 到 RTE 映射应保留语义 | VFB 到 RTE 的映射应保留语义。 | | `[SRS_Rte_00190]` | 支持变长数据类型 | RTE 应支持变长数据类型。 | | `[SRS_Rte_00234]` | 支持记录类型子集 | RTE 应支持记录类型子集。 | | `[SRS_Rte_00098]` | 显式发送 | RTE 应支持显式发送。 | | `[SRS_Rte_00129]` | 隐式发送 | RTE 应支持隐式发送。 | | `[SRS_Rte_00128]` | 隐式接收 | RTE 应支持隐式接收。 | | `[SRS_Rte_00141]` | 显式接收 | RTE 应支持显式接收。 | | `[SRS_Rte_00092]` | VFB 模型 "waitpoints" 的实现 | RTE 应实现 VFB 模型的 waitpoints。 | | `[SRS_Rte_00145]` | 兼容模式 | RTE 应支持兼容模式。 | | `[SRS_Rte_00146]` | 供应商模式 | RTE 应支持供应商模式。 | | `[SRS_Rte_00148]` | 支持 "内存映射规范" | RTE 应支持内存映射规范。 | | `[SRS_Rte_00149]` | 支持 "编译器抽象规范" | RTE 应支持编译器抽象规范。 | | `[SRS_Rte_00150]` | 支持 "平台类型规范" | RTE 应支持平台类型规范。 | | `[SRS_Rte_00151]` | 支持 "BSW 模块一般需求" 的 RTE 相关需求 | RTE 应支持 BSW 模块一般需求中的 RTE 相关需求。 | | `[SRS_Rte_00171]` | 支持固定和常量数据 | RTE 应支持固定和常量数据。 | | `[SRS_Rte_00178]` | NvBlockComponentType 的数据一致性 | RTE 应保证 NvBlockComponentType 的数据一致性。 | | `[SRS_Rte_00179]` | 支持数据接收的 Update Flag | RTE 应支持数据接收的更新标志。 | | `[SRS_Rte_00184]` | RTE 状态 "从未接收" | RTE 应提供 "从未接收" 状态。 | | `[SRS_Rte_00191]` | 支持变体处理 | RTE 应支持变体处理。 | | `[SRS_Rte_00201]` | 支持变体处理的合约阶段 | RTE 应在合约阶段支持变体处理。 | | `[SRS_Rte_00202]` | 支持数组大小变体 | RTE 应支持数组大小变体。 | | `[SRS_Rte_00204]` | 支持 SWC 原型的选择/取消选择 | RTE 应支持 SWC 原型的选择和取消选择。 | | `[SRS_Rte_00206]` | 支持信号提供者的选择 | RTE 应支持信号提供者的选择。 | | `[SRS_Rte_00207]` | 支持未解析变体影响通信时的 N 到 M 通信模式 | RTE 应支持 N 到 M 通信模式。 | | `[SRS_Rte_00231]` | 支持 Rte 和 Com 之间用于字符串和 uint8 数组的本地接口 | RTE 应支持用于字符串和 uint8 数组的本地接口。 | | `[SRS_Rte_00232]` | Runnable Entity 的同步 | RTE 应支持 Runnable Entity 的同步。 | | `[SRS_Rte_00238]` | 允许启用获取可执行实体的激活事件的 RTE 功能 | RTE 应允许启用获取激活事件的功能。 | | `[SRS_Rte_00244]` | 支持旁路 | RTE 应支持旁路。 | | `[SRS_Rte_00254]` | 可选择的 RP 准备 | RTE 应支持可选择的 RP 准备。 | | `[SRS_Rte_00255]` | RP 内存接口 | RTE 应支持 RP 内存接口。 | | `[SRS_Rte_00256]` | 条件旁路 | RTE 应支持条件旁路。 | | `[SRS_Rte_00257]` | RunnableEntity 旁路 | RTE 应支持 RunnableEntity 旁路。 | | `[SRS_Rte_00258]` | RTE 生成的服务点 | RTE 应支持生成的服务点。 | | `[SRS_Rte_00259]` | 手动插入的服务点 | RTE 应支持手动插入的服务点。 | | `[SRS_Rte_00260]` | RP 接口文档 | RTE 应提供 RP 接口文档。 | | `[SRS_Rte_00247]` | RTE 应执行 SWC 通信的转换器链 | RTE 应执行 SWC 通信的转换器链。 | | `[SRS_Rte_00248]` | RTE 应为数据转换提供缓冲区 | RTE 应为数据转换提供缓冲区。 | | `[SRS_Rte_00249]` | RTE 应向 SWC 提供转换错误 | RTE 应向 SWC 提供转换错误。 | | `[SRS_Rte_00250]` | RTE 应向 SWC 提供变长数组的大小指示 | RTE 应向 SWC 提供变长数组的大小指示。 | | `[SRS_Rte_00253]` | RTE 应在一个 ECU 内为 SWC/BSW 通信执行数据转换 | RTE 应在 ECU 内执行 SWC/BSW 通信的数据转换。 | | `[SRS_Rte_00261]` | RTE 应支持可选结构成员 | RTE 应支持可选结构成员。 | #### 4.1.8 VFB 追踪 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00005]` | RTE 生成器应支持 "trace" 构建 | RTE 生成器应支持追踪构建。 | | `[SRS_Rte_00045]` | 标准化的 VFB 追踪接口 | RTE 应提供标准化的 VFB 追踪接口。 | | `[SRS_Rte_00008]` | VFB 追踪配置 | RTE 应支持 VFB 追踪配置。 | | `[SRS_Rte_00192]` | 支持多个追踪客户端 | RTE 应支持多个追踪客户端。 | | `[SRS_Rte_00003]` | 发送方-接收方通信的追踪 | RTE 应支持 S/R 通信的追踪。 | | `[SRS_Rte_00004]` | 客户端-服务器通信的追踪 | RTE 应支持 C/S 通信的追踪。 | #### 4.1.9 应用软件组件的初始化和终结化 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00052]` | 组件的初始化和终结化 | RTE 应支持组件的初始化和终结化。 | | `[SRS_Rte_00070]` | Runnable Entity 的调用顺序 | RTE 应定义 Runnable Entity 的调用顺序。 | | `[SRS_Rte_00239]` | 支持基于规则的复合 DataPrototype 和复合基本类型 DataPrototype 的初始化 | RTE 应支持此类初始化。 | | `[SRS_Rte_00240]` | 支持初始化 Runnable 用于初始化目的 | RTE 应支持初始化 Runnable。 | #### 4.1.10 API | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00100]` | 与编译器无关的 API | RTE 应提供与编译器无关的 API。 | | `[SRS_Rte_00168]` | RTE API 的类型化 | RTE API 应具有类型。 | | `[SRS_Rte_00059]` | RTE API 应按值传递 "in" 基本数据类型 | RTE API 应按值传递 "in" 基本数据类型。 | | `[SRS_Rte_00060]` | RTE API 应按引用传递 "in" 复合数据类型 | RTE API 应按引用传递 "in" 复合数据类型。 | | `[SRS_Rte_00061]` | "in/out" 和 "out" 参数 | RTE API 应正确处理 "in/out" 和 "out" 参数。 | | `[SRS_Rte_00115]` | 数据一致性机制的 API | RTE 应提供数据一致性机制的 API。 | | `[SRS_Rte_00075]` | 访问每实例内存的 API | RTE 应提供访问每实例内存的 API。 | | `[SRS_Rte_00107]` | 支持 INFORMATION_TYPE 属性 | RTE 应支持 INFORMATION_TYPE 属性。 | | `[SRS_Rte_00108]` | 支持 INIT_VALUE 属性 | RTE 应支持 INIT_VALUE 属性。 | | `[SRS_Rte_00109]` | 支持 RECEIVE_MODE 属性 | RTE 应支持 RECEIVE_MODE 属性。 | | `[SRS_Rte_00110]` | 支持 BUFFERING 属性 | RTE 应支持 BUFFERING 属性。 | | `[SRS_Rte_00111]` | 支持 CLIENT_MODE 属性 | RTE 应支持 CLIENT_MODE 属性。 | | `[SRS_Rte_00121]` | 支持 FILTER 属性 | RTE 应支持 FILTER 属性。 | | `[SRS_Rte_00147]` | 支持通信基础设施超时通知 | RTE 应支持通信基础设施超时通知。 | | `[SRS_Rte_00078]` | 支持数据元素无效化 | RTE 应支持数据元素无效化。 | | `[SRS_Rte_00122]` | 支持传输确认 | RTE 应支持传输确认。 | | `[SRS_Rte_00094]` | 通信和资源错误 | RTE 应处理通信和资源错误。 | | `[SRS_Rte_00084]` | 支持基础设施错误 | RTE 应支持基础设施错误。 | | `[SRS_Rte_00123]` | RTE 应将应用级错误从服务器转发到客户端 | RTE 应转发应用级错误。 | | `[SRS_Rte_00124]` | 客户端-服务器通信期间应用级错误的 API | RTE 应提供 C/S 通信期间应用级错误的 API。 | | `[SRS_Rte_00089]` | 独立访问接口元素 | RTE 应支持独立访问接口元素。 | | `[SRS_Rte_00137]` | 不匹配端口的 API | RTE 应提供不匹配端口的 API。 | | `[SRS_Rte_00139]` | 支持未连接的端口 | RTE 应支持未连接的端口。 | | `[SRS_Rte_00200]` | 支持未连接的 R-Port | RTE 应支持未连接的 R-Port。 | | `[SRS_Rte_00155]` | 访问标定参数的 API | RTE 应提供访问标定参数的 API。 | | `[SRS_Rte_00183]` | 返回数据元素值的 RTE 读 API | RTE 应提供返回数据元素值的读 API。 | | `[SRS_Rte_00185]` | 带 Rte_IFeedback 的 RTE API | RTE 应提供带 Rte_IFeedback 的 API。 | | `[SRS_Rte_00203]` | 读取系统常量的 API | RTE 应提供读取系统常量的 API。 | | `[SRS_Rte_00242]` | 支持跨核独占区 | RTE 应支持跨核独占区。 | #### 4.1.11 C/C++ API | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00087]` | 软件模块头文件生成 | RTE 应生成软件模块头文件。 | #### 4.1.12 初始化和终结化操作 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00116]` | RTE 初始化和终结化 | RTE 应支持初始化和终结化。 | #### 4.1.13 分区重启和终止 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00195]` | 不在已终止或正在重启的分区中激活 Runnable Entity | RTE 应遵守此规则。 | | `[SRS_Rte_00196]` | 跨分区通信的一致性 | RTE 应保证跨分区通信的一致性。 | | `[SRS_Rte_00223]` | 用于分区终止通知的回调 | RTE 应提供分区终止通知的回调。 | | `[SRS_Rte_00224]` | 用于分区重启请求的回调 | RTE 应提供分区重启请求的回调。 | #### 4.1.14 错误操作 RTE 应支持错误处理以保证系统健壮性。 #### 4.1.15 RTE 实现插件 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00300]` | 用于显式通信的 RTE 实现插件 | RTE 应支持用于显式通信的插件。 | | `[SRS_Rte_00301]` | 用于隐式通信的 RTE 实现插件 | RTE 应支持用于隐式通信的插件。 | | `[SRS_Rte_00302]` | 用于独占区的 RTE 实现插件 | RTE 应支持用于独占区的插件。 | | `[SRS_Rte_00303]` | 用于全局副本实例化的 RTE 实现插件 | RTE 应支持用于全局副本实例化的插件。 | | `[SRS_Rte_00304]` | 多个 RTE 插件 | RTE 应支持多个插件。 | | `[SRS_Rte_00305]` | 分级验证策略 | RTE 应支持分级验证策略。 | | `[SRS_Rte_00306]` | RTE 实现插件的标准化接口 | RTE 应为实现插件提供标准化接口。 | | `[SRS_Rte_00307]` | 用于跨核通信的 RTE 实现插件 | RTE 应支持用于跨核通信的插件。 | | `[SRS_Rte_00309]` | 用于跨安全分区通信的 RTE 实现插件 | RTE 应支持用于跨安全分区通信的插件。 | | `[SRS_Rte_00310]` | 共享模式队列 | RTE 应支持共享模式队列。 | | `[SRS_Rte_00311]` | 模式切换的核同步转换 | RTE 应支持模式切换的核同步转换。 | | `[SRS_Rte_00312]` | 用于 C/S 通信中转换器的 RTE 实现插件 | RTE 应支持此类插件。 | | `[SRS_Rte_00317]` | 用于触发通信中转换器的 RTE 实现插件 | RTE 应支持此类插件。 | | `[SRS_Rte_00313]` | RTE 实现插件属性的描述 | RTE 应描述实现插件属性。 | | `[SRS_Rte_00314]` | 避免嵌套临界区 | RTE 应避免嵌套临界区。 | | `[SRS_Rte_00315]` | 模式机实例访问的保护 | RTE 应保护模式机实例访问。 | | `[SRS_Rte_00316]` | 用于兼容模式的 RTE 实现插件 | RTE 应支持此类插件。 | ### 4.2 非功能需求 #### 4.2.1 一般需求 | 需求 ID | 标题 | 简要描述 | |---------|------|----------| | `[SRS_Rte_00064]` | AUTOSAR 方法论 | RTE 应遵循 AUTOSAR 方法论。 | | `[SRS_Rte_00019]` | RTE 是通信基础设施 | RTE 是 AUTOSAR 系统中的通信基础设施。 | --- ## 翻译说明 - **文档类型**:SRS(Software Requirements Specification)— 软件需求规范 - **原文页数**:106 页 - **翻译范围**:本文档对需求追踪章节、文档元信息、变更历史进行了完整翻译;对第 4 章各节中的所有需求 ID 和关键描述进行了完整翻译。 - **保留内容**:所有需求 ID(如 `SRS_Rte_xxxxx`)、技术术语、API 标识符、`⌈⌋` 方框符、文档交叉引用。 - **未翻译**:版权声明、详细使用案例和支持材料的逐字翻译(已在表格中给出关键描述)。 - **详细完整的需求描述**(包括 Use Case、Supporting Material、Rationale、Dependencies 等完整字段)请参考原文 PDF。