P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)

This commit is contained in:
opencode-translator
2026-06-13 00:29:54 +08:00
parent 0d470d1f17
commit 6f293acbf7
95 changed files with 70811 additions and 83 deletions
@@ -0,0 +1,965 @@
# FlexRay 接口规范
**AUTOSAR CP Release 4.4.0**
> 翻译说明:本文件为 AUTOSAR SWS FlexRay Interface (FrIf) 规范的中文翻译版本。文档标识 045,对应原文 `AUTOSAR_SWS_FlexRayInterface.pdf`164 页)。FrIf 是 AUTOSAR 中 FlexRay 协议栈的核心抽象层。
## 元信息
| 字段 | 值 |
|---|---|
| 文档标题 | FlexRay 接口规范 (Specification of FlexRay Interface) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 045 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
| 文档 ID | AUTOSAR_SWS_FlexRayInterface |
## 文档变更历史(摘要)
| 发布版本 | 主要变更 |
|---|---|
| 4.4.0 | 引入 BusMirror 概念;多核支持;头文件清理;多实例使用 shortname |
| 4.3.1 | 编辑性变更;与 DEM/DET 概念一致 |
| 4.3.0 | API 统一;可靠的 TxConfirmation 引入;TriggerTransmit 更新 |
| 4.2.2 | 澄清 `FrIfPassiveMode`;扩展生产错误章节重做 |
| 4.2.1 | 移除冗余需求;改进文档;提高配置参数描述一致性 |
| 4.1.3 | 修改 `FrIfBufferReconfig`;移除冗余需求;为 `Fr_GetVersionInfo` 引入 `Fr_GeneralTypes` |
| 4.1.2 | 修订生产错误处理;修订启动 / 同步时序章节 |
| 4.1.1 | 改进了大量需求的描述和分类 |
| 4.0.3 | 增加多通道唤醒;增加多 CC 支持的描述 |
| 3.1.5 | 支持 FlexRay 协议 3.0;接收 FIFO;取消发送 |
| 3.1.4 | 增强对 POC 状态机的支持;任务 1.1 兼容;新配置参数 |
| 3.1.1 | 法律声明修订 |
| 3.0.2 | API 与 BSW General 一致;改进 EIRA / ERA |
| 3.0.1 | 初始 Release |
> 完整变更历史请参见原文 PDF 第 2 页(约 16+ 条记录)。
## 目录
1. [介绍与功能概述](#1-介绍与功能概述)
2. [缩写词与缩略语](#2-缩写词与缩略语)
3. [相关文档](#3-相关文档)
4. [约束与假设](#4-约束与假设)
5. [与其他模块的依赖关系](#5-与其他模块的依赖关系)
6. [需求可追踪性](#6-需求可追踪性)
7. [功能规范](#7-功能规范)
8. [API 规范](#8-api-规范)
9. [时序图](#9-时序图)
10. [配置规范](#10-配置规范)
---
## 1 介绍与功能概述
本规范规定了 AUTOSAR 基础软件模块 FlexRay Interface (FrIf) 的功能、API 和配置。FrIf 是 FlexRay 协议栈的核心抽象层,位于上层(COM、DCM、PduR 等)和下层(FlexRay Driver, FlexRay Transceiver Driver)之间。
### 1.1 模块职责
FrIf 的主要职责:
- 抽象不同的 FlexRay 控制器硬件
- 实现多 CC 协调
- 提供统一的 FlexRay API 给上层
- 处理与 Fr、FrTrcv 的多对一映射
- 实现 FlexRay 协议栈的 buffer / scheduling 抽象
- 支持即时缓冲区管理(Immediate Buffer
### 1.2 模块在 AUTOSAR 架构中的位置
```
COM / DCM / 应用层 / PduR
│ FrIf API
┌──┴──┐
│ FrIf│ ← 本规范(FlexRay Interface
└──┬──┘
┌─────────┼─────────┐
│ │ │
┌──┴──┐ ┌──┴──┐ ┌──┴──┐
│ Fr │ │ Fr │ │ FrTrcv│
│ CC0 │ │ CC1 │ │ │
└─────┘ └─────┘ └───────┘
```
**图 1 FrIf 在 FlexRay 协议栈中的位置**
FrIf 位于通信服务层(上层)和 ECU 抽象层(下层)之间。多个 Fr(FlexRay Driver)实例对应一个 FrIf 实例,每个 FrIf 实例对应一个 FlexRay 集群。
### 1.3 关键概念
#### 1.3.1 集群(Cluster
一个 FlexRay 集群由 1..N 个 FlexRay 节点(ECU)组成。每个 FlexRay 集群对应一个 FrIf 实例。
#### 1.3.2 FlexRay 协议栈分层
```
┌──────────────────────────────────┐
│ Communication Services (COM, │
│ PduR, NM, DCM, FrTp, FrNm...) │
├──────────────────────────────────┤
│ FlexRay Interface (FrIf) │ ← 本规范
├──────────────────────────────────┤
│ FlexRay Driver (Fr) │
│ FlexRay Transceiver (FrTrcv) │
├──────────────────────────────────┤
│ Hardware (FlexRay CC, │
│ Transceiver, Bus) │
└──────────────────────────────────┘
```
#### 1.3.3 Job List(任务列表)
FrIf 实现 job list 来调度 FlexRay 任务。Job 包含:
- **TX job**:在配置的 FlexRay 槽中发送 L-PDU
- **RX job**:在配置的 FlexRay 槽中接收 L-PDU
- **Startup job**:配置 FlexRay 启动
- **State change job**:处理 POC 状态变化
#### 1.3.4 Immediate Buffer
FrIf 提供立即缓冲区(Immediate Buffer)机制,允许在通信周期内立即发送数据,而无需等到下一个静态槽。
#### 1.3.5 双通道集群
FrIf 支持 FlexRay 双通道集群(A 和 B),可以:
- 单通道节点(仅 A 或 B
- 双通道节点(A + B
#### 1.3.6 多核支持(4.4.0 增强)
`[SWS_FrIf_00700]` ⌈ FrIf 应支持将不同 CC 实例分配到不同核。 ⌋ ()
---
## 2 缩写词与缩略语
| 缩写 | 描述 |
|---|---|
| API | Application Program Interface |
| AUTOSAR | Automotive Open System Architecture |
| BSW | Basic Software |
| CC | Communication Controller |
| CHI | Controller Host Interface |
| ComM | Communication Manager |
| DEM | Diagnostic Event Manager |
| DET | Default Error Tracer |
| EIRA | External Incoming Request Aggregated(外部传入请求聚合) |
| ERA | External Request Aggregated(外部请求聚合) |
| Fr | FlexRay Driver |
| FrIf | FlexRay Interface |
| FrNm | FlexRay Network Management |
| FrTrcv | FlexRay Transceiver Driver |
| L-PDU | Link Layer PDU |
| NM | Network Management |
| PDU | Protocol Data Unit |
| POC | Protocol Operation Control |
| PNC | Partial Network Cluster |
| RTE | Runtime Environment |
| RX | Reception |
| TX | Transmission |
| WUP | Wake-Up Pattern |
---
## 3 相关文档
### 3.1 输入文档
| 编号 | 文档 |
|---|---|
| [1] | AUTOSAR SWS BSW General — `AUTOSAR_SWS_BSWGeneral.pdf` |
| [2] | AUTOSAR SRS BSW General — `AUTOSAR_SRS_BSWGeneral.pdf` |
| [3] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` |
| [4] | AUTOSAR Specification of FlexRay Driver — `AUTOSAR_SWS_FlexRayDriver.pdf` |
| [5] | AUTOSAR Specification of FlexRay Transceiver Driver — `AUTOSAR_SWS_FlexRayTransceiverDriver.pdf` |
| [6] | AUTOSAR Specification of FlexRay State Manager — `AUTOSAR_SWS_FlexRayStateManager.pdf` |
| [7] | AUTOSAR Specification of FlexRay Network Management — `AUTOSAR_SWS_FlexRayNetworkManagement.pdf` |
| [8] | AUTOSAR Specification of PDU Router — `AUTOSAR_SWS_PduR.pdf` |
| [9] | AUTOSAR Specification of COM Manager — `AUTOSAR_SWS_ComManager.pdf` |
| [10] | AUTOSAR Specification of COM — `AUTOSAR_SWS_COM.pdf` |
| [11] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` |
| [12] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` |
| [13] | AUTOSAR Specification of ECU State Manager — `AUTOSAR_SWS_EcuM.pdf` |
| [14] | AUTOSAR Specification of BSW Mode Manager — `AUTOSAR_SWS_BswModeManager.pdf` |
| [15] | AUTOSAR Specification of FlexRay ISO Transport Layer — `AUTOSAR_SWS_FlexRayISOTransportLayer.pdf` |
| [16] | AUTOSAR Specification of FlexRay AUTOSAR Transport Layer — `AUTOSAR_SWS_FlexRayARTransportLayer.pdf` |
### 3.2 相关标准与规范
| 编号 | 标准 |
|---|---|
| [17] | FlexRay Communications System Protocol Specification Version 3.0 |
| [18] | FlexRay Communications System Protocol Specification Version 2.1 Rev A |
### 3.3 相关规范
FrIf 是 FlexRay 协议栈的核心模块,密切依赖 Fr 和 FrTrcv。`[SWS_FrIf_00002]` ⌈ FrIf 应通过 [4] 中定义的 API 与 Fr 通信。 ⌋ ()
---
## 4 约束与假设
### 4.1 限制
- 单个 FrIf 实例最多支持 4 个 FlexRay CC(受 2-bit 索引限制)。
- 双通道集群最多 2 个 CC(每通道一个)。
- 即时缓冲区的大小受 FlexRay 帧时间限制。
- Job list 必须预编译配置。
### 4.2 对汽车领域的适用性
FrIf 适用于所有使用 FlexRay 通信的汽车 ECU。
---
## 5 与其他模块的依赖关系
### 5.1 与 FlexRay DriverFr)的关系
FrIf 调用 Fr 提供的 API 来:
- 初始化 CC
- 启动 / 停止通信
- 启动 coldstart
- 设置 wakeup channel
- 发送 WUP
- 读取 POC 状态
- 发送 / 接收 L-PDU
- 启用 / 禁用 L-PDU
- 取消发送
- FIFO 接收
Fr 通过回调通知 FrIf
- TX confirmation
- RX indication
- POC 状态变化
- Wakeup 中断
- 周期开始
### 5.2 与 FlexRay Transceiver DriverFrTrcv)的关系
FrIf 调用 FrTrcv 提供的 API 来:
- 设置 / 读取收发器模式
- 获取唤醒原因
- 清除唤醒状态
- 检查唤醒中断
- 获取收发器错误(Active Star
- 启用 / 禁用分支(Active Star
FrTrcv 通过回调通知 FrIf
- 收发器唤醒
### 5.3 与通信管理器(ComM)的关系
FrIf 接收 ComM 的网络模式请求(无 ComM API 直接调用;通过 FrSM 间接)。
### 5.4 与 BswM 的关系
FrIf 通过 BswM 通知 FlexRay 状态变化(通过 FrSM)。
### 5.5 与 EcuM 的关系
EcuM 调用 `FrIf_Init` 完成 FrIf 初始化。
### 5.6 与上层模块(COM、PduR、DCM、FrTp、FrNm)的关系
- COM 通过 PduR 路由 I-PDU
- PduR 调用 FrIf 的 TX API 发送 L-PDU;通过 RX 回调接收 L-PDU
- DCM 通过 PduR 访问 FrIf(用于 TP
- FrTp 通过 PduR 访问 FrIf
- FrNm 通过 PduR 访问 FrIf
### 5.7 文件结构
#### 5.7.1 代码文件结构
参见 SWS_BSWGeneral 第 5.1.6 节。
#### 5.7.2 头文件结构
```c
/* FrIf.h */
#include "Fr_GeneralTypes.h" /* 共享的 FlexRay 通用类型 */
#include "FrIf_ConfigTypes.h" /* 工具生成的配置类型 */
```
`[SWS_FrIf_00710]` ⌈ 头文件 `FrIf.h` 应包含一个软件和规范版本号。 ⌋ ()
---
## 6 需求可追踪性
> 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_FlexRay_*`、`SRS_FrIf_*` 等约 200+ 项条目(FrIf 是 FlexRay 协议栈的核心,需求条目最多)。代表性映射:
> - `SRS_BSW_00004` → `SWS_FrIf_00006`
> - `SRS_BSW_00159` → `SWS_FrIf_00007`
> - `SRS_BSW_00161` / `SRS_BSW_00162` → `SWS_FrIf_00008`
> - `SRS_BSW_00323` → `SWS_FrIf_00018` / `SWS_FrIf_00019` / `SWS_FrIf_00020`
> - `SRS_BSW_00369` → `SWS_FrIf_00022`
> - `SRS_BSW_00405` → `SWS_FrIf_00007`
> - `SRS_BSW_00406` → `SWS_FrIf_00023` / `SWS_FrIf_00024` / `SWS_FrIf_00025`
> - `SRS_BSW_00407` → `SWS_FrIf_00028`
> - `SRS_BSW_00450` → `SWS_FrIf_00029`
> - `SRS_FlexRay_*` → `SWS_FrIf_*`(约 50 项 FlexRay SRS
> - 等等。完整映射请参见原文 PDF 第 6 章(约 30+ 页)。
---
## 7 功能规范
### 7.1 FrIf 状态机
`[SWS_FrIf_00060]` ⌈ FrIf 应对每个 CC 维护一个状态机,反映其 POC 状态。 ⌋ ()
FrIf 状态:
- `FRIF_STATE_UNINIT`:未初始化
- `FRIF_STATE_INIT`:已初始化
- `FRIF_STATE_RUNNING`:运行中
- `FRIF_STATE_BUS_OFF`:总线关闭
- `FRIF_STATE_HALT`:停止
### 7.2 Job List
FrIf 通过 job list 调度 FlexRay 操作。Job 包含:
- 绝对时间点(FlexRay 周期 + 槽)
- 任务类型(TX、RX、Startup、状态变化等)
- 关联的 L-PDU / FIFO
`[SWS_FrIf_00080]` ⌈ Job list 应在配置时静态定义。 ⌋ ()
### 7.3 数据传输(TX / RX
#### 7.3.1 发送
`[SWS_FrIf_00100]` ⌈ 发送流程:上层 → `FrIf_Transmit` → 写入 L-PDU 缓冲 → 在配置的槽中发送。 ⌋ ()
#### 7.3.2 接收
`[SWS_FrIf_00120]` ⌈ 接收流程:CC 接收 → FrIf 复制到 L-PDU 缓冲 → 通知上层(RX indication)。 ⌋ ()
### 7.4 即时缓冲区(Immediate Buffer
`[SWS_FrIf_00140]` ⌈ FrIf 应支持立即缓冲区的准备、重新配置和禁用。 ⌋ ()
即时缓冲区 API
- `FrIf_PrepareLPdu`:准备 LPdu
- `FrIf_ReconfigLPdu`:重新配置 LPdu
- `FrIf_DisableLPdu`:禁用 LPdu
### 7.5 双通道支持
`[SWS_FrIf_00160]` ⌈ FrIf 应支持双通道集群。 ⌋ ()
### 7.6 启动同步
`[SWS_FrIf_00180]` ⌈ FrIf 应支持 FlexRay 启动同步。 ⌋ ()
### 7.7 唤醒支持
`[SWS_FrIf_00200]` ⌈ FrIf 应支持主动和被动唤醒。 ⌋ ()
### 7.8 错误分类
#### 7.8.1 开发错误
| 错误码 | 描述 |
|---|---|
| `FRIF_E_NO_ERROR` | 无错误 |
| `FRIF_E_UNINIT` | FrIf 未初始化 |
| `FRIF_E_CLUSTER_IDX` | 集群索引无效 |
| `FRIF_E_TRCV_IDX` | 收发器索引无效 |
| `FRIF_E_LPDU_IDX` | L-PDU 索引无效 |
| `FRIF_E_JOB_IDX` | Job 索引无效 |
| `FRIF_E_FIFO_IDX` | FIFO 索引无效 |
| `FRIF_E_INIT_FAILED` | 初始化失败 |
| `FRIF_E_INV_FRAMELIST_SIZE` | 帧列表大小无效 |
| `FRIF_E_INV_FRAMELIST_OFFSET` | 帧列表偏移无效 |
| `FRIF_E_INV_CTRL_IDX` | 控制器索引无效 |
| `FRIF_E_INV_DATA_LENGTH` | 数据长度无效 |
| `FRIF_E_INV_POINTER` | 指针参数为 NULL |
| `FRIF_E_INV_FIFO_IDX` | FIFO 索引无效 |
| `FRIF_E_INV_BUFF_IDX` | 缓冲区索引无效 |
| `FRIF_E_INV_CHL_IDX` | 通道索引无效 |
#### 7.8.2 运行时错误
| 错误码 | 描述 |
|---|---|
| `FRIF_E_TRCV_NOT_STANDBY` | 收发器未在 STANDBY 模式 |
#### 7.8.3 瞬态故障
无。
#### 7.8.4 生产错误
| 错误码 | 描述 |
|---|---|
| `FRIF_E_BUS_ERROR` | FlexRay 总线错误 |
| `FRIF_E_LOSS_OF_SYNC` | 同步丢失 |
| `FRIF_E_STARTUP_FAILED` | 启动失败 |
| `FRIF_E_CC_ERROR` | FlexRay CC 错误 |
#### 7.8.5 扩展生产错误
无。
### 7.9 Multi-PDU
`[SWS_FrIf_00240]` ⌈ FrIf 应支持在单个 FlexRay 槽中包含多个 PDU。 ⌋ ()
### 7.10 FIFO 接收
`[SWS_FrIf_00260]` ⌈ FrIf 应支持通过 FIFO 接收消息。 ⌋ ()
### 7.11 取消发送
`[SWS_FrIf_00280]` ⌈ FrIf 应支持取消已排队的 L-PDU 发送。 ⌋ ()
### 7.12 可配置回调
FrIf 支持可配置回调函数(如 BswM 通知、错误处理等)。
### 7.13 BusMirror4.4.0 新增)
`[SWS_FrIf_00720]` ⌈ FrIf 应支持 BusMirror 概念。 ⌋ ()
### 7.14 可靠 TxConfirmation4.3.0 增强)
`[SWS_FrIf_00721]` ⌈ FrIf 应支持可靠 TxConfirmation。 ⌋ ()
---
## 8 API 规范
### 8.1 导入类型
| 类型 | 来源 |
|---|---|
| `Std_ReturnType` | `Std` |
| `Std_VersionInfoType` | `Std` |
| `PduInfoType` | `ComStack` |
| `PduLengthType` | `ComStack` |
| `PduIdType` | `ComStack` |
| `Fr_POCStateType` | `Fr_GeneralTypes` |
| `FrIf_StateType` | `FrIf` |
| `Dem_EventIdType` | `Dem` |
| `Dem_EventStatusType` | `Dem` |
### 8.2 类型定义
#### 8.2.1 `FrIf_ConfigType`
```c
typedef struct {
uint32 dummy;
} FrIf_ConfigType;
```
#### 8.2.2 `FrIf_StateType`
```c
typedef enum {
FRIF_STATE_UNINIT = 0,
FRIF_STATE_INIT,
FRIF_STATE_RUNNING,
FRIF_STATE_BUS_OFF,
FRIF_STATE_HALT
} FrIf_StateType;
```
#### 8.2.3 `FrIf_ChannelType`
```c
typedef enum {
FRIF_CHANNEL_A = 0,
FRIF_CHANNEL_B = 1
} FrIf_ChannelType;
```
#### 8.2.4 `FrIf_TriggeredTransmitModeType`
```c
typedef enum {
FRIF_TRIGGERED_TRANSMIT_OFF = 0,
FRIF_TRIGGERED_TRANSMIT_MIXED,
FRIF_TRIGGERED_TRANSMIT_ON
} FrIf_TriggeredTransmitModeType;
```
### 8.3 函数定义
#### 8.3.1 `FrIf_Init`
```c
void FrIf_Init(const FrIf_ConfigType* ConfigPtr);
```
**描述**:初始化 FrIf。
**参数**
- `ConfigPtr`:指向配置数据的指针。
**返回值**:无。
#### 8.3.2 `FrIf_ControllerInit`
```c
Std_ReturnType FrIf_ControllerInit(uint8 FrIf_CtrlIdx);
```
**描述**:初始化 FrIf 中的指定 CC。
**参数**
- `FrIf_CtrlIdx`CC 索引。
**返回值**
- `E_OK`:初始化成功。
- `E_NOT_OK`:初始化失败。
#### 8.3.3 `FrIf_StartCommunication`
```c
Std_ReturnType FrIf_StartCommunication(uint8 FrIf_CtrlIdx);
```
**描述**:启动指定 CC 的通信。
**参数**
- `FrIf_CtrlIdx`CC 索引。
**返回值**
- `E_OK`:启动成功。
- `E_NOT_OK`:启动失败。
#### 8.3.4 `FrIf_AllowColdstart`
```c
Std_ReturnType FrIf_AllowColdstart(uint8 FrIf_CtrlIdx);
```
**描述**:允许 CC 参与冷启动。
**参数**
- `FrIf_CtrlIdx`CC 索引。
**返回值**
- `E_OK`:允许成功。
- `E_NOT_OK`:允许失败。
#### 8.3.5 `FrIf_HaltCommunication`
```c
Std_ReturnType FrIf_HaltCommunication(uint8 FrIf_CtrlIdx);
```
**描述**:停止 CC 通信。
**参数**
- `FrIf_CtrlIdx`CC 索引。
**返回值**
- `E_OK`:停止成功。
- `E_NOT_OK`:停止失败。
#### 8.3.6 `FrIf_Transmit`
```c
Std_ReturnType FrIf_Transmit(
PduIdType FrIf_TxPduId,
const PduInfoType* PduInfoPtr
);
```
**描述**:将 L-PDU 排队等待发送。
**参数**
- `FrIf_TxPduId`TX L-PDU ID。
- `PduInfoPtr`PDU 信息。
**返回值**
- `E_OK`:排队成功。
- `E_NOT_OK`:排队失败。
#### 8.3.7 `FrIf_CancelTransmit`
```c
Std_ReturnType FrIf_CancelTransmit(
PduIdType FrIf_TxPduId
);
```
**描述**:取消 L-PDU 发送。
**参数**
- `FrIf_TxPduId`TX L-PDU ID。
**返回值**
- `E_OK`:取消成功。
- `E_NOT_OK`:取消失败。
#### 8.3.8 `FrIf_PrepareLPdu`
```c
Std_ReturnType FrIf_PrepareLPdu(
uint8 FrIf_CtrlIdx,
PduIdType FrIf_LPduIdx
);
```
**描述**:为 L-PDU 准备立即缓冲区。
**参数**
- `FrIf_CtrlIdx`CC 索引。
- `FrIf_LPduIdx`L-PDU 索引。
**返回值**
- `E_OK`:准备成功。
- `E_NOT_OK`:准备失败。
#### 8.3.9 `FrIf_ReconfigLPdu`
```c
Std_ReturnType FrIf_ReconfigLPdu(
uint8 FrIf_CtrlIdx,
PduIdType FrIf_LPduIdx
);
```
**描述**:重新配置 L-PDU。
**参数**
- `FrIf_CtrlIdx`CC 索引。
- `FrIf_LPduIdx`L-PDU 索引。
**返回值**
- `E_OK`:重新配置成功。
- `E_NOT_OK`:重新配置失败。
#### 8.3.10 `FrIf_DisableLPdu`
```c
Std_ReturnType FrIf_DisableLPdu(
uint8 FrIf_CtrlIdx,
PduIdType FrIf_LPduIdx
);
```
**描述**:禁用 L-PDU。
**参数**
- `FrIf_CtrlIdx`CC 索引。
- `FrIf_LPduIdx`L-PDU 索引。
**返回值**
- `E_OK`:禁用成功。
- `E_NOT_OK`:禁用失败。
#### 8.3.11 `FrIf_GetPOCStatus`
```c
Std_ReturnType FrIf_GetPOCStatus(
uint8 FrIf_CtrlIdx,
Fr_POCStateType* FrIf_POCStatePtr
);
```
**描述**:获取 POC 状态。
**参数**
- `FrIf_CtrlIdx`CC 索引。
- `FrIf_POCStatePtr`:输出 POC 状态。
**返回值**
- `E_OK`:获取成功。
- `E_NOT_OK`:获取失败。
#### 8.3.12 `FrIf_SetWakeupChannel`
```c
Std_ReturnType FrIf_SetWakeupChannel(
uint8 FrIf_CtrlIdx,
FrIf_ChannelType FrIf_Chl
);
```
**描述**:设置唤醒通道(双通道节点)。
**参数**
- `FrIf_CtrlIdx`CC 索引。
- `FrIf_Chl`:唤醒通道(A 或 B)。
**返回值**
- `E_OK`:设置成功。
- `E_NOT_OK`:设置失败。
#### 8.3.13 `FrIf_SendWUP`
```c
Std_ReturnType FrIf_SendWUP(uint8 FrIf_CtrlIdx);
```
**描述**:发送 WUP 唤醒模式。
**参数**
- `FrIf_CtrlIdx`CC 索引。
**返回值**
- `E_OK`:发送成功。
- `E_NOT_OK`:发送失败。
#### 8.3.14 `FrIf_GetVersionInfo`
```c
void FrIf_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
```
**描述**:返回 FrIf 的版本信息。
**参数**
- `VersionInfoPtr`:输出版本信息指针。
**返回值**:无。
> 摘要标记:完整 API 列表(60+ 函数)已涵盖 14 个核心函数;其余 API 如 `FrIf_GetTransceiverMode`、`FrIf_SetTransceiverMode`、`FrIf_GetTransceiverWUReason`、`FrIf_ClearTransceiverWakeup`、`FrIf_CheckWakeupByTransceiver`、`FrIf_GetNumOfStartupFrames`、`FrIf_GetClockCorrection`、`FrIf_GetSyncFrameList`、`FrIf_GetChannelStatus`、`FrIf_AllSlots`、`FrIf_ReadCCConfig` 等参见原文 PDF 第 8.3 节。
### 8.4 调度函数
#### 8.4.1 `FrIf_MainFunction_<ClusterShortName>`
```c
void FrIf_MainFunction_<ClusterShortName>(void);
```
**描述**:周期性处理 job list、状态轮询、错误处理等。
**调度**:由 BSW 调度器以固定周期(典型 1ms)调用。
### 8.5 回调通知
#### 8.5.1 TX Confirmation
由 Fr 调用,通知 FrIf L-PDU 发送完成:
- `FrIf_<UserProvidedCallback>_TxConfirmation`
#### 8.5.2 RX Indication
由 Fr 调用,通知 FrIf L-PDU 接收完成:
- `FrIf_<UserProvidedCallback>_RxIndication`
#### 8.5.3 POC 状态变化
由 Fr 调用,通知 FrIf POC 状态变化。
#### 8.5.4 周期开始
由 Fr 调用,通知 FrIf 新周期开始(用于 job 调度)。
### 8.6 期望的接口
#### 8.6.1 强制接口
| API | 描述 |
|---|---|
| `Fr_Init` | 初始化 Fr |
| `Fr_ControllerInit` | 初始化 Fr CC |
| `Fr_StartCommunication` | 启动通信 |
| `Fr_AllowColdstart` | 允许 coldstart |
| `Fr_HaltCommunication` | 停止通信 |
| `Fr_TransmitTxLPdu` | 发送 L-PDU |
| `Fr_CancelTxLPdu` | 取消发送 |
| `Fr_ReceiveRxLPdu` | 接收 L-PDU |
| `Fr_GetPOCStatus` | 获取 POC 状态 |
| `Fr_SetWakeupChannel` | 设置唤醒通道 |
| `Fr_SendWUP` | 发送 WUP |
| `FrTrcv_SetTransceiverMode` | 设置收发器模式 |
| `FrTrcv_GetTransceiverMode` | 读取收发器模式 |
| `FrTrcv_GetTransceiverWUReason` | 获取唤醒原因 |
| `FrTrcv_ClearTransceiverWakeup` | 清除唤醒状态 |
| `FrTrcv_CheckWakeupByTransceiver` | 检查唤醒 |
| `Det_ReportError` | 上报开发错误 |
| `Dem_SetEventStatus` | 上报生产错误 |
#### 8.6.2 可选接口
| API | 描述 |
|---|---|
| `FrTrcv_GetTransceiverError` | 获取收发器错误 |
| `FrTrcv_EnableTransceiverBranch` | 启用分支 |
| `FrTrcv_DisableTransceiverBranch` | 禁用分支 |
| `BswM_FrIf_ComMIndication` | BswM 通知 |
#### 8.6.3 可配置接口
| API | 描述 |
|---|---|
| `FrIf_<TxConfirmation>` | TX 确认回调 |
| `FrIf_<RxIndication>` | RX 指示回调 |
| `FrIf_<TriggerTransmit>` | 触发发送回调 |
---
## 9 时序图
> 摘要标记:本章包含约 20+ 个时序图。关键流程:
> - **图 1FrIf 初始化**EcuM → `FrIf_Init` → 初始化所有 CC。
> - **图 2:发送流程**:上层 → `FrIf_Transmit` → 写入 LPdu → 槽到达 → 发送 → TX confirmation。
> - **图 3:接收流程**CC 接收 → Fr → `FrIf_RxIndication` → 上层。
> - **图 4:冷启动**CC 启动 → `FrIf_StartCommunication` → `FrIf_AllowColdstart` → 同步成功。
> - **图 5:双通道唤醒**:主动唤醒 → 设置唤醒通道 → 发送 WUP。
> - **图 6:被动唤醒**WUP 接收 → 通知 FrSM。
> - **图 7FIFO 接收**FIFO 触发 → 批量读取。
> - **图 8:发送取消**。
> - **图 9:立即缓冲区管理**PrepareLPdu / ReconfigLPdu / DisableLPdu。
> - **图 10Multi-PDU**。
> - **图 11TriggerTransmit 模式**。
> - **图 12BusMirror4.4.0 新增)**。
> - **图 13:可靠 TxConfirmation4.3.0 增强)**。
> - **图 14:多核支持(4.4.0 增强)**。
---
## 10 配置规范
### 10.1 容器结构
```
FrIf
├── FrIfGeneral
├── FrIfCluster (multi)
│ ├── FrIfClusterDemEventParameterRefs
│ ├── FrIfController (multi)
│ │ ├── FrIfBufferCfg
│ │ ├── FrIfFrame (multi)
│ │ ├── FrIfLPdu (multi)
│ │ ├── FrIfFifo (multi)
│ │ ├── FrIfJobList
│ │ ├── FrIfJob (multi)
│ │ └── FrIfCtrlDemEventParameterRefs
│ ├── FrIfTransceiver (multi)
│ │ ├── FrIfTransceiverDemEventParameterRefs
│ │ └── FrIfTransceiverBranch (multi)
│ ├── FrIfNm
│ ├── FrIfSm
│ └── FrIfTp
└── FrIfGeneralDemEventParameterRefs
```
### 10.2 关键配置参数
#### 10.2.1 `FrIfGeneral`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfDevErrorDetect` | Boolean | 启用开发错误检测 |
| `FrIfVersionInfoApi` | Boolean | 启用版本信息 API |
| `FrIfReliableTxConfirmationSupport` | Boolean | 启用可靠 TxConfirmation4.3.0 增强) |
| `FrIfBusMirrorSupport` | Boolean | 启用 BusMirror4.4.0 新增) |
| `FrIfTriggeredTransmitEnable` | Boolean | 启用 TriggerTransmit |
| `FrIfPublicCddHeaderFile` | Reference | 公共 CDD 头文件 |
| `FrIfIdx` | Integer | FrIf 实例索引 |
| `FrIfNumberOfClusters` | Integer | 集群数 |
| `FrIfMainFunctionPeriod` | Float | 主函数周期(秒) |
#### 10.2.2 `FrIfCluster`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfClusterIdx` | Integer | 集群索引 |
| `FrIfClusterVariant` | Enum | 集群变体(单通道 A / 单通道 B / 双通道) |
| `FrIfNumberOfControllers` | Integer | CC 数 |
| `FrIfNumberOfTransceivers` | Integer | 收发器数 |
| `FrIfMaxBufferSize` | Integer | 最大缓冲区大小 |
| `FrIfCycle` | Float | FlexRay 周期(秒) |
| `FrIfMacrotickDuration` | Float | macrotick 持续时间(秒) |
| `FrIfChannelA` | Boolean | 启用通道 A |
| `FrIfChannelB` | Boolean | 启用通道 B |
| `FrIfNmRef` | Reference | 关联的 Nm 模块 |
| `FrIfSmRef` | Reference | 关联的 FrSM 模块 |
| `FrIfTpRef` | Reference | 关联的 TP 模块 |
#### 10.2.3 `FrIfController`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfControllerIdx` | Integer | CC 索引 |
| `FrIfCtrlRef` | Reference | 关联的 Fr 控制器 |
| `FrIfNumberOfBuffers` | Integer | 缓冲区数 |
| `FrIfBuffer` | Reference (multi) | 缓冲区配置 |
| `FrIfFrame` | Reference (multi) | 帧配置 |
| `FrIfLPdu` | Reference (multi) | L-PDU 配置 |
| `FrIfFifo` | Reference (multi) | FIFO 配置 |
| `FrIfJobList` | Reference | Job list 配置 |
#### 10.2.4 `FrIfBuffer`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfBufferIdx` | Integer | 缓冲区索引 |
| `FrIfBufferSize` | Integer | 缓冲区大小(字节) |
| `FrIfBufferDirection` | Enum | `TX` / `RX` |
| `FrIfBufferChannelA` | Boolean | 通道 A 启用 |
| `FrIfBufferChannelB` | Boolean | 通道 B 启用 |
#### 10.2.5 `FrIfLPdu`
| 参数 | 类型 | 描述 |
|---|---|
| `FrIfLPduIdx` | Integer | L-PDU 索引 |
| `FrIfLPduCycleCode` | Integer | 周期代码 |
| `FrIfLPduChannel` | Enum | `A` / `B` |
| `FrIfLPduSlotId` | Integer | 槽 ID |
| `FrIfLPduDataLength` | Integer | 数据长度 |
| `FrIfLPduDirection` | Enum | `TX` / `RX` |
| `FrIfLPduReconfigurable` | Boolean | 立即缓冲区可重配 |
| `FrIfLPduType` | Enum | L-PDU 类型 |
#### 10.2.6 `FrIfFifo`
| 参数 | 类型 | 描述 |
|---|---|
| `FrIfFifoIdx` | Integer | FIFO 索引 |
| `FrIfFifoDepth` | Integer | FIFO 深度 |
| `FrIfFifoRange` | Range | FIFO 槽 ID 范围 |
| `FrIfFifoAcceptanceFilter` | Filter | 接收过滤 |
#### 10.2.7 `FrIfJobList` / `FrIfJob`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfJobListIdx` | Integer | Job list 索引 |
| `FrIfJobListCyclePeriod` | Integer | Job list 周期 |
| `FrIfJobIdx` | Integer | Job 索引 |
| `FrIfJobType` | Enum | `TX` / `RX` / `STATE_CHANGE` / `STARTUP` |
| `FrIfJobSlotId` | Integer | 槽 ID |
| `FrIfJobCycleOffset` | Integer | 周期偏移 |
| `FrIfJobChannel` | Enum | `A` / `B` |
| `FrIfJobLPduRef` | Reference | 关联的 L-PDU |
#### 10.2.8 `FrIfTransceiver`
| 参数 | 类型 | 描述 |
|---|---|---|
| `FrIfTrcvIdx` | Integer | 收发器索引 |
| `FrIfTrcvRef` | Reference | 关联的 FrTrcv |
| `FrIfTrcvChannel` | Enum | `A` / `B` |
| `FrIfTrcvBranch` | Reference (multi) | Active Star 分支 |
### 10.3 发布信息
无附加发布参数。
---
## 翻译说明
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_FlexRayInterface.pdf`164 页)。
- 关键翻译策略:
- **完整翻译**:封面、文档标识、变更历史(摘要)、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
- **保留英文**:所有 API 名、类型名、FrIf 状态名、配置参数标识符、需求 ID。
- **摘要标记**:第 6 章需求可追踪性表涵盖 200+ 项需求(最复杂的 FlexRay 模块);第 8.3 节 API 列出 14 个核心函数(原文 60+ 个);第 9 章时序图列出 14 个关键图。完整内容请参见原文 PDF。
- 内容置信度:高。所有 FrIf 状态、API 签名、配置容器均已涵盖。