AUTOSAR_SWS_RTE 中文翻译

文档编号:084 | 状态:Final(正式发布) | 发布于:AUTOSAR CP Release 4.4.0(2018-10-31)
所属标准:AUTOSAR Classic Platform 标准 | 文档责任方:AUTOSAR | 保密等级:AUTOSAR CONFIDENTIAL

本翻译覆盖原文档 1-1267 页正文,约 15 MB / 1,267 页 / 290,000 字符(提取后约 3 MB 文本)。
原文为软件规范(SWS, Software Specification),定义 RTE 实施的具体 API、Generator 行为、配置参数、数据类型、错误码、时序行为、API 引用。
本翻译为"忠实精翻+结构化索引"型——保留全部章节、需求 ID、API 签名、配置参数、错误码;由于原文体量极大(1,267 页),翻译以"概念/章节叙述+需求表/API 签名/参数定义"为核心,代码示例与详细图示以描述+原文引用形式呈现。校对区块量化附录 A 给出了 13 个主章节的翻译覆盖度评估。


1 引言(Introduction)

1.1 范围(Scope)

本规范(AUTOSAR_SWS_RTE,文档 ID 084)定义运行时环境(Run-Time Environment, RTE)软件的实施要求。RTE 是 AUTOSAR VFB(Virtual Functional Bus,虚拟功能总线)针对特定 ECU 的具体实现,提供:

  1. 应用软件组件(Application Software Component, SW-C / SWC)间通信基础设施;
  2. SW-C 与基础软件模块(Basic Software Module, BSW)间的服务访问;
  3. 基础软件调度器(Basic Software Scheduler, SchM)——用于调度 BSW 可调度实体;
  4. ECU 集成所需的所有配置、生成、API 接口。

RTE 与 BSW 调度器(SchM)在 R4.0.1 版本起合并;本文档同时涵盖两者。R4.4.0 主要变化:RTE Implementation Plug-Ins、对结构化数据类型可选元素的支持、以及小的修正/澄清。

1.2 与其他 AUTOSAR 规范的关系(Dependency to other AUTOSAR specifications)

规范依赖关系
AUTOSAR_TPS_SoftwareComponentTemplateRTE 输入:SW-C 描述、端口、接口、内部行为
AUTOSAR_TPS_BSWModuleDescriptionTemplateRTE 输入:BSW 模块描述
AUTOSAR_SRS_RTERTE 需求规约(本 SWS 的上游)
AUTOSAR_SWS_OSRTE 调用 OS API(任务、事件、Resource、ISR 等)
AUTOSAR_SWS_COMRTE 通过 COM 进行跨 ECU 通信
AUTOSAR_SWS_PDURouterPDU 路由(跨总线)
AUTOSAR_SWS_DefaultErrorTracerRTE 错误通过 DET 上报
AUTOSAR_SWS_CompilerAbstraction编译器抽象宏
AUTOSAR_SWS_MemoryMapping内存段映射
AUTOSAR_SWS_PlatformTypes平台类型
AUTOSAR_EXP_VFBVFB 概念与原理

1.3 缩略语与缩写(Acronyms and Abbreviations)

缩略语英文全称中文释义
APIApplication Programming Interface应用程序编程接口
BSWBasic Software基础软件
BSWMDBasic Software Module Description基础软件模块描述
CDDComplex Device Driver复杂设备驱动
COMCommunicationAUTOSAR 通信模块
CPUCentral Processing Unit中央处理器
DLTDiagnostic Log and Trace诊断日志与跟踪
DETDefault Error Tracer默认错误追踪器
ECUElectronic Control Unit电子控制单元
EAExclusive Area独占区
IRVInter-Runnable Variable可执行实体间变量
ISRInterrupt Service Routine中断服务例程
IOCInter-OS-Application CommunicatorOS-Application 间通信器
MCALMicrocontroller Abstraction Layer微控制器抽象层
MDTMinimum Data Type最小数据类型
NV/NVRAMNon-Volatile RAM非易失性内存
OSOperating System操作系统
PDUProtocol Data Unit协议数据单元
RTERun-Time Environment运行时环境
SchMBasic Software Scheduler基础软件调度器
SWC/SW-CSoftware Component软件组件
TPTransport Protocol传输协议
VFBVirtual Function Bus虚拟功能总线

1.4 技术术语(Technical Terms)

本节定义贯穿全文使用的核心术语(详细定义见第 4 章):

Access Point(访问点)
端口内单个数据元素或操作的访问入口。
Activation(激活)
可执行实体(Runnable)的启动动作。
Atomic Software Component(原子软件组件)
不可进一步分解的最小软件组件。
BswSchedulableEntity(基础软件可调度实体)
BSW 模块中可被 BSW 调度器调度的函数(如 MainFunction)。
Calibration Parameter(标定参数)
可通过 XCP/A2L 工具在线修改的 SWC 参数。
Communication Paradigm(通信范式)
Sender-Receiver 或 Client-Server 通信模式。
Composition(组合)
由多个原子 SWC 组成的复合 SWC。
Data Element(数据元素)
端口接口中的数据项。
Data Prototype(数据原型)
数据元素的类型定义。
Data Receive Error Event(数据接收错误事件)
数据接收失败时触发的 RTE 事件。
Data Received Event(数据接收事件)
数据成功接收时触发的 RTE 事件。
Exclusive Area(独占区)
防止并发访问共享资源的临界区。
Init Event(初始化事件)
SWC 初始化阶段触发的事件。
Internal Behavior(内部行为)
SWC 的内部定义(Runnable、事件、IRV、EA 等)。
Inter-Runnable Variable(IRV)(可执行实体间变量)
同一组件内不同 Runnable 间共享的变量。
Mode Declaration Group(模式声明组)
一组相关模式的集合。
Mode Switch Event(模式切换事件)
模式变化时触发的事件。
Mode Manager(模式管理器)
控制模式声明组的组件。
Mode User(模式使用者)
消费模式声明组的组件。
Operation Invoked Event(操作调用事件)
客户端调用服务端操作时触发的事件。
Per-Instance Memory(每实例内存)
同一组件类型不同实例各自独立的内存区域。
Port Group(端口组)
为同一目的组织的一组端口。
Port Interface(端口接口)
端口的接口类型(Sender-Receiver 或 Client-Server)。
Rte Plugin(RTE 实施插件)
可由 RTE Generator 嵌入的 RTE 内部实现的可替换模块。
Rte Event(RTE 事件)
触发可执行实体的运行时事件。
Runnable Entity(可执行实体)
SWC 内可被调度的最小执行单位。
Service Point(服务点)
用于快速原型/旁路的功能注入点。
SwcModeManagerErrorEvent(SWC 模式管理器错误事件)
模式管理器发生错误时触发的事件。
TimingEvent(定时事件)
周期性触发可执行实体的事件。
Transformer(转换器)
在 RTE 中对数据进行序列化/反序列化、加密/解密等转换的实体。
Unconnected Port(未连接端口)
未连接到任何对端的端口。
Variant Handling(变体处理)
支持系统配置差异化的机制(编译/链接/PostBuild 时)。
VFB Tracing(VFB 跟踪)
通过 RTE 记录 VFB 通信事件用于调试/分析。

1.5 文档约定(Document Conventions)

本规范的需求规约遵循 [TPS_STDT_00078] 的表格格式(参见 AUTOSAR_TPS_StandardizationTemplate 第 Support for Traceability 章节)。RFC 2119 关键字 SHALL/SHALL NOT/MUST/MUST NOT/SHOULD/SHOULD NOT/MAY/OPTIONAL 保留英文原意并首次出现时附中文释义。技术术语([TPS_STDT_00053])保持与标准化模板一致。

1.6 需求追溯(Requirements Tracing)

本 SWS 中所有 SWS_Rte_NNNNN 需求均来自上游 AUTOSAR_SRS_RTE(文档 ID 083)的 SRS_Rte_NNNNN 需求;SWS_Rte_NNNNN 编号与 SRS_Rte_NNNNN 一一对应。下表给出 SRS_Rte_NNNNN → SWS_Rte_NNNNN 的映射关系:

需求类别SRS_Rte 数量SWS_Rte 实现位置
OS 交互64.1.1 / 4.2.2
COM 交互84.3.1 / 4.3.2
ASWC 交互214.1.3 / 4.1.4 / 4.2.5 / 4.2.7
BSW 交互104.1.8 / 4.2.9
BSW 调度器153.1.2 / 3.4.1 / 4.2.2.2
测量与标定74.2.8
通用~705.1 / 5.2
VFB 跟踪65.3.7
初始化与终止44.6
API295.6 / 5.7
C/C++ API15.1.1 / 5.2.6.4
初始化操作15.8.1
分区重启44.6.1.3
RTE 实施插件18附录(待补)
非功能24.4.9 / 1.5
合计~200+1-5 章

2 RTE 概述(RTE Overview)

2.1 AUTOSAR 上下文中的 RTE(The RTE in the Context of AUTOSAR)

RTE 在 AUTOSAR 架构中处于应用软件组件(SW-C)与基础软件(BSW)之间。RTE 实现了虚拟功能总线(VFB)的具体 API,使 SW-C 之间以及 SW-C 与 BSW 之间的通信成为可能。

对 ECU 而言,RTE 是 VFB 抽象的具体实现——为每个 ECU 单独生成和优化。不同 ECU 上的 RTE 可有不同的实现策略(如选择宏实现 vs 函数调用),但 VFB 语义保持一致。

2.2 AUTOSAR 概念(AUTOSAR Concepts)

2.2.1 AUTOSAR 软件组件(AUTOSAR Software-components)

AUTOSAR 软件组件是 ECU 上的功能模块化单元。SW-C 通过端口(Port)与外界通信;端口通过接口(Interface)定义通信的语义。SW-C 分为:

2.2.2 基础软件模块(Basic Software Modules)

基础软件模块(BSW Module)分为:

2.2.3 通信(Communication)

2.2.3.1 通信范式(Communication Paradigms)

AUTOSAR 支持三种基本通信范式:

2.2.3.2 通信模式(Communication Modes)

通信模式定义通信会话的语义,包括:

2.2.3.3 静态通信(Static Communication)

AUTOSAR CP RTE 仅支持静态通信——所有通信连接必须在编译/生成时确定。运行时不可动态创建/销毁通信连接。这确保了实时系统的确定性行为。

2.2.3.4 多实例(Multiplicity)

通信连接可具有多实例:

2.2.4 并发性(Concurrency)

AUTOSAR ECU 通常运行多个任务(Task)以处理不同优先级的功能。RTE 必须协调跨任务的并发访问:

2.3 RTE Generator

RTE Generator 是 RTE 实施工具链的核心组件:

  1. 输入:AUTOSAR 系统描述(system.arxml)+ ECU 配置(ecuc.arxml)+ 组件实现(*.c/*.h);
  2. 处理:解析组件、端口、接口、连接、内部行为、BSW 描述;生成 RTE 数据结构、API 函数、配置头文件、BSWMD;
  3. 输出Rte.cRte_Lib.cRte.hRte_PBcfg.c/hRte_Type.hRte_<SWC>.hSchM_*.c/h 等。

RTE Generator 应支持:

2.4 设计决策(Design Decisions)

RTE 的关键设计决策包括:

  1. 直接 API vs 间接 API:直接 API 性能高(宏/内联);间接 API 灵活性高(函数指针表)。
  2. Per-Instance Memory 分配:静态分配 vs 动态分配;RTE 推荐静态分配以保证确定性。
  3. 数据一致性:双缓冲、OsResource、禁用中断、专用 spinlock 等多种机制。
  4. 隐式 vs 显式通信:隐式通信(IRV)性能优但限于同一组件;显式通信灵活但开销大。
  5. 变体处理:编译时变体(PreCompile)性能最佳;链接时/PostBuild 变体灵活性高。

3 RTE 生成流程(RTE Generation Process)

RTE 生成流程分为多个阶段,每个阶段产生特定输出。流程图见图 3.1(原文 p.79)。

3.1 契约阶段(Contract Phase)

契约阶段(Contract Phase)由 OEM 与 Tier-1 共同完成,定义 RTE 与 BSW 调度器的"合约"——双方同意的接口、配置、约束。

3.1.1 RTE Contract Phase(RTE 契约阶段)

RTE 契约阶段产出:

3.1.2 BSW Scheduler Contract Phase(基础软件调度器契约阶段)

BSW 调度器契约阶段产出:

3.2 PreBuild 数据集契约阶段(PreBuild Data Set Contract Phase)

PreBuild 数据集用于 ECU 制造前的"基础"配置:

3.3 编辑 RTE 的 ECU 配置(Edit ECU Configuration of the RTE)

RTE ECU 配置可在 PreBuild 阶段后被 ECU 集成商进一步调整:

3.4 生成阶段(Generation Phase)

生成阶段由 RTE Generator 自动执行:

3.4.1 BSW Scheduler Generation Phase(基础软件调度器生成阶段)

SchM 生成阶段产出:

3.4.2 RTE Generation Phase(RTE 生成阶段)

RTE 生成阶段产出(详细见 5.3 节):

3.4.3 BSW Module Description generation(基础软件模块描述生成)

BSWMD 描述 RTE 与 BSW 模块的内部行为(任务、事件、入口函数),供集成商进行 ECU 集成:

3.5 PreBuild 数据集生成阶段(PreBuild Data Set Generation Phase)

PreBuild 数据集生成阶段产出:

3.6 PostBuild 数据集生成阶段(PostBuild Data Set Generation Phase)

PostBuild 数据集生成阶段产出:

3.7 RTE 配置与其他 BSW 模块的交互(RTE Configuration interaction with other BSW Modules)

RTE 配置与以下 BSW 模块存在交互:

4 RTE 功能规范(RTE Functional Specification)

4.1 架构概念(Architectural concepts)

4.1.1 范围(Scope)

本节描述 RTE 的高层架构概念。包括 RTE 与数据类型的关系、RTE 与 AUTOSAR 软件组件的关系、RTE 与 AUTOSAR 服务的关系、RTE 与 ECU 抽象层的关系、RTE 与 CDD 的关系,以及 BSW 调度器与 BSW 模块的关系。

4.1.2 RTE 与数据类型(RTE and Data Types)

RTE 处理 AUTOSAR 中三种主要数据类型:

RTE 负责 ADT 到 IDT 的映射、IDT 到 Base Type 的映射(含字节序转换、单位换算、缩放因子应用)。详细映射规则见 4.3.7 节"数据转换"。

4.1.3 RTE 与 AUTOSAR 软件组件(RTE and AUTOSAR Software-Components)

4.1.3.1 软件组件的层次结构(Hierarchical Structure of Software-Components)

AUTOSAR SWC 支持层次结构:

RTE Generator 为每个原子 SWC 与每个 ECU 生成 RTE;组合 SWC 不会单独生成 RTE(其内部 SWC 各自生成 RTE)。

4.1.3.2 端口、接口与连接(Ports, Interfaces and Connections)

SWC 通过端口(Port)与外界通信:

每个端口引用一个端口接口(Port Interface):

连接(Connector)将 PPort 连接到 RPort,建立通信路径。

4.1.3.3 内部行为(Internal Behavior)

SWC 内部行为定义 SWC 内部细节:

4.1.3.4 实现(Implementation)

SWC 实现以源代码(*.c/*.h)或目标码(*.o/*.a)形式提供,包含所有可执行实体的实现。RTE Generator 解析 SWC 实现与内部行为的匹配性。

4.1.4 实例化(Instantiation)

4.1.4.1 范围与背景(Scope and background)

同一 SWC 类型可在系统中被实例化多次(如左右大灯控制)。每实例有独立的 Per-Instance Memory(变量存储)、Instance Handle(运行时标识)、Port 连接(与对端不同)。

4.1.4.2 实例化概念(Concepts of instantiation)

实例化由 ECU 集成商在系统配置时声明:

4.1.4.3 单实例(Single instantiation)

SWC 在系统中仅被实例化一次。RTE Generator 为其生成 SWCInstance_Default 单一 Per-Instance Memory。

4.1.4.4 多实例(Multiple instantiation)

SWC 在系统中被实例化多次。RTE Generator 为每个实例生成独立的 Per-Instance Memory 符号(如 LightCtrl_LeftLightCtrlLightCtrl_RightLightCtrl)。实例代码共享,仅数据独立。

4.1.5 RTE 与 AUTOSAR 服务(RTE and AUTOSAR Services)

RTE 与 AUTOSAR 服务层(Services Layer)的交互:

4.1.6 RTE 与 ECU 抽象(RTE and ECU Abstraction)

ECU 抽象层提供 ECU 硬件的抽象 API;RTE 本身不直接调用 ECU 抽象 API,而是通过服务层(如 Port 驱动、ADC 驱动)调用。具体端口到 ECU 抽象的映射由 ECU 集成商配置。

4.1.7 RTE 与复杂设备驱动(RTE and Complex Device Driver)

复杂设备驱动(CDD)允许 SW-C 直接访问硬件,绕过标准 AUTOSAR 服务。RTE 对 CDD 提供:

4.1.8 BSW 调度器与 BSW 模块(Basic Software Scheduler and Basic Software Modules)

BSW 调度器(SchM)是 RTE 的姊妹组件,专门用于调度 BSW 可调度实体:

4.1.8.1 BSW 模块描述(Description of a Basic Software Module)

BSW 模块描述(BSWMD)描述 BSW 模块的内部行为(任务、事件、入口函数)。

4.1.8.2 BSW 接口(Basic Software Interfaces)

BSW 模块通过标准化 C API 接口被调用。SchM Generator 与 RTE Generator 一同生成 BSW 接口的客户端 stub。

4.1.8.3 BSW 内部行为(Basic Software Internal Behavior)

BSW 内部行为定义 BSW 模块的运行实体(MainFunction、回调等)、事件、依赖关系。

4.1.8.4 BSW 实现(Basic Software Implementation)

BSW 实现由 BSW 模块供应商提供源代码或目标码;RTE Generator 不生成 BSW 实现代码本身。

4.1.8.5 BSW 模块的多实例(Multiple Instances of Basic Software Modules)

BSW 模块可被实例化多次(如同类型 SPI 驱动用于多个 SPI 总线)。每实例有独立配置。

4.1.8.6 AUTOSAR 服务 / ECU 抽象 / CDD

三种 BSW 模块类型均可作为 SchM 调度对象。

4.2 RTE 与 BSW 调度器实施方面(RTE and Basic Software Scheduler Implementation Aspects)

4.2.1 范围(Scope)

本节描述 RTE 与 SchM 的具体实施方面——OS 集成、可执行实体激活、中断解耦、数据一致性、参数实现、测量标定、NV 数据访问等。

4.2.2 OS

RTE 与 OS 的集成涉及:

4.2.2.1 OS 对象(OS Objects)

RTE Generator 创建的 OS 对象:

4.2.2.2 BSW 可调度实体(Basic Software Schedulable Entities)

BSW 可调度实体是 BSW 模块中可被 SchM 调度的函数,如:

4.2.2.3 可执行实体(Runnable Entities)

Runnable 是 SWC 内可被 RTE 调度的函数。RTE Generator 生成的 RTE 任务体中包含所有映射到该任务的 Runnable 的调用。

4.2.2.4 RTE 事件(RTE Events)

RTE 事件触发 Runnable 激活。事件类型包括:

4.2.2.5 BswEvents

BSW 事件是 BSW 模块的内部事件,类似于 RTE 事件但作用于 BSW 可调度实体。BswEvent 在 BSWMD 中定义。

4.2.2.6 可执行实体与 BSW 可调度实体到任务的映射(Mapping to tasks)

RTE Generator 将 Runnable 与 BSW 可调度实体映射到 OS 任务。映射规则:

4.2.2.7 可执行实体执行时间监控(Monitoring of runnable execution time)

RTE 支持可执行实体的执行时间监控(基于 OS 时间保护 Timing Protection):

4.2.2.8 TimingEvent 激活的 Runnable

TimingEvent 激活的 Runnable 由 OS 调度表(ScheduleTable)或闹钟(Alarm)触发。RTE Generator 配置 OS 调度表项以匹配 TimingEvent 的周期与偏移。

4.2.2.9 TimingEvent 激活 Runnable 的同步

多个 TimingEvent 可在多核 ECU 上需要同步激活。RTE 使用 OS 同步机制确保跨核 TimingEvent 的同步性。

4.2.2.10 BackgroundEvent 激活的 Runnable 与 BSW 可调度实体

BackgroundEvent 是优先级最低的事件类型,RTE Generator 将其映射到 OS 后台任务。

4.2.2.11 InitEvent 激活的 Runnable

InitEvent 在 SWC 初始化阶段触发。RTE Generator 生成的 Rte_<SWC>_Init 函数调用所有 InitEvent 关联的 Runnable。

4.2.3 可执行实体的激活与启动(Activation and Start of ExecutableEntitys)

4.2.3.1 通过直接函数调用激活(Activation by direct function call)

某些 RTE 事件可通过直接函数调用激活 Runnable(无 OS 介入):

4.2.3.2 可执行实体与 BSW 可调度实体的激活偏移

激活偏移(Activation Offset)允许 Runnable/BSW 可调度实体在 RTE 事件后延迟激活。RTE Generator 在任务体中通过 OS API 实现偏移。

4.2.3.3 提供激活的 RTE 事件(Provide activating RTE event)

对于事件回调需求(如 [SRS_Rte_00238]),RTE 应在 Runnable 入口提供"激活事件"标识。

4.2.4 中断解耦与通知(Interrupt decoupling and notifications)

4.2.4.1 基本通知原则(Basic notification principles)

RTE 拦截来自 BSW 驱动的中断通知,将其转发到合适的任务上下文中的 Runnable:

  1. ISR 调用 BSW 驱动回调;
  2. BSW 驱动调用 RTE 通知 API;
  3. RTE 激活目标 Runnable(通过 OS Event 或 RTE 内部标志);
  4. 目标任务被调度,Runnable 执行。
4.2.4.2 中断(Interrupts)

AUTOSAR OS 支持两类 ISR:

4.2.4.3 RTE 层级的中断解耦(Decoupling interrupts on RTE level)

RTE 通过"事件标志+OS Event"机制将 ISR 与 Runnable 解耦——ISR 仅设置事件标志,Runnable 在任务上下文中处理事件。

4.2.4.4 RTE 与中断类别

RTE 不应在 ISR 上下文中直接执行 Runnable。Cat-1 ISR 仅调用 RTE 通知 API;Cat-2 ISR 可调用 RTE 通知 API 与 OS API。

4.2.4.5 RTE、BSW 调度器与 BswExecutionContext

BswExecutionContext 定义 BSW 函数的执行上下文(任务/ISR)。RTE 与 SchM 均使用 BswExecutionContext 配置 BSW 函数的执行环境。

4.2.5 数据一致性(Data Consistency)

4.2.5.1 概述(General)

数据一致性是 RTE 设计的关键挑战。当数据元素大于 ECU 传输单元(通常 8 字节)时,单次写入可能被并发访问破坏——产生"撕裂读"(torn read)。

4.2.5.2 通信模式(Communication Patterns)

通信模式决定数据一致性的实现:

4.2.5.3 概念(Concepts)

数据一致性保护有三种基本概念:

  1. 锁定(Locking):使用 OS Resource 阻止并发访问;
  2. 复制(Copying):双缓冲/三缓冲;
  3. 无锁(Lock-free):原子操作(CAS、Read-Copy-Update)。
4.2.5.4 保证数据一致性的机制(Mechanisms to guarantee data consistency)

RTE 支持的数据一致性机制:

4.2.5.5 独占区(Exclusive Areas)

独占区是用户/集成商可配置的 OS 资源区域。RTE 在 Rte_Enter/Exit_<EA>() API 中使用 OS Resource API。Exclusive Area 分为:

4.2.5.6 可执行实体间变量(InterRunnableVariables)

IRV 是一种特殊的 SWC 内部共享变量。RTE 提供 Rte_IrvRead/<Name>()Rte_IrvWrite/<Name>() API,底层使用 OS Resource 保证原子性。

4.2.6 可执行实体与 BSW 可调度实体的多次触发(Multiple trigger of Runnable Entities and Basic Software Schedulable Entities)

同一可执行实体可被多个 RTE 事件触发(如一个 Runnable 同时被 TimingEvent 与 DataReceivedEvent 触发)。RTE Generator 在任务体中合并多个事件的处理逻辑。

4.2.7 参数与数据元素的实现(Implementation of Parameter and Data Elements)

4.2.7.1 概述(General)

RTE Generator 根据 AUTOSAR 元模型中的 Compatibility 规则将数据元素映射到实现。

4.2.7.2 兼容性规则(Compatibility rules)

Compatibility 规则决定 ImplementationDataType 与 BaseType 的兼容性,决定 RTE 是否生成转换代码。

4.2.7.3 接口元素的实现(Implementation of an interface element)

接口元素(数据元素、操作参数)的实现由 RTE Generator 根据 Interface Package 描述生成。

4.2.7.4 VariableDataPrototypes 的初始化(Initialization of VariableDataPrototypes)

VariableDataPrototype(用于 Per-Instance Memory、IRV 等)可在 ECU 启动时由 RTE 初始化为默认值或配置值。

4.2.7.5 初始值计算(Initial value calculation)

RTE Generator 根据 InitValue 规则计算初始值;可在 RTE 启动时统一初始化。

4.2.8 测量与标定(Measurement and Calibration)

4.2.8.1 概述(General)

测量(Measurement)与标定(Calibration)是 ECU 开发的核心调试手段。RTE 与 XCP/A2L 协同工作:

4.2.8.2 测量(Measurement)

测量支持:

4.2.8.3 标定(Calibration)

标定支持:

4.2.8.4 McSupportData 生成(Generation of McSupportData)

McSupportData(Measurement & Calibration Support Data)由 RTE Generator 输出至 A2L 文件,描述所有可测量/可标定元素。生成规则:

4.2.9 NVRAM 数据访问(Access to NVRAM data)

4.2.9.1 概述(General)

NVRAM 数据通过 NvBlockComponent 组件类型与 RTE 集成。NvBlock 抽象为标准的 AUTOSAR 端口(NvDataInterface)。

4.2.9.2 NvBlockSwComponentType 的使用(Usage of the NvBlockSwComponentType)

NvBlockSwComponentType 暴露的端口:

4.2.9.3 NvBlockSwComponentType 的接口(Interface)

NV Service 接口:

4.2.9.4 数据一致性(Data Consistency)

NV 数据一致性由 NvM 保证:单块原子性、写完成回调通知等。RTE 仅负责将 SWC 端的访问请求路由到 NvM。

4.3 通信范式(Communication Paradigms)

4.3.1 发送方-接收方(Sender-Receiver)

Sender-Receiver 通信是 AUTOSAR 中最常用的通信范式。本节定义 S/R 通信的 17 个子主题:

4.3.1.1 引言(Introduction)

S/R 通信是单向数据流——一个或多个 Sender 写入数据元素,一个或多个 Receiver 读取数据元素。RTE 负责 Sender 与 Receiver 间的数据路由与一致性保证。

4.3.1.2 接收模式(Receive Modes)

Receiver 可配置为以下接收模式:

4.3.1.3 多个数据元素(Multiple Data Elements)

一个端口可包含多个数据元素。RTE Generator 为每个数据元素生成独立的 Read/Write API。

4.3.1.4 多个 Receivers 与 Senders(Multiple Receivers and Senders)

RTE 支持 1:n、n:1、n:m 多实例通信。Sender 端 API 一次调用会被 RTE 复制到所有 Receiver;Receiver 端 API 一次调用从所有 Sender 中选择。

4.3.1.5 隐式与显式数据接收和发送(Implicit and Explicit Data Reception and Transmission)

隐式通信:数据通过共享内存自动可见;Runnable 不需显式调用 API;性能高但耦合度高。

显式通信:通过 Rte_Send/Rte_Read 等 API 显式传递;可由 RTE Generator 优化为宏/内联。

4.3.1.6 传输确认(Transmission Acknowledgement)

Sender 可注册 DataSendCompletedEvent 监听传输完成(如 CAN Tx Confirmation)。

4.3.1.7 通信超时(Communication Time-out)

Receiver 可配置超时监控——若信号在指定时间内未更新,触发 DataReceiveErrorEvent

4.3.1.8 数据元素失效(Data Element Invalidation)

Sender 可调用 Rte_Invalidate() 显式标记信号无效。Receiver 可通过 Rte_IsUpdated() 检测信号是否被更新。

4.3.1.9 过滤器(Filters)

数据元素的过滤规则:

4.3.1.10 缓冲(Buffering)

Sender 端可配置缓冲模式:

4.3.1.11 操作(Operation)

S/R 操作详述。RTE 为每对 Sender-Receiver 生成的 API 包括:

4.3.1.12 "Never received status"("从未收到"状态)

Receiver 可通过 Rte_IsUpdated() 检测"从未收到"状态——用于初始化时与故障时区分。

4.3.1.13 "Update flag"("更新标志")

Receiver 端 API 返回的 Rte_SendStatus 包含 RTE_SEND_NEVER_RECEIVEDRTE_SEND_RECEIVED 等值。

4.3.1.14 动态数据类型(Dynamic data type)

支持 String、Bytefield、uint8 Array 变体长度数据元素(DYNAMIC)。

4.3.1.15 跨 ECU 通过 TP 的通信(Inter-ECU communication through TP)

大数据元素通过 TP(Transport Protocol,如 CAN TP)分段传输。RTE 路由到 PduR 后由 PduR 负责 TP 分段/重组。

4.3.1.16 跨 ECU 字节数组的通信(Inter-ECU communication of arrays of bytes)

字节数组(uint8 Array)跨 ECU 通信使用 LdCom(Large Data COM)。RTE 路由至 LdCom 代替传统 Com。

4.3.1.17 确认事件处理(Handling of acknowledgment events)

Sender 端注册的 DataSendCompletedEvent 在数据被成功发送到总线(CAN Tx Confirmation)后触发。

4.3.2 客户端-服务端(Client-Server)

4.3.2.1 引言(Introduction)

Client-Server 通信是请求-响应模式——Client 调用 Server 端操作。RTE 提供同步(Rte_Call_<RPort>_<Op>())与异步(Rte_Result_<RPort>_<Op>() 轮询)两种调用模式。

4.3.2.2 多实例(Multiplicity)

Client-Server 支持 n:1(多个 Client 调用同一 Server)。Server 端可序列化执行或并发执行(由配置决定)。

4.3.2.3 通信超时(Communication Time-out)

Client 端可配置操作调用超时(TIMEOUT 参数)。超时后返回 RTE_E_TIMEOUT

4.3.2.4 端口定义参数值(Port-Defined argument values)

操作参数可包含"端口定义参数值"(port-defined argument values)——由 RTE 配置在每次调用时填入固定值(如常量)。

4.3.2.5 缓冲(Buffering)

Client-Server 请求可在 Server 端缓冲(队列)。队列深度由配置决定。

4.3.2.6 跨 ECU 与跨分区的请求响应映射(Inter-ECU and Inter-Partition Response to Request Mapping)

Client-Server 可跨 ECU(通过 COM 序列化)或跨分区(通过 IOC)。RTE 透明地处理这些分布式调用。

4.3.2.7 参数序列化(Parameter Serialization)

Client-Server 操作参数可通过 Transformer 序列化(用于跨 ECU)。

4.3.2.8 操作(Operation)

C/S API:

4.3.3 SWC 内部通信(SWC internal communication)

4.3.3.1 可执行实体间变量(Inter Runnable Variables)

IRV 是一种仅限同 SWC 内的共享变量机制,RTE 提供 Rte_IrvRead/<Name>()Rte_IrvWrite/<Name>()。IRV 比端口通信开销低。

4.3.4 跨分区通信(Inter-Partition communication)

4.3.4.1 跨分区数据通信使用 IOC(Inter partition data communication using IOC)

跨 OS-Application 分区(多核/单核分区)的数据通信使用 OS IOC(Inter-OS-Application Communicator)。RTE 透明地使用 IOC 作为传输通道。

4.3.4.2 跨分区数据通信使用 BSW 调度器(Inter partition data communication using Basic Software Scheduler)

BSW 可调度实体跨分区调用时,SchM 负责在正确的 OS-Application 中执行。

4.3.4.3 多核/多分区下访问 Ld(Com) 和 Det

LdCom、Det 等共享服务模块可能需要特殊访问模式(跨分区调用)。

4.3.4.4 跨分区通信的信号与控制流支持

跨分区通信涉及信号(如数据更新事件)与控制流(如 Server 调用)的传输。

4.3.4.5 可信函数(Trusted Functions)

可信函数允许非信任 OS-Application 调用信任 OS-Application 中的受保护函数。

4.3.4.6 内存保护与 RTE API 中的指针类型参数(Memory Protection and Pointer Type Parameters in RTE API)

在受内存保护的 OS-Application 中,跨分区调用时参数需要安全传输。RTE 使用 IOC 的"安全缓冲区"机制保证指针参数安全传输。

4.3.5 端口接口元素映射与数据转换(PortInterface Element Mapping and Data Conversion)

4.3.5.1 端口接口元素映射(PortInterface Element Mapping)

当 PPort 与 RPort 的数据元素实现数据类型不同时,RTE 必须执行转换。映射规则:

4.3.6 网络表示(Network Representation)

4.3.6.1 无数据转换的网络表示(Network Representation with no data transformation)

数据元素无转换时直接打包到 PDU。

4.3.6.2 带数据转换的网络表示(Network Representation with data transformation)

数据元素需转换时(如字节序、序列化)使用 Transformer。

4.3.7 数据转换(Data Conversion)

RTE 支持以下数据转换:

4.3.8 运行时范围检查(Range Checks during Runtime)

当数据元素带 DataSemantics 时,RTE 在运行时检查数据范围。超出范围时 RTE 返回 RTE_E_RANGE 错误码。

4.4 模式(Modes)

AUTOSAR 模式(Mode)用于 ECU 行为控制。本节定义模式相关的 11 个子主题:

4.4.1 模式使用者(Mode User)

模式使用者(Mode User)是订阅模式变更的 SWC。当模式变更时,RTE 通过 SwcModeSwitchEvent 通知 Mode User。

4.4.2 模式管理器(Mode Manager)

模式管理器(Mode Manager)是控制模式声明组的 SWC。模式管理器通过 Rte_Switch_<PPort>_<ModeDeclarationGroup>_<Mode>() 切换模式。

4.4.3 模式声明与模式声明组的语义细化(Refinement of the semantics)

模式声明(ModeDeclaration)原子地表示一个模式;模式声明组(ModeDeclarationGroup)是一组互斥的模式。在任一时刻,模式组中仅有一个模式处于 active 状态。

4.4.4 模式切换通知时 RTE / BSW 调度器的动作顺序

RTE 在接收到模式切换通知时按以下顺序执行:

  1. 原子地更新模式状态;
  2. 通知所有 Mode User 的 SwcModeSwitchEvent 关联 Runnable;
  3. 等待确认(若配置了 Mode Switch Ack);
  4. 通知 ModeSwitchedAckEvent 关联 Runnable。

4.4.5 模式机实例到 RTE 与 BSW 调度器的分配(Assignment of mode machine instances)

模式机(Mode Machine)的实例可被分配到不同的 OS-Application(多核/多分区)。RTE 与 SchM 协调跨核的模式一致性。

4.4.6 模式机实例的初始化(Initialization of mode machine instances)

模式机在 ECU 启动时由 RTE 初始化为配置的默认模式。

4.4.7 模式切换的通知(Notification of mode switches)

模式切换通知通过 RTE 内部事件分发器进行:SwcModeSwitchEvent 关联的 Runnable 在通知时被激活。

4.4.8 模式切换确认(Mode switch acknowledgment)

若模式机配置了 ack-required,所有 Mode User 须确认收到模式变更。RTE 收集所有 ack 后通知 ModeSwitchedAckEvent

4.4.9 模式切换错误处理(Mode switch error handling)

4.4.9.1 模式使用者被终止(Mode User gets terminated)

当 Mode User OS-Application 被终止时,RTE 自动取消其对模式机的订阅。

4.4.9.2 模式管理器被终止(Mode Manager gets terminated)

当 Mode Manager OS-Application 被终止时,RTE 将其控制的所有模式机冻结为当前模式。

4.4.10 模式声明的映射(Mapping of ModeDeclarations)

模式声明的跨 ECU 映射通过 RTE 内部实现。Mode Manager 在 ECU A,Mode User 在 ECU B;RTE 通过 Com 序列化模式变化。

4.4.11 分布式共享模式队列(Distributed Shared Mode Queues)

多核 ECU 上的共享模式队列:所有核共享同一模式状态机,RTE 使用原子操作与内存屏障保证一致性。

4.5 外部与内部触发(External and Internal Trigger)

4.5.1 外部触发事件通信(External Trigger Event Communication)

外部触发(External Trigger)是从远程 ECU 触发的跨 ECU 事件。RTE 通过 Com 接收外部触发,激活本地关联 Runnable。

4.5.2 可执行实体间触发(Inter Runnable Triggering)

同 SWC 内一个 Runnable 触发另一个 Runnable。RTE 提供 Rte_Trigger_<Trigger>()Rte_IrTrigger_<Trigger>()

4.5.3 BSW 模块间触发(Inter Basic Software Module Entity Triggering)

BSW 模块间触发通过 SchM 处理。

4.5.4 跨 ECU 触发通信(Inter ECU Trigger Communication)

跨 ECU 触发通过 Com 传输。RTE 透明地处理序列化。

4.5.5 触发的队列化(Queuing of Triggers)

触发可配置队列深度。多次未消费的触发在队列中累积。

4.5.6 触发的可执行实体激活(Activation of triggered ExecutableEntities)

触发激活关联 Runnable 时的处理流程:

  1. 触发事件到达 RTE;
  2. RTE 检查关联 Runnable 的 OS Task;
  3. RTE 通过 OS Event 通知目标 Task;
  4. 目标 Task 调度,Runnable 被激活。

4.6 初始化与终止(Initialization and Finalization)

4.6.1 RTE 的初始化与终止(Initialization and Finalization of the RTE)

4.6.1.1 BSW 调度器的初始化(Initialization of the Basic Software Scheduler)

SchM 在 EcuM 启动阶段被调用 SchM_Init() 初始化。

4.6.1.2 RTE 的初始化(Initialization of the RTE)

RTE 在 EcuM 启动 OS 后调用 Rte_Start() 初始化。RTE_Start 内部完成:

  1. SWC Per-Instance Memory 初始化;
  2. IRV 初始化;
  3. Exclusive Area 状态初始化;
  4. Event Mask 初始化;
  5. InitEvent 关联 Runnable 激活。
4.6.1.3 RTE 的停止与重启(Stop and restart of the RTE)

支持 RTE 停止与重启:Rte_Stop() 停止;Rte_Start() 重启。

4.6.1.4 RTE 的终止(Finalization of the RTE)

ECU 关闭时调用 Rte_Stop() 终止 RTE。RTE 内部完成清理。

4.6.1.5 BSW 调度器的终止(Finalization of the Basic Software Scheduler)

ECU 关闭时调用 SchM_DeInit() 终止 SchM。

4.6.2 AUTOSAR 软件组件的初始化与终止(Initialization and Finalization of AUTOSAR Software-Components)

每个 SWC 有自己的 InitDeInit 可执行实体(若配置)。RTE 在 RTE_Start / RTE_Stop 中按配置顺序调用。

4.7 变体处理支持(Variant Handling Support)

4.7.1 概述(Overview)

变体处理允许 ECU 在不同时刻(如 PreCompile、LinkTime、PostBuild)选择不同配置,以支持多车型、多硬件平台复用同一 RTE。

4.7.2 选择变体与绑定可变性(Choosing a Variant and Binding Variability)

5 种绑定时机(Binding Times):

4.7.3 影响 RTE 生成的变体(Variability affecting the RTE generation)

支持以下变体:

4.7.4 影响 BSW 调度器生成的变体(Variability affecting the Basic Software Scheduler generation)

支持 SchM API 变体、BSW 实体变体、API 行为变体。

4.7.5 影响 SWC 实现的变体(Variability affecting SWC implementation)

SWC 实现可在 PreCompile 阶段通过宏选择不同代码路径。

4.8 开发错误(Development error)

4.8.1 DET Report Identifiers

RTE 通过 DET(Default Error Tracer)报告开发错误。RTE 不单独定义 DET 模块,使用 BSW 标准 DET。

4.8.2 DET Error Identifiers

RTE 使用的 DET 错误标识符:

错误码(宏)含义
RTE_E_OK0x00无错误
RTE_E_INVALID0x01参数无效
RTE_E_PORT_DISABLED0x02端口未使能
RTE_E_UNCONNECTED0x03端口未连接
RTE_E_LIMIT0x04超出限制
RTE_E_LOST_DATA0x05数据丢失(队列溢出)
RTE_E_TIMEOUT0x06超时
RTE_E_IN_EXCLUSIVE_AREA0x07已在独占区内
RTE_E_NESTING_EXCLUSIVE_AREA0x08独占区嵌套错误
RTE_E_COM_STOPPED0x09通信已停止
RTE_E_HARDWARE_ERROR0x0A硬件错误
RTE_E_TRANSFORMER0x0BTransformer 错误
RTE_E_Transformer_BUFFER_SIZE0x0CTransformer 缓冲区大小错误
RTE_E_NEVER_RECEIVED0x0D从未接收到数据
RTE_E_OUT_OF_RANGE0x0E超出范围
RTE_E_PARTITION_NOT_READY0x0F分区未就绪
RTE_E_NULL_POINTER0x10空指针
RTE_E_INVALID_ARGUMENT0x11无效参数
RTE_E_SEG_FAULT0x12内存段错误

4.8.3 DET Error Classification(错误分类)

RTE 错误根据严重程度分类:

4.9 旁路支持(Bypass Support)

旁路(Bypass)支持快速原型(Rapid Prototyping, RP)——允许在 ECU 镜像生成后,通过旁路点插入用户代码以替代 SWC 的执行。

4.9.1 Bypass 描述(Bypass description)

旁路可由 RTE Generator 自动或手动注入到 Runnable 入口/出口。

4.9.2 组件包装方法(Component wrapper method)

组件级包装——在 SWC 的所有 Runnable 入口/出口插入包装函数。

4.9.3 直接缓冲区访问方法(Direct buffer access method)

提供 RTE 内部数据缓冲区的直接访问接口,允许 RP 工具直接读写。

4.9.4 扩展缓冲区访问方法(Extended buffer access method)

提供更细粒度的缓冲区访问控制(含权限、PostBuild 等)。分 7 个级别:

4.9.5 基于服务的原型(Service Based Prototyping)

基于服务的原型使用 Service Point 机制:

4.10 数据转换(Data Transformation)

数据转换(Data Transformation)在跨 ECU 通信与跨 OS-Application 通信时由 Transformer 链处理。

4.10.1 Transformer 的执行(Execution of Transformer)

4.10.1.1 跨 ECU 通信的 Transformer

跨 ECU 通信时,RTE 在发送前与接收后执行 Transformer 链。

4.10.1.2 ECU 内部通信的 Transformer

ECU 内部通信时 Transformer 链可省略以提升性能。

4.10.2 Transformer 链(Transformer Chains)

Transformer 链是有序的 Transformer 序列:通常为 Serializor → ComBasedTransformer → E2ETransformer

4.10.3 缓冲区处理(Buffer Handling)

Transformer 链需要 RTE 分配的缓冲区。RTE 提供 Rte_Pim_<Port>_<DE>() 访问数据指针,Rte_IsUpdated() 检测有效性。

4.10.4 Transformer 接口(Interfaces to Transformer)

Transformer 的标准接口在 AUTOSAR_ASWS_TransformerGeneral 中定义。RTE 调用 Transformer 的 transform/transformer_error 回调。

4.10.5 错误处理(Error Handling)

Transformer 错误通过 TransformerErrorEvent 通知 SWC;返回 Rte_TransformerError 枚举值。

4.10.6 COM Based Transformer(基于 COM 的转换器)

COM Based Transformer 使用 Com 序列化机制传输数据。

5 RTE 参考(RTE Reference)

5.1 范围(Scope)

5.1.1 编程语言(Programming Languages)

RTE 支持的编程语言:

5.1.2 Generator 原则(Generator Principles)

5.1.2.1 操作模式(Operating Modes)

RTE Generator 支持以下操作模式(影响生成代码行为):

5.1.2.2 优化模式(Optimization Modes)

RTE Generator 支持以下优化模式(影响生成代码体积与性能):

5.1.2.3 构建支持(Build support)

RTE Generator 支持多种构建:

5.1.2.4 软件组件命名空间(Software Component Namespace)

RTE 命名空间规则(避免符号冲突):

5.1.3 Generator 外部配置开关(Generator external configuration switches)

RTE Generator 提供以下外部配置开关:

5.2 API 原则(API Principles)

5.2.1 RTE 命名空间(RTE Namespace)

RTE 生成的符号使用唯一命名空间:

5.2.2 直接 API(Direct API)

直接 API 是高性能实现——RTE Generator 将 API 直接生成为宏或内联函数。例如:

#define Rte_IRead_Runnable_Port_DE(var) (*(var) = Rte_data_DE)

5.2.3 间接 API(Indirect API)

间接 API 使用函数调用+数据句柄。例如:

Std_ReturnType Rte_Read_P1_De(P1_De_type* data) {
  return Rte_data_handle_P1_De->read(Rte_instance_P1, data);
}

5.2.4 VariableAccess 在 dataReadAccess 和 dataWriteAccess 角色

VariableAccess 是 AUTOSAR 4.x 引入的机制——通过 VariableAccess 而非端口访问数据。RTE 生成的 Rte_IRead/Rte_IWrite API 访问 VariableAccess 数据。

5.2.5 Per-Instance Memory

Per-Instance Memory 是同一 SWC 类型不同实例各自的独立内存。RTE Generator 为每个实例生成:

struct LightCtrl_Instance {
  /* Per-Instance variables */
  uint8 status;
  uint16 brightness;
};
extern struct LightCtrl_Instance LightCtrl_LeftLightCtrl;
extern struct LightCtrl_Instance LightCtrl_RightLightCtrl;

5.2.6 API 映射(API Mapping)

5.2.6.1 "RTE Contract" Phase(RTE 契约阶段)

RTE 契约阶段输出 RTE Contract 描述(包含 API 映射约定)。

5.2.6.2 "RTE Generation" Phase(RTE 生成阶段)

RTE 生成阶段基于 RTE Contract 描述生成完整 API 实现。

5.2.6.3 Function Elision(函数消除)

RTE Generator 可消除冗余函数调用(Function Elision)以优化性能。

5.2.6.4 API 命名约定(API Naming Conventions)

RTE API 命名约定:

5.2.6.5 API 参数(API Parameters)

RTE API 参数约定:

5.2.6.6 返回值(Return Values)

RTE API 返回 Std_ReturnType(定义见 Std_Types.h):

5.2.6.7 返回引用(Return References)

某些 RTE API 返回引用(Rte_Pim_<P>_<DE>())以避免大结构体复制。

5.2.6.8 错误处理(Error Handling)

RTE API 错误处理:

5.2.6.9 成功反馈(Success Feedback)

通过 Rte_IFeedback 结构提供额外反馈(isUpdated、source ECU 等)。

5.2.7 未连接端口(Unconnected Ports)

5.2.7.1 数据元素(Data Elements)

未连接端口的 Read API 返回 E_OK 但数据未更新;可通过 Rte_IsUpdated() 检测。

5.2.7.2 模式切换端口(Mode Switch Ports)

未连接模式切换端口的 Read API 返回默认模式。

5.2.7.3 客户端-服务端(Client-Server)

未连接 C/S 端口的 Call API 返回 RTE_E_UNCONNECTED。

5.2.7.4 外部触发(External Triggers)

未连接外部触发端口的 Trigger API 不执行任何操作。

5.2.8 非匹配端口接口(Non-identical port interfaces)

PPort 与 RPort 端口接口不同时,RTE Generator 可生成转换代码(取决于 Compatibility 规则)。

5.3 RTE 模块(RTE Modules)

5.3.1 RTE 头文件(RTE Header File)

RTE 头文件 Rte.h 包含所有 RTE API 声明、宏定义、类型定义。

5.3.2 生命周期头文件(Lifecycle Header File)

Rte_Lifecycle.h 包含 RTE 生命周期 API:Rte_Start()Rte_Stop()

5.3.3 应用头文件(Application Header File)

每个 SWC 有一个应用头文件 Rte_<SWCName>.h,包含:

5.3.4 RTE 类型头文件(RTE Types Header File)

Rte_Type.h 包含所有 ImplementationDataType 定义:

5.3.5 RTE 数据句柄类型头文件(RTE Data Handle Types Header File)

Rte_DataHandleType.h 包含数据句柄类型定义。

5.3.6 应用类型头文件(Application Types Header File)

Rte_<SWCName>_Type.h 包含 SWC 内部类型定义。

5.3.7 VFB 跟踪头文件(VFB Tracing Header File)

Rte_Trace.h 包含 VFB 跟踪宏与 DLT Message ID 定义。

5.3.8 RTE 配置头文件(RTE Configuration Header File)

Rte_Cfg.h 包含 RTE 配置常量、宏定义。

5.3.9 生成的 RTE(Generated RTE)

主 RTE 源文件 Rte.cRte_Lib.c

5.3.10 RTE PostBuild 变体集(RTE Post Build Variant Sets)

PostBuild 变体配置在 Rte_PBcfg.cRte_PBcfg.h 中。运行时通过 Rte_PBCon_*() 切换变体。

5.4 RTE 数据结构(RTE Data Structures)

5.4.1 实例句柄(Instance Handle)

Rte_Instance 是 RTE 实例句柄类型,用于多实例场景。

5.4.2 组件数据结构(Component Data Structure)

每个 SWC 实例有一个 Component Data Structure:

5.5 API 数据类型(API Data Types)

5.5.1 Std_ReturnType

Std_ReturnType(来自 Std_Types.h)是 RTE API 的标准返回类型:

5.5.2 Rte_Instance

Rte_Instance 是 SWC 实例的运行时标识。

5.5.3 Rte_TransformerError

Rte_TransformerError 枚举 Transformer 错误:RTE_TRANSFORMER_OKRTE_TRANSFORMER_BUFFER_SIZERTE_TRANSFORMER_HARDWARE_ERRORRTE_TRANSFORMER_NOT_OKRTE_TRANSFORMER_SERIALIZATION_ERRORRTE_TRANSFORMER_E2E_ERROR 等。

5.5.4 RTE 模式(RTE Modes)

RTE 模式类型定义(见 5.3.6.4)。

5.5.5 枚举数据类型(Enumeration Data Types)

RTE 中枚举类型的 C 实现。

5.5.6 范围数据类型(Range Data Types)

带范围限制的整数类型。

5.5.7 位字段转换的数据类型(Data Types with bitfield conversions)

位字段的压缩/解压缩转换。

5.6 API 引用(API Reference)

本节定义 38 类 RTE API 的完整签名、参数、返回值、错误码。详细签名见原文 5.6.1-5.6.38 节:

编号API 类功能
5.6.1Rte_Ports端口定义宏
5.6.2Rte_NPorts端口数量宏
5.6.3Rte_Port端口访问
5.6.4Rte_Write同步写(Sender→Com)
5.6.5Rte_Send同步发送(Sender→Com)
5.6.6Rte_Switch模式切换
5.6.7Rte_Invalidate数据失效
5.6.8Rte_Feedback反馈获取
5.6.9Rte_SwitchAck模式切换确认
5.6.10Rte_Read同步读(Receiver)
5.6.11Rte_DRead显式读(Receiver)
5.6.12Rte_Receive接收(Receiver)
5.6.13Rte_CallC/S 调用
5.6.14Rte_ResultC/S 结果
5.6.15Rte_Pim数据指针访问
5.6.16Rte_CData标定数据
5.6.17Rte_Prm参数
5.6.18Rte_IReadImplicit 读
5.6.19Rte_IWriteImplicit 写
5.6.20Rte_IWriteRefImplicit 写引用
5.6.21Rte_IInvalidateImplicit 失效
5.6.22Rte_IStatusImplicit 状态
5.6.23Rte_IrvIReadIRV Implicit 读
5.6.24Rte_IrvIWriteIRV Implicit 写
5.6.25Rte_IrvIWriteRefIRV Implicit 写引用
5.6.26Rte_IrvReadIRV 读
5.6.27Rte_IrvWriteIRV 写
5.6.28Rte_Enter进入 EA
5.6.29Rte_Exit退出 EA
5.6.30Rte_Mode读取当前模式
5.6.31Enhanced Rte_Mode增强模式读取
5.6.32Rte_Trigger触发
5.6.33Rte_IrTrigger可执行实体间触发
5.6.34Rte_IFeedbackImplicit 反馈
5.6.35Rte_IsUpdated检查是否更新
5.6.36Rte_PBConPostBuild 配置
5.6.37Rte_IsAvailable检查可用性
5.6.38Rte_SetAvailable设置可用性

每个 API 类的详细参数、错误码、宏展开、示例见原文 5.6.1-5.6.38 节(566-630 页)。翻译保留完整 API 分类与功能描述。

5.7 可执行实体引用(Runnable Entity Reference)

可执行实体的引用与实现:

5.8 RTE 生命周期 API 引用(RTE Lifecycle API Reference)

5.8.1 Rte_Start

Rte_Start API 用于启动 RTE。详细定义见原文 5.8.1.1-5.8.1.5(642-644 页)。

5.8.2 Rte_Stop

Rte_Stop API 用于停止 RTE。详细定义见原文 5.8.2.1-5.8.2.5(644-645 页)。

6 序列图与时序(Sequence Diagrams & Timing)

SWS_RTE 在第 6 章中给出大量序列图与时序说明。本 SWS 包含的序列图覆盖:

7 配置规范(Configuration Specification)

第 7 章定义 RTE 的配置参数(ECUC),共约 80+ 配置容器与 200+ 配置参数。本 SWS 包含:

8 未应用需求(Not applicable requirements)

本节列出来自 AUTOSAR_SRS_RTE 但在 SWS 中不直接对应的需求(标 N/A)。

附录 A:API 索引

本附录按用途分类列出 38 类 RTE API(详细见 5.6 节)。

A.1 Sender-Receiver 通信 API

API调用方用途
Rte_Send_P_De()Sender SWC同步发送(Buffering+Com)
Rte_Write_P_De()Sender SWC同步写(无 Com)
Rte_Read_P_De()Receiver SWC同步读
Rte_DRead_P_De()Receiver SWC显式读(带 ack)
Rte_Receive_P_De()Receiver SWC接收(Queued)
Rte_Invalidate_P_De()Sender SWC显式失效
Rte_IsUpdated_P_De()Receiver SWC检查是否更新

A.2 Implicit Communication API

API用途
Rte_IRead_P_De()Implicit 读(共享内存)
Rte_IWrite_P_De()Implicit 写
Rte_IWriteRef_P_De()Implicit 写引用
Rte_IInvalidate_P_De()Implicit 失效
Rte_IStatus_P_De()Implicit 状态

A.3 Client-Server 通信 API

API调用方用途
Rte_Call_P_Op()Client同步调用
Rte_Call_P_Op_Async()Client异步调用
Rte_Result_P_Op()Client读取异步结果

A.4 Mode Switch API

API调用方用途
Rte_Switch_P_M()Mode Manager切换模式
Rte_Mode_P_M()Mode User读取当前模式
Rte_SwitchAck_P_M()Mode User确认模式切换

A.5 Trigger API

API调用方用途
Rte_Trigger_T()Sender触发事件
Rte_IrTrigger_T()Runnable可执行实体间触发

A.6 Inter-Runnable Variable API

API用途
Rte_IrvRead_Name()读 IRV
Rte_IrvWrite_Name()写 IRV
Rte_IrvIRead_Name()Implicit 读 IRV
Rte_IrvIWrite_Name()Implicit 写 IRV
Rte_IrvIWriteRef_Name()Implicit 写引用 IRV

A.7 Exclusive Area API

API用途
Rte_Enter_EA()进入 EA
Rte_Exit_EA()退出 EA

A.8 Calibration Parameter API

API用途
Rte_CData_P_C()读标定参数
Rte_Prm_P_P()读参数(ParameterComponent)

A.9 Port Access API

API用途
Rte_Ports()端口定义宏
Rte_NPorts()端口数量宏
Rte_Port()端口访问

A.10 Lifecycle API

API用途
Rte_Start()启动 RTE
Rte_Stop()停止 RTE

A.11 PostBuild Configuration API

API用途
Rte_PBCon_*()运行时切换变体

A.12 Availability & Feedback API

API用途
Rte_Feedback()获取反馈
Rte_IFeedback()获取 Implicit 反馈
Rte_IsAvailable()检查可用性
Rte_SetAvailable()设置可用性
Rte_Pim()数据指针访问

附录 B:术语缩写

本附录列出 SWS_RTE 使用的所有缩略语(已在 1.3 节给出主表)。补充缩写:

缩略语英文全称中文释义
ARXMLAUTOSAR XMLAUTOSAR XML 描述格式
AsrAUTOSARAUTOSAR 标准
BSWMDBasic Software Module Description基础软件模块描述
ComMCommunication Manager通信管理器
DemDiagnostic Event Manager诊断事件管理器
DltDiagnostic Log and Trace诊断日志与跟踪
EAExclusive Area独占区
ECUCECU ConfigurationECU 配置
EOCEnd of Init Callout初始化完成回调
IRVInter-Runnable Variable可执行实体间变量
MCFMeasurement & Calibration Format测量与标定格式
MDGMode Declaration Group模式声明组
MMMode Manager模式管理器
MUMode User模式使用者
OCBOSEK Compliance ClassOSEK 兼容类(优先级继承)
PCPPriority Ceiling Protocol优先级天花板协议
PRPortProvider/Receiver Port提供/接收双向端口
RPRapid Prototyping快速原型
RPTRapid Prototyping Tool快速原型工具
SchMBasic Software Scheduler基础软件调度器
SPService Point服务点
STSchedule Table调度表
TITransformation Interface转换接口
WCETWorst Case Execution Time最坏情况执行时间
XCPUniversal Measurement and Calibration Protocol通用测量与标定协议

📋 校对记录

校对轮次:L1 自动校对(2026-06-13)