28 KiB
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 介绍与功能概述
本规范规定了 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 Driver(Fr)的关系
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 Driver(FrTrcv)的关系
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 头文件结构
/* 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_00006SRS_BSW_00159→SWS_FrIf_00007SRS_BSW_00161/SRS_BSW_00162→SWS_FrIf_00008SRS_BSW_00323→SWS_FrIf_00018/SWS_FrIf_00019/SWS_FrIf_00020SRS_BSW_00369→SWS_FrIf_00022SRS_BSW_00405→SWS_FrIf_00007SRS_BSW_00406→SWS_FrIf_00023/SWS_FrIf_00024/SWS_FrIf_00025SRS_BSW_00407→SWS_FrIf_00028SRS_BSW_00450→SWS_FrIf_00029SRS_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:准备 LPduFrIf_ReconfigLPdu:重新配置 LPduFrIf_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 BusMirror(4.4.0 新增)
[SWS_FrIf_00720] ⌈ FrIf 应支持 BusMirror 概念。 ⌋ ()
7.14 可靠 TxConfirmation(4.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
typedef struct {
uint32 dummy;
} FrIf_ConfigType;
8.2.2 FrIf_StateType
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
typedef enum {
FRIF_CHANNEL_A = 0,
FRIF_CHANNEL_B = 1
} FrIf_ChannelType;
8.2.4 FrIf_TriggeredTransmitModeType
typedef enum {
FRIF_TRIGGERED_TRANSMIT_OFF = 0,
FRIF_TRIGGERED_TRANSMIT_MIXED,
FRIF_TRIGGERED_TRANSMIT_ON
} FrIf_TriggeredTransmitModeType;
8.3 函数定义
8.3.1 FrIf_Init
void FrIf_Init(const FrIf_ConfigType* ConfigPtr);
描述:初始化 FrIf。
参数:
ConfigPtr:指向配置数据的指针。
返回值:无。
8.3.2 FrIf_ControllerInit
Std_ReturnType FrIf_ControllerInit(uint8 FrIf_CtrlIdx);
描述:初始化 FrIf 中的指定 CC。
参数:
FrIf_CtrlIdx:CC 索引。
返回值:
E_OK:初始化成功。E_NOT_OK:初始化失败。
8.3.3 FrIf_StartCommunication
Std_ReturnType FrIf_StartCommunication(uint8 FrIf_CtrlIdx);
描述:启动指定 CC 的通信。
参数:
FrIf_CtrlIdx:CC 索引。
返回值:
E_OK:启动成功。E_NOT_OK:启动失败。
8.3.4 FrIf_AllowColdstart
Std_ReturnType FrIf_AllowColdstart(uint8 FrIf_CtrlIdx);
描述:允许 CC 参与冷启动。
参数:
FrIf_CtrlIdx:CC 索引。
返回值:
E_OK:允许成功。E_NOT_OK:允许失败。
8.3.5 FrIf_HaltCommunication
Std_ReturnType FrIf_HaltCommunication(uint8 FrIf_CtrlIdx);
描述:停止 CC 通信。
参数:
FrIf_CtrlIdx:CC 索引。
返回值:
E_OK:停止成功。E_NOT_OK:停止失败。
8.3.6 FrIf_Transmit
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
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
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
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
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
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
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
Std_ReturnType FrIf_SendWUP(uint8 FrIf_CtrlIdx);
描述:发送 WUP 唤醒模式。
参数:
FrIf_CtrlIdx:CC 索引。
返回值:
E_OK:发送成功。E_NOT_OK:发送失败。
8.3.14 FrIf_GetVersionInfo
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>
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+ 个时序图。关键流程:
- 图 1:FrIf 初始化: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。
- 图 7:FIFO 接收:FIFO 触发 → 批量读取。
- 图 8:发送取消。
- 图 9:立即缓冲区管理:PrepareLPdu / ReconfigLPdu / DisableLPdu。
- 图 10:Multi-PDU。
- 图 11:TriggerTransmit 模式。
- 图 12:BusMirror(4.4.0 新增)。
- 图 13:可靠 TxConfirmation(4.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 | 启用可靠 TxConfirmation(4.3.0 增强) |
FrIfBusMirrorSupport |
Boolean | 启用 BusMirror(4.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 签名、配置容器均已涵盖。