_Type.h` 包含特定组件的应用数据类型定义。
##### 5.3.6.4 RTE 模式
##### 5.3.6.5 枚举数据类型
##### 5.3.6.6 范围数据类型
##### 5.3.6.7 实现数据类型符号
##### 5.3.6.8 用于访问结构中可选成员的可用性信息的宏
#### 5.3.7 VFB 追踪头文件
`Rte_Trace.h` 包含 VFB 追踪功能。
#### 5.3.8 RTE 配置头文件
`Rte_Cfg.h` 包含 RTE 的配置信息。
#### 5.3.9 生成的 RTE
##### 5.3.9.1 头文件使用
##### 5.3.9.2 C/C++
##### 5.3.9.3 文件内容
##### 5.3.9.4 重入性
#### 5.3.10 RTE 后构建变体集
### 5.4 RTE 数据结构
#### 5.4.1 实例句柄
实例句柄(`Rte_Instance`)用于标识多实例化组件的特定实例。
#### 5.4.2 组件数据结构
组件数据结构包含所有与组件相关的数据。
##### 5.4.2.1 数据句柄段
##### 5.4.2.2 每实例内存句柄段
##### 5.4.2.3 Inter Runnable 变量句柄段
##### 5.4.2.4 独占区 API 段
##### 5.4.2.5 端口 API 段
##### 5.4.2.6 校准参数句柄段
##### 5.4.2.7 Inter Runnable 变量 API 段
##### 5.4.2.8 Inter Runnable 触发 API 段
##### 5.4.2.9 实例 ID 段
##### 5.4.2.10 RAM 块数据更新句柄段
##### 5.4.2.11 供应商特定段
### 5.5 API 数据类型
#### 5.5.1 `Std_ReturnType`
标准返回类型,AUTOSAR 标准类型。
##### 5.5.1.1 基础设施错误
##### 5.5.1.2 应用程序错误
##### 5.5.1.3 预定义错误代码
| 错误代码 | 描述 |
|---------|------|
| `RTE_E_OK` | 无错误 |
| `RTE_E_INVALID` | 无效参数 |
| `RTE_E_UNCONNECTED` | 端口未连接 |
| `RTE_E_LIMIT` | 超出限制 |
| `RTE_E_TIMEOUT` | 超时 |
| `RTE_E_INCONSISTENT` | 不一致 |
| `RTE_E_TRANSMIT_ACK` | 发送确认错误 |
| `RTE_E_NEVER_RECEIVED` | 从未接收 |
| `RTE_E_OUT_OF_RANGE` | 超出范围 |
| `RTE_E_HARD_TRANSFORMER_ERROR` | 硬转换器错误 |
| `RTE_E_SOFT_TRANSFORMER_ERROR` | 软转换器错误 |
| `RTE_E_LOST_DATA` | 数据丢失 |
| `RTE_E_COM_STOPPED` | 通信停止 |
| `RTE_E_COM_BUSY` | 通信忙 |
| `RTE_E_SEG_FAULT` | 分段错误 |
#### 5.5.2 `Rte_Instance`
实例句柄类型。
```c
typedef uint16 Rte_Instance;
```
#### 5.5.3 `Rte_TransformerError`
转换器错误类型。
#### 5.5.4 RTE 模式
#### 5.5.5 枚举数据类型
#### 5.5.6 范围数据类型
#### 5.5.7 具有位域转换的数据类型
### 5.6 API 参考
> **📌 摘要说明(第 5.6 节)**:RTE 规范定义了 200+ 个 API 函数。以下列出核心 API 函数的简要说明。完整的 API 规范(包括所有参数描述、存在条件、返回代码和示例)请参考原文 PDF 第 563-630 页。
#### 5.6.1 核心数据访问 API
##### `Rte_Write`
```c
Std_ReturnType Rte_Write__(
[IN Rte_Instance ,]
IN ,
[OUT Rte_TransformerError transformerError]
);
```
发起对具有"data"语义的 S/R 数据元素的显式发送-接收传输。
**关键需求**:
- `[SWS_Rte_01071]`:API 签名
- `[SWS_Rte_01280]`:存在条件
- `[SWS_Rte_07820]`:成功时返回 `RTE_E_OK`
- `[SWS_Rte_07822]`:通信停止时返回 `RTE_E_COM_STOPPED`
##### `Rte_Read`
```c
Std_ReturnType Rte_Read__(
[IN Rte_Instance ,]
OUT ,
[OUT Rte_TransformerError transformerError]
);
```
从 S/R 数据元素接收数据。
##### `Rte_Send`
```c
Std_ReturnType Rte_Send__(
[IN Rte_Instance ,]
IN ,
[OUT Rte_TransformerError transformerError]
);
```
显式发送数据(用于 queued 语义)。
##### `Rte_Receive`
```c
Std_ReturnType Rte_Receive__(
[IN Rte_Instance ,]
OUT ,
[OUT Rte_TransformerError transformerError]
);
```
显式接收数据(用于 queued 语义)。
##### `Rte_DRead`
显式接收数据(带数据元素失效检查)。
##### `Rte_Call`
```c
Std_ReturnType Rte_Call__(
[IN Rte_Instance ,]
[IN ,]
[OUT ]
);
```
调用 C/S 操作。
##### `Rte_Result`
获取 C/S 调用的结果。
##### `Rte_Pim`
访问每实例内存(Per Instance Memory,PIM)。
##### `Rte_CData`
访问组件数据。
##### `Rte_Prm`
访问参数数据。
#### 5.6.2 隐式通信 API
##### `Rte_IRead`
```c
Rte_IRead__(
[IN Rte_Instance ]
);
```
隐式读取数据元素。
##### `Rte_IWrite`
```c
void Rte_IWrite__(
[IN Rte_Instance ,]
IN
);
```
隐式写入数据元素。
##### `Rte_IWriteRef`
隐式写入数据元素(通过引用)。
##### `Rte_IInvalidate`
```c
void Rte_IInvalidate__(
[IN Rte_Instance ]
);
```
隐式使数据元素失效。
##### `Rte_IStatus`
```c
Std_ReturnType Rte_IStatus__(
[IN Rte_Instance ]
);
```
获取隐式通信的状态。
##### `Rte_IsUpdated`
```c
boolean Rte_IsUpdated__(
[IN Rte_Instance ]
);
```
检查数据元素自上次读取以来是否已更新。
#### 5.6.3 Inter Runnable Variable API
##### `Rte_IrvIRead`
读取 InterRunnableVariable。
##### `Rte_IrvIWrite`
写入 InterRunnableVariable。
##### `Rte_IrvIWriteRef`
通过引用写入 InterRunnableVariable。
##### `Rte_IrvRead`
显式读取 InterRunnableVariable。
##### `Rte_IrvWrite`
显式写入 InterRunnableVariable。
#### 5.6.4 独占区 API
##### `Rte_Enter`
```c
void Rte_Enter_(
[IN Rte_Instance ]
);
```
进入独占区。
##### `Rte_Exit`
```c
void Rte_Exit_(
[IN Rte_Instance ]
);
```
退出独占区。
#### 5.6.5 模式管理 API
##### `Rte_Mode`
```c
Rte_Mode_([IN Rte_Instance ]);
```
获取当前模式。
##### Enhanced Rte_Mode
扩展的 `Rte_Mode` API。
#### 5.6.6 触发器 API
##### `Rte_Trigger`
```c
void Rte_Trigger_([IN Rte_Instance ]);
```
触发一个外部触发器。
##### `Rte_IrTrigger`
```c
void Rte_IrTrigger_([IN Rte_Instance ]);
```
触发一个内部触发器。
##### `Rte_IFeedback`
```c
void Rte_IFeedback_([IN Rte_Instance ]);
```
提供触发反馈。
#### 5.6.7 反馈 API
##### `Rte_Feedback`
显式反馈。
##### `Rte_SwitchAck`
```c
Std_ReturnType Rte_SwitchAck_(
[IN Rte_Instance ,]
OUT
);
```
确认模式切换。
#### 5.6.8 其他 API
##### `Rte_Switch`
```c
Std_ReturnType Rte_Switch_(
[IN Rte_Instance ,]
IN
);
```
请求模式切换。
##### `Rte_Invalidate`
```c
void Rte_Invalidate_([IN Rte_Instance ]);
```
使数据元素失效。
##### `Rte_PBCon`
获取 PostBuild 配置。
##### `Rte_IsAvailable`
检查端口/接口是否可用。
##### `Rte_SetAvailable`
设置端口/接口的可用性。
### 5.7 可运行实体参考
#### 5.7.1 签名
可运行实体的签名由 RTE 生成器根据内部行为描述生成。
#### 5.7.2 入口点原型
```c
void (void);
```
#### 5.7.3 角色参数
#### 5.7.4 返回值
#### 5.7.5 触发事件
##### 5.7.5.1 TimingEvent
##### 5.7.5.2 BackgroundEvent
##### 5.7.5.3 SwcModeSwitchEvent
##### 5.7.5.4 AsynchronousServerCallReturnsEvent
##### 5.7.5.5 DataReceiveErrorEvent
##### 5.7.5.6 OperationInvokedEvent
##### 5.7.5.7 DataReceivedEvent
##### 5.7.5.8 DataSendCompletedEvent
##### 5.7.5.9 ModeSwitchedAckEvent
##### 5.7.5.10 SwcModeManagerErrorEvent
##### 5.7.5.11 ExternalTriggerOccurredEvent
##### 5.7.5.12 InternalTriggerOccurredEvent
##### 5.7.5.13 DataWriteCompletedEvent
##### 5.7.5.14 InitEvent
##### 5.7.5.15 TransformerErrorEvent
#### 5.7.6 重入性
### 5.8 RTE 生命周期 API 参考
#### 5.8.1 `Rte_Start`
```c
void Rte_Start(void);
```
启动 RTE。
#### 5.8.2 `Rte_Stop`
```c
void Rte_Stop(void);
```
停止 RTE。
#### 5.8.3 `Rte_PartitionTerminated`
通知 RTE 某个分区已终止。
### 5.9 RTE 回调参考
> **⚠️ 摘要说明**:RTE 提供多种回调 API,包括 Rte_IrTrigger(内部触发器)、Rte_SwitchAck(模式切换确认)等。详细规范请参考原文 PDF 第 33782-34948 行。
### 5.10 预期接口
RTE 期望从其他 BSW 模块接收的接口:
- **OS**:任务、事件、ISR、ScheduleTable
- **COM**:信号、I-PDU、传输
- **EcuM**:启动、关闭、唤醒
- **BswM**:模式请求
- **Dem**:诊断事件
- **Det**:开发错误
### 5.11 VFB 追踪参考
VFB 追踪 API 用于跟踪 RTE 通信活动。
---
## 6 基础软件调度器参考
> **📌 摘要说明(第 6 章)**:第 6 章描述基础软件调度器(BSW Scheduler)的 API 和配置。基础软件调度器负责调度 BSW 模块的可调度实体(BswSchedulableEntity),类似于 RTE 调度软件组件的可运行实体。详细规范请参考原文 PDF 第 357-439 页。
### 6.1 范围
### 6.2 API 原则
### 6.3 基础软件调度器模块
### 6.4 API 数据类型
### 6.5 API 参考
主要 BSW 调度器 API:
- `SchM_Enter_` / `SchM_Exit_`:进入/退出 BSW 独占区
- `SchM_Init`:初始化 BSW 调度器
- `SchM_MainFunction_<...>`:BSW 主函数
### 6.6 BSW 模块实体参考
### 6.7 基础软件调度器生命周期 API 参考
---
## 7 RTE 实现插件
> **📌 摘要说明(第 7 章)**:第 7 章描述 RTE 实现插件(RTE Implementation Plug-Ins),是 AUTOSAR 4.4 中引入的新特性,用于允许在资源受限的系统上实现高效的 RTE。详细规范请参考原文 PDF 第 38567-44462 行。
### 7.1 介绍
RTE 实现插件(RTE Implementation Plug-Ins)是可选的代码段,可由系统集成商实现以定制 RTE 的行为。它们可以:
- 实现显式通信
- 实现隐式通信
- 实现独占区
- 实现跨核通信
- 实现模式管理
- 实现转换器
### 7.2 RTE 实现插件与 RTE 之间的接口
### 7.3 RTE 实现插件功能规范
#### 主要插件类型
| 插件类型 | 描述 |
|---------|------|
| **显式通信插件** | 处理 S/R 和 C/S 的显式通信 |
| **隐式通信插件** | 处理隐式数据访问 |
| **独占区插件** | 实现独占区 |
| **全局副本实例化插件** | 处理跨核实例化 |
| **跨核通信插件** | 处理跨核通信 |
| **跨安全分区通信插件** | 处理跨安全分区通信 |
| **共享模式队列插件** | 实现共享模式队列 |
| **转换器插件** | 实现 C/S 和触发器通信中的转换器 |
| **兼容模式插件** | 支持 AUTOSAR 2.1/3.x 兼容模式 |
---
## 8 配置规范
> **📌 摘要说明(第 8 章)**:第 8 章描述 RTE 的配置规范,包括配置容器、配置参数和配置类。RTE 的配置结构非常复杂,包含数百个配置容器和参数。详细规范请参考原文 PDF 第 44463-51200 行。
### 8.1 RTE 模块配置
RTE 模块配置通过 ECUC 容器定义。
### 8.2 RTE 生成参数
RTE 生成参数控制 RTE 生成器的行为。
#### 主要生成参数
| 参数 | 描述 |
|------|------|
| `RteOptimizationMode` | RTE 优化模式 |
| `RteBswSupport` | 启用/禁用 BSW 调度器支持 |
| `RteDataContractsVersion` | 数据合约版本 |
| `RteHookFnsSupport` | 启用/禁用 Hook 函数支持 |
| `RteImplicitCommunicationApi` | 隐式通信 API 模式 |
| `RteInterPartitionCommunication` | 分区通信实现 |
| `RteMemoryMappingSupport` | 内存映射支持 |
| `RteExclusiveAreaImpl` | 独占区实现方式 |
| `RteServiceComponentSupport` | 服务组件支持 |
### 8.3 RTE 预构建配置
### 8.4 RTE 后构建配置
### 8.5 软件组件实例的处理
#### 主要配置容器
| 容器 | 描述 |
|------|------|
| `RteSoftwareComponentInstance` | 软件组件实例配置 |
| `RteRunnableEntity` | 可运行实体配置 |
| `RteRteEvent` | RTE 事件配置 |
| `RteEvent` | 事件配置 |
| `RteEventTrigger` | 事件触发配置 |
| `RteAsynchronousServerCallResultPoint` | 异步服务器调用结果点 |
| `RteVariableAccess` | 变量访问配置 |
| `RtePortSpec` | 端口规范 |
| `RtePort` | 端口配置 |
| `RteModeDeclarationGroup` | 模式声明组配置 |
| `RteModeMachineInstance` | 模式机实例配置 |
| `RteModeGroup` | 模式组配置 |
| `RteModeInhibition` | 模式禁止配置 |
| `RteInternalTrigger` | 内部触发器 |
| `RteExternalTrigger` | 外部触发器 |
| `RteInterPartitionCommunication` | 分区通信配置 |
| `RteExclusiveArea` | 独占区配置 |
| `RtePerInstanceMemory` | 每实例内存配置 |
| `RteInterRunnableVariable` | InterRunnableVariable 配置 |
| `RteImplicitCommunication` | 隐式通信配置 |
| `RteTransformation` | 转换配置 |
| `RteTransformerChain` | 转换器链配置 |
### 8.6 软件组件类型的处理
### 8.7 隐式通信配置
### 8.8 通信基础设施
### 8.9 BSW 调度器的配置
#### 主要 BSW 调度器配置容器
| 容器 | 描述 |
|------|------|
| `BswSchMModule` | BSW 调度器模块配置 |
| `BswImplementation` | BSW 实现配置 |
| `BswInternalBehavior` | BSW 内部行为配置 |
| `BswSchedulableEntity` | BSW 可调度实体配置 |
| `BswEvent` | BSW 事件配置 |
| `BswModeDeclarationGroup` | BSW 模式声明组配置 |
| `BswModeMachineInstance` | BSW 模式机实例配置 |
| `BswExclusiveArea` | BSW 独占区配置 |
| `BswTrigger` | BSW 触发器配置 |
| `BswPerInstanceMemory` | BSW 每实例内存配置 |
### 8.10 同步点的配置
### 8.11 初始化的配置
### 8.12 任务链的配置
### 8.13 分布式共享模式队列的配置
### 8.14 RTE 实现插件的配置
---
## 关键概念总结
### RTE 通信模式
| 通信范式 | 关键 API | 关键需求 |
|---------|----------|----------|
| 发送方-接收方(显式) | `Rte_Write`、`Rte_Read`、`Rte_Send`、`Rte_Receive` | [SWS_Rte_01071]、[SWS_Rte_01073] |
| 发送方-接收方(隐式) | `Rte_IWrite`、`Rte_IRead`、`Rte_IInvalidate` | [SWS_Rte_01126] |
| 客户端-服务器 | `Rte_Call`、`Rte_Result` | [SWS_Rte_01131] |
| 模式切换 | `Rte_Mode`、`Rte_Switch`、`Rte_SwitchAck` | [SWS_Rte_01171] |
| 触发器 | `Rte_Trigger`、`Rte_IrTrigger` | [SWS_Rte_01197] |
| 独占区 | `Rte_Enter`、`Rte_Exit` | [SWS_Rte_01149] |
### RTE 事件类型
RTE 事件触发可运行实体的执行。RTE 支持 15 种事件类型(详见 4.2.2.4)。
### RTE 与 BSW 的关系
RTE 是应用软件组件与基础软件之间的桥梁。RTE 调度可运行实体,BSW 调度器调度 BSW 可调度实体。
### RTE 优化模式
RTE 支持多种优化模式以适应不同的资源约束:
- **Performance**:性能优化
- **Code Size**:代码大小优化
- **RAM**:RAM 优化
- **ROM**:ROM 优化
### RTE 错误处理
RTE 通过 `RTE_E_*` 错误代码报告错误,并通过 DET 报告开发错误。
---
## 翻译说明
- **文档类型**:SWS(Software Specification)— 软件规范
- **原文页数**:1267 页(AUTOSAR 仓库中最大的 PDF)
- **翻译策略**:采用"重点翻译 + 摘要"策略
- **完整翻译章节**:封面、文档标识、变更历史、目录、介绍(1.x)、RTE 概述(2.x)、RTE 生成过程(3.x 摘要)、RTE 功能规范(4.x 全面摘要)
- **摘要章节**:
- 第 5 章(RTE 参考):完整列出所有核心 API 的签名和用途,详细规范未翻译
- 第 6 章(BSW 调度器参考):仅翻译概述
- 第 7 章(RTE 实现插件):仅翻译概述
- 第 8 章(配置规范):仅翻译主要容器结构
- **保留内容**:所有需求 ID(如 `SWS_Rte_xxxxx`)、API 函数名(`Rte_Write`、`Rte_Read` 等)、技术术语、`⌈⌋` 方框符
- **未翻译**:版权声明
- **详细内容**(包括所有 API 函数的详细规范、配置容器的完整参数、错误处理的完整流程、状态机转换、图表等)请参考原文 PDF 第 26-1267 页