Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_FlexRayInterface.md
T

966 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 签名、配置容器均已涵盖。