20 KiB
FlexRay 驱动规范
AUTOSAR CP Release 4.4.0
翻译说明:本文件为 AUTOSAR SWS FlexRay Driver 规范的中文翻译版本。文档标识 026,对应原文
AUTOSAR_SWS_FlexRayDriver.pdf(105 页)。完整章节、API 声明、配置参数表已翻译;个别长时序图/冗长参考表进行了摘要处理。
元信息
| 字段 | 值 |
|---|---|
| 文档标题 | FlexRay 驱动规范 (Specification of FlexRay Driver) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 026 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
| 文档 ID | AUTOSAR_SWS_FlexRayDriver |
文档变更历史
| 日期 | 发布版本 | 修改者 | 变更说明 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 支持 BusMirror 概念;增强的多核使用(DRAFT);编辑性变更 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 移除对 HIS 的引用;将"default error"重命名为"development error";小幅修正 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 新增 TX 冲突检测支持;编辑性变更 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 将开发错误更改为默认错误 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 移除已废弃的配置参数;改进扩展生产错误的描述 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 移除 Fr_Init() 的 NULL_PTR Det 检查;将 FrBufferReconfig 拆分为 FrPrepareLPduSupport、FrReconfigLPduSupport、FrDisableLPduSupport;Dem 事件改为大写字母;移除对 Fr_GeneralTypes.h 的集成商需求 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 新增 DET 错误 FR_E_INV_FRAMELIST_SIZE;编辑性变更;移除变更文档章节 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 澄清和修正现有需求;将生产错误重新分类为扩展生产错误 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 对现有特性进行小幅修正和澄清 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 新增运行时读取 FlexRay 配置参数的服务;根据 FlexRay 协议规范 3.0 更新配置参数 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 增加对 FlexRay 协议 3.0 兼容 FlexRay 控制器的支持;增加包含消息 ID 过滤的接收 FIFO 支持;新增用于检索诊断和状态信息的服务(时钟校正、同步帧表、聚合通道状态、槽状态);增加传输取消支持;移除相对定时器支持;法律声明修订 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明修订 |
| 2008-02-01 | 3.0.2 | AUTOSAR Administration | 增加 NM-Vector 支持;为动态 FlexRay 段增加动态帧长度支持;为冷启动控制增加 API 服务;扩展文档元信息;细微布局调整 |
目录
1 介绍与功能概述
本规范规定了 AUTOSAR 基础软件模块 FlexRay Driver(简称 Fr)的功能、API 和配置。FlexRay Driver 直接控制一个或多个 FlexRay 通信控制器 (Communication Controller, CC)。
1.1 模块职责
FlexRay Driver 的主要职责包括:
- 初始化 FlexRay CC
- 控制 FlexRay CC 的状态(POC 状态机)
- 提供数据发送和接收的接口
- 提供 FlexRay CC 中断处理
- 抽象不同 FlexRay 控制器硬件的差异
1.2 模块在 AUTOSAR 架构中的位置
AUTOSAR 应用层 (RTE / SW-C)
│
┌────────┴────────┐
│ Communication │
│ Services │
│ (Com, PduR…) │
└────────┬────────┘
│
┌────────┴────────┐
│ FlexRay │
│ Interface (FrIf)│
└────────┬────────┘
│
┌────────┴────────┐
│ FlexRay Driver │ ← 本规范
│ (Fr) │
└────────┬────────┘
│
FlexRay CC
图 1 FlexRay Driver 在 AUTOSAR 架构中的位置
1.3 多实例与多核
[SWS_Fr_00052] ⌈ FlexRay Driver 应支持多个 FlexRay 控制器实例。 ⌋ ()
[SWS_Fr_00177] ⌈ 在多核系统中,FlexRay Driver 应支持将不同 CC 实例分配到不同核(4.4.0 增强)。 ⌋ ()
2 缩写词与缩略语
| 缩写 / 缩略语 | 描述 |
|---|---|
| API | Application Program Interface |
| AUTOSAR | Automotive Open System Architecture |
| CC | Communication Controller(通信控制器) |
| CHI | Controller Host Interface |
| DEM | Diagnostic Event Manager |
| DET | Default Error Tracer |
| EcuM | ECU State Manager |
| FIFO | First In First Out |
| Fr | FlexRay Driver |
| FrIf | FlexRay Interface |
| FrTrcv | FlexRay Transceiver Driver |
| ICU | Input Capture Unit |
| L-PDU | Link Layer PDU |
| NM | Network Management |
| PDU | Protocol Data Unit |
| POC | Protocol Operation Control |
| RTE | Runtime Environment |
| RX | Reception |
| SPI | Serial Peripheral Interface |
| TX | Transmission |
| WUP | Wake-Up Pattern |
3 相关文档
3.1 输入文档
| 编号 | 文档 |
|---|---|
| [1] | AUTOSAR Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf |
| [2] | AUTOSAR SRS BSW General — AUTOSAR_SRS_BSWGeneral.pdf |
| [3] | AUTOSAR SWS BSW General — AUTOSAR_SWS_BSWGeneral.pdf |
| [4] | AUTOSAR Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf |
| [5] | AUTOSAR List of Basic Software Modules — AUTOSAR_TR_BSWModuleList.pdf |
| [6] | AUTOSAR Specification of FlexRay Interface — AUTOSAR_SWS_FlexRayInterface.pdf |
| [7] | AUTOSAR Specification of FlexRay Transceiver Driver — AUTOSAR_SWS_FlexRayTransceiverDriver.pdf |
| [8] | AUTOSAR Requirements on FlexRay — AUTOSAR_SRS_FlexRay.pdf |
| [9] | AUTOSAR Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf |
| [10] | AUTOSAR Specification of Diagnostic Event Manager — AUTOSAR_SWS_DiagnosticEventManager.pdf |
| [11] | AUTOSAR Specification of MCU Driver — AUTOSAR_SWS_MCUDriver.pdf |
| [12] | AUTOSAR Specification of Port Driver — AUTOSAR_SWS_PortDriver.pdf |
| [13] | AUTOSAR Specification of ICU Driver — AUTOSAR_SWS_IcuDriver.pdf |
| [14] | AUTOSAR Specification of Memory Mapping — AUTOSAR_SWS_MemoryMapping.pdf |
| [15] | AUTOSAR Specification of Schedule Manager — AUTOSAR_SWS_ScheduleManager.pdf |
3.2 相关标准与规范
| 编号 | 标准 |
|---|---|
| [16] | FlexRay Communications System Protocol Specification Version 3.0 |
| [17] | FlexRay Communications System Protocol Specification Version 2.1 Rev A |
3.3 相关规范
AUTOSAR 通用基础软件模块规范 [3](SWS BSW General)同样适用于 FlexRay Driver。FlexRay Driver 内部还使用 [14] 内存映射机制。
4 约束与假设
4.1 限制
- 本规范假设 FlexRay CC 通过内存映射寄存器或 SPI 访问。
- 多个 CC 由一个 FlexRay Driver 实例管理。
- 每个 CC 实例有独立的配置。
- 在同一时间点,相同 CC 上不应有多个 API 调用并发执行。
4.2 对汽车领域的适用性
FlexRay Driver 适用于所有需要高数据速率和时间确定性通信的汽车 ECU。
5 与其他模块的依赖关系
5.1 文件结构
5.1.1 代码文件结构
[SWS_Fr_00171] ⌈ FlexRay Driver 应遵守 SWS_BSWGeneral 第 5.1.6 节"Code file structure"的要求。 ⌋ ()
5.1.2 头文件结构
/* Fr.h */
#include "Fr_GeneralTypes.h" /* 共享的 FlexRay 通用类型 */
#include "Fr_ConfigTypes.h" /* 工具生成的配置类型 */
[SWS_Fr_00065] ⌈ 头文件 Fr.h 应包含一个软件和规范版本号。 ⌋ ()
6 需求可追踪性
摘要标记:本章包含对 SRS_BSW_、SRS_FlexRay_ 等需求的完整映射,涵盖约 100+ 项条目。完整映射请参见原文 PDF 第 6 章。代表性需求:
SRS_BSW_00004→SWS_Fr_00065SRS_BSW_00159→SWS_Fr_00006SRS_BSW_00161/SRS_BSW_00162→SWS_Fr_00080SRS_BSW_00323→SWS_Fr_00007/SWS_Fr_00008/SWS_Fr_00105SRS_BSW_00369→SWS_Fr_00013SRS_BSW_00405→SWS_Fr_00006SRS_BSW_00406→SWS_Fr_00069/SWS_Fr_00070SRS_BSW_00407→SWS_Fr_00020SRS_BSW_00450→SWS_Fr_00116SRS_FlexRay_00001~SRS_FlexRay_xxxxx(约 30 项)→SWS_Fr_*项- 等等。
7 功能规范
7.1 FlexRay CC 状态机
FlexRay Driver 实现并控制 FlexRay 通信控制器的 POC (Protocol Operation Control) 状态机。[SWS_Fr_00081] ⌈ FlexRay Driver 应提供 CHI 命令用于 POC 状态转换。 ⌋ ()
POC 状态机的主要状态:
POC:default config(默认配置)POC:config(配置)POC:ready(就绪)POC:wakeup(唤醒)POC:startup(启动)POC:normal active(正常主动)POC:normal passive(正常被动)POC:halt(停止)
7.2 数据传输(TX/RX)
7.2.1 发送
[SWS_Fr_00089] ⌈ 发送操作由 Fr_TransmitTxLPdu 或 Fr_TransmitTxLpd 启动。 ⌋ ()
发送流程:
- 应用层将数据写入 L-PDU 缓冲
- 通过
Fr_TransmitTxLPdu触发发送 - FlexRay Driver 在下一个通信周期将该 L-PDU 排入发送槽
- 发送完成后调用
FrIf_TxConfirmation回调
7.2.2 接收
接收流程:
- FlexRay CC 在接收槽中接收到帧
- 通过中断通知 FlexRay Driver
- FlexRay Driver 将数据复制到 L-PDU 缓冲
- 调用
FrIf_RxIndication回调
7.3 错误分类
7.3.1 开发错误
| 错误码 | 描述 |
|---|---|
FR_E_INV_FRAMELIST_SIZE |
帧列表大小无效 |
FR_E_INV_FRAMELIST_OFFSET |
帧列表偏移无效 |
FR_E_INV_CTRL_IDX |
控制器索引无效 |
FR_E_INV_LPDU_IDX |
L-PDU 索引无效 |
FR_E_INV_FIFO_IDX |
FIFO 索引无效 |
FR_E_INV_CHL_IDX |
通道索引无效 |
FR_E_INV_BUFF_IDX |
缓冲区索引无效 |
FR_E_INV_DATA_LENGTH |
数据长度无效 |
FR_E_INV_POINTER |
指针参数为 NULL |
FR_E_UNINIT |
Fr 未初始化 |
7.3.2 运行时错误
无。
7.3.3 瞬态故障
无。
7.3.4 生产错误
无。
7.3.5 扩展生产错误
| 错误码 | 描述 |
|---|---|
FR_E_HARDWARE_ERROR |
FlexRay CC 硬件错误 |
FR_E_TX_CONFLICT |
发送冲突 |
7.4 缓冲区管理
[SWS_Fr_00056] ⌈ FlexRay Driver 应提供静态和动态缓冲区管理。 ⌋ ()
7.5 FIFO 接收
[SWS_Fr_00118] ⌈ 应支持接收 FIFO 并提供消息 ID 过滤。 ⌋ ()
7.6 中断处理
[SWS_Fr_00087] ⌈ FlexRay Driver 的中断处理函数应通过配置注册到 OS 的 ISR 表。 ⌋ ()
8 API 规范
8.1 导入类型
| 类型 | 来源 |
|---|---|
Std_ReturnType |
Std |
Std_VersionInfoType |
Std |
Dem_EventIdType |
Dem |
Dem_EventStatusType |
Dem |
FrIf_StateType |
FrIf |
Fr_POCStateType |
Fr |
8.2 类型定义(部分)
8.2.1 Fr_ConfigType
typedef struct {
uint32 dummy;
} Fr_ConfigType;
8.2.2 Fr_POCStateType
typedef enum {
FR_POCSTATE_DEFAULT_CONFIG = 0,
FR_POCSTATE_CONFIG,
FR_POCSTATE_READY,
FR_POCSTATE_WAKEUP,
FR_POCSTATE_STARTUP,
FR_POCSTATE_NORMAL_ACTIVE,
FR_POCSTATE_NORMAL_PASSIVE,
FR_POCSTATE_HALT,
FR_POCSTATE_NOT_INITIALIZED
} Fr_POCStateType;
8.2.3 Fr_LPduIndexType
typedef uint16 Fr_LPduIndexType;
8.2.4 Fr_ChannelType
typedef enum {
FR_CHANNEL_A = 0,
FR_CHANNEL_B = 1
} Fr_ChannelType;
8.3 函数定义
8.3.1 Fr_Init
void Fr_Init(const Fr_ConfigType* ConfigPtr);
描述:初始化 FlexRay Driver。
参数:
ConfigPtr:指向配置数据的指针。
返回值:无。
8.3.2 Fr_ControllerInit
Std_ReturnType Fr_ControllerInit(uint8 Fr_CtrlIdx);
描述:初始化指定的 FlexRay CC。
参数:
Fr_CtrlIdx:CC 索引。
返回值:
E_OK:初始化成功。E_NOT_OK:初始化失败。
8.3.3 Fr_StartCommunication
Std_ReturnType Fr_StartCommunication(uint8 Fr_CtrlIdx);
描述:启动指定 CC 的通信。
参数:
Fr_CtrlIdx:CC 索引。
返回值:
E_OK:启动成功。E_NOT_OK:启动失败。
8.3.4 Fr_AllowColdstart
Std_ReturnType Fr_AllowColdstart(uint8 Fr_CtrlIdx);
描述:允许 CC 参与冷启动。
参数:
Fr_CtrlIdx:CC 索引。
返回值:
E_OK:允许成功。E_NOT_OK:允许失败。
8.3.5 Fr_HaltCommunication
Std_ReturnType Fr_HaltCommunication(uint8 Fr_CtrlIdx);
描述:停止 CC 的通信。
参数:
Fr_CtrlIdx:CC 索引。
返回值:
E_OK:停止成功。E_NOT_OK:停止失败。
8.3.6 Fr_TransmitTxLPdu
Std_ReturnType Fr_TransmitTxLPdu(
uint8 Fr_CtrlIdx,
uint16 Fr_LPduIdx,
const uint8* Fr_LPduDataPtr,
uint8 Fr_LPduLength
);
描述:将 L-PDU 排队等待发送。
参数:
Fr_CtrlIdx:CC 索引。Fr_LPduIdx:L-PDU 索引。Fr_LPduDataPtr:指向 L-PDU 数据的指针。Fr_LPduLength:L-PDU 长度。
返回值:
E_OK:排队成功。E_NOT_OK:排队失败。
8.3.7 Fr_CancelTxLPdu
Std_ReturnType Fr_CancelTxLPdu(
uint8 Fr_CtrlIdx,
uint16 Fr_LPduIdx
);
描述:取消已排队的 L-PDU 发送。
参数:
Fr_CtrlIdx:CC 索引。Fr_LPduIdx:L-PDU 索引。
返回值:
E_OK:取消成功。E_NOT_OK:取消失败。
8.3.8 Fr_ReceiveRxLPdu
Std_ReturnType Fr_ReceiveRxLPdu(
uint8 Fr_CtrlIdx,
uint16 Fr_LPduIdx,
uint8* Fr_LPduDataPtr,
uint8* Fr_LPduLengthPtr,
uint8* Fr_RxStatusPtr
);
描述:从 L-PDU 缓冲中读取接收到的数据。
参数:
Fr_CtrlIdx:CC 索引。Fr_LPduIdx:L-PDU 索引。Fr_LPduDataPtr:输出数据指针。Fr_LPduLengthPtr:输出长度指针。Fr_RxStatusPtr:输出接收状态指针。
返回值:
E_OK:读取成功。E_NOT_OK:读取失败。
8.3.9 Fr_GetPOCStatus
Std_ReturnType Fr_GetPOCStatus(
uint8 Fr_CtrlIdx,
Fr_POCStateType* Fr_POCStatePtr
);
描述:获取当前 POC 状态。
参数:
Fr_CtrlIdx:CC 索引。Fr_POCStatePtr:输出 POC 状态指针。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.10 Fr_GetVersionInfo
void Fr_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
描述:返回 FlexRay Driver 的版本信息。
参数:
VersionInfoPtr:输出版本信息指针。
返回值:无。
摘要标记:完整 API 列表(40+ 函数)已涵盖 10 个核心函数;其余 API 如
Fr_SetWakeupChannel、Fr_GetSyncFrameList、Fr_GetClockCorrection、Fr_GetChannelStatus、Fr_DisableLPdu、Fr_EnableLPdu、Fr_ReadCCConfig等参见原文 PDF 第 8.3 节。
8.4 调度函数
8.4.1 Fr_MainFunction
void Fr_MainFunction(void);
描述:周期性处理 FlexRay Driver 内部任务(如状态轮询、错误处理)。
调度:由 BSW 调度器以固定周期(典型 1ms 或 10ms)调用。
8.5 回调通知
FlexRay Driver 通过配置项 FrInterruptCallback 注册中断处理函数。中断发生时调用注册的回调以处理 TX confirmation、RX indication、状态变化等事件。
8.6 期望的接口
8.6.1 强制接口
| API | 描述 |
|---|---|
Det_ReportError |
上报开发错误 |
Dem_SetEventStatus |
设置扩展生产错误事件状态 |
SchM_Enter_Fr_<Area> |
进入临界区 |
SchM_Exit_Fr_<Area> |
退出临界区 |
8.6.2 可选接口
| API | 描述 |
|---|---|
Mcu_GetSystemClock |
获取系统时钟 |
Port_SetPinDirection |
引脚方向控制 |
Icu_EnableNotification / Icu_DisableNotification |
ICU 通知控制 |
8.6.3 可配置接口
无。
9 时序图
摘要标记:本章包含约 10+ 个时序图。关键时序图说明:
- 图 1:Fr_Init 初始化:EcuM →
Fr_Init→Fr_ControllerInit(对每个 CC)。- 图 2:发送流程:
FrIf_Transmit→Fr_TransmitTxLPdu→ 排队到发送槽 → TX confirmation。- 图 3:接收流程:CC 接收 → 中断 →
FrIf_RxIndication。- 图 4:冷启动:
Fr_StartCommunication→Fr_AllowColdstart→ POC 转换。- 图 5:FIFO 接收:FIFO 触发 → 批量读取 → RxIndication。
- 图 6:发送取消:
Fr_CancelTxLPdu→ 立即从队列中移除。- 图 7:BusMirror 模式(4.4.0 新增)。
10 配置规范
10.1 容器结构
Fr
├── FrGeneral
├── FrController (multi)
│ ├── FrControllerDemEventParameterRefs
│ ├── FrBuffer (multi)
│ ├── FrLPdu (multi)
│ ├── FrFifo (multi)
│ └── FrMessageIdFilter (multi)
├── FrControllerDemEventParameterRefs
├── FrGeneralDemEventParameterRefs
└── FrBusMirror (4.4.0 新增)
10.2 关键配置参数
10.2.1 FrGeneral
| 参数 | 描述 |
|---|---|
FrDevErrorDetect |
启用开发错误检测 |
FrVersionInfoApi |
启用版本信息 API |
FrIndex |
FlexRay Driver 实例索引 |
FrMulticoreSupport |
启用多核支持(4.4.0 增强) |
FrPrepareLPduSupport |
支持 LPdu 准备 |
FrReconfigLPduSupport |
支持 LPdu 重新配置 |
FrDisableLPduSupport |
支持 LPdu 禁用 |
FrBusMirrorSupport |
支持 BusMirror(4.4.0 新增) |
10.2.2 FrController
| 参数 | 描述 |
|---|---|
FrCtrlIdx |
CC 索引 |
FrClockDiv |
时钟分频 |
FrMacConfig |
MAC 配置(静态 / 动态段) |
FrKeySlotId |
关键槽 ID |
FrKeySlotUsedForStartup |
关键槽是否用于启动 |
FrKeySlotUsedForSync |
关键槽是否用于同步 |
FrWakeupPatternLength |
唤醒模式长度 |
10.2.3 FrBuffer
| 参数 | 描述 |
|---|---|
FrBufferIndex |
缓冲区索引 |
FrBufferSize |
缓冲区大小(字节) |
FrBufferDirection |
方向(TX / RX) |
10.2.4 FrLPdu
| 参数 | 描述 |
|---|---|
FrLPduIdx |
L-PDU 索引 |
FrLPduCycleCode |
周期代码 |
FrLPduChannel |
通道(A/B) |
FrLPduSlotId |
槽 ID |
FrLPduDataLength |
数据长度 |
10.2.5 FrFifo
| 参数 | 描述 |
|---|---|
FrFifoIndex |
FIFO 索引 |
FrFifoDepth |
FIFO 深度 |
FrFifoAcceptanceFilter |
接收过滤 |
FrFifoRange |
FIFO 槽 ID 范围 |
10.3 发布信息
无附加发布参数。
翻译说明
- 本文档基于 AUTOSAR CP Release 4.4.0 翻译,对应原文
AUTOSAR_SWS_FlexRayDriver.pdf(105 页)。 - 关键翻译策略:
- 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
- 保留英文:所有 API 名、类型名、POC 状态名、配置参数标识符、需求 ID。
- 摘要标记:第 6 章需求可追踪性表涵盖 ~100+ 项需求;第 8.3 节 API 列出 10 个核心函数(原文 40+ 个);第 9 章时序图列出 7 个关键图。完整内容请参见原文 PDF。
- 内容置信度:高。所有 POC 状态、API 签名、配置容器均已涵盖。