672 lines
20 KiB
Markdown
672 lines
20 KiB
Markdown
# 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. [介绍与功能概述](#1-介绍与功能概述)
|
||
2. [缩写词与缩略语](#2-缩写词与缩略语)
|
||
3. [相关文档](#3-相关文档)
|
||
4. [约束与假设](#4-约束与假设)
|
||
5. [与其他模块的依赖关系](#5-与其他模块的依赖关系)
|
||
6. [需求可追踪性](#6-需求可追踪性)
|
||
7. [功能规范](#7-功能规范)
|
||
8. [API 规范](#8-api-规范)
|
||
9. [时序图](#9-时序图)
|
||
10. [配置规范](#10-配置规范)
|
||
|
||
---
|
||
|
||
## 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 头文件结构
|
||
|
||
```c
|
||
/* 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_00065`
|
||
> - `SRS_BSW_00159` → `SWS_Fr_00006`
|
||
> - `SRS_BSW_00161` / `SRS_BSW_00162` → `SWS_Fr_00080`
|
||
> - `SRS_BSW_00323` → `SWS_Fr_00007` / `SWS_Fr_00008` / `SWS_Fr_00105`
|
||
> - `SRS_BSW_00369` → `SWS_Fr_00013`
|
||
> - `SRS_BSW_00405` → `SWS_Fr_00006`
|
||
> - `SRS_BSW_00406` → `SWS_Fr_00069` / `SWS_Fr_00070`
|
||
> - `SRS_BSW_00407` → `SWS_Fr_00020`
|
||
> - `SRS_BSW_00450` → `SWS_Fr_00116`
|
||
> - `SRS_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` 启动。 ⌋ ()
|
||
|
||
发送流程:
|
||
1. 应用层将数据写入 L-PDU 缓冲
|
||
2. 通过 `Fr_TransmitTxLPdu` 触发发送
|
||
3. FlexRay Driver 在下一个通信周期将该 L-PDU 排入发送槽
|
||
4. 发送完成后调用 `FrIf_TxConfirmation` 回调
|
||
|
||
#### 7.2.2 接收
|
||
|
||
接收流程:
|
||
1. FlexRay CC 在接收槽中接收到帧
|
||
2. 通过中断通知 FlexRay Driver
|
||
3. FlexRay Driver 将数据复制到 L-PDU 缓冲
|
||
4. 调用 `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`
|
||
|
||
```c
|
||
typedef struct {
|
||
uint32 dummy;
|
||
} Fr_ConfigType;
|
||
```
|
||
|
||
#### 8.2.2 `Fr_POCStateType`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
typedef uint16 Fr_LPduIndexType;
|
||
```
|
||
|
||
#### 8.2.4 `Fr_ChannelType`
|
||
|
||
```c
|
||
typedef enum {
|
||
FR_CHANNEL_A = 0,
|
||
FR_CHANNEL_B = 1
|
||
} Fr_ChannelType;
|
||
```
|
||
|
||
### 8.3 函数定义
|
||
|
||
#### 8.3.1 `Fr_Init`
|
||
|
||
```c
|
||
void Fr_Init(const Fr_ConfigType* ConfigPtr);
|
||
```
|
||
|
||
**描述**:初始化 FlexRay Driver。
|
||
|
||
**参数**:
|
||
- `ConfigPtr`:指向配置数据的指针。
|
||
|
||
**返回值**:无。
|
||
|
||
#### 8.3.2 `Fr_ControllerInit`
|
||
|
||
```c
|
||
Std_ReturnType Fr_ControllerInit(uint8 Fr_CtrlIdx);
|
||
```
|
||
|
||
**描述**:初始化指定的 FlexRay CC。
|
||
|
||
**参数**:
|
||
- `Fr_CtrlIdx`:CC 索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:初始化成功。
|
||
- `E_NOT_OK`:初始化失败。
|
||
|
||
#### 8.3.3 `Fr_StartCommunication`
|
||
|
||
```c
|
||
Std_ReturnType Fr_StartCommunication(uint8 Fr_CtrlIdx);
|
||
```
|
||
|
||
**描述**:启动指定 CC 的通信。
|
||
|
||
**参数**:
|
||
- `Fr_CtrlIdx`:CC 索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:启动成功。
|
||
- `E_NOT_OK`:启动失败。
|
||
|
||
#### 8.3.4 `Fr_AllowColdstart`
|
||
|
||
```c
|
||
Std_ReturnType Fr_AllowColdstart(uint8 Fr_CtrlIdx);
|
||
```
|
||
|
||
**描述**:允许 CC 参与冷启动。
|
||
|
||
**参数**:
|
||
- `Fr_CtrlIdx`:CC 索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:允许成功。
|
||
- `E_NOT_OK`:允许失败。
|
||
|
||
#### 8.3.5 `Fr_HaltCommunication`
|
||
|
||
```c
|
||
Std_ReturnType Fr_HaltCommunication(uint8 Fr_CtrlIdx);
|
||
```
|
||
|
||
**描述**:停止 CC 的通信。
|
||
|
||
**参数**:
|
||
- `Fr_CtrlIdx`:CC 索引。
|
||
|
||
**返回值**:
|
||
- `E_OK`:停止成功。
|
||
- `E_NOT_OK`:停止失败。
|
||
|
||
#### 8.3.6 `Fr_TransmitTxLPdu`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
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`
|
||
|
||
```c
|
||
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 签名、配置容器均已涵盖。
|