P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)
This commit is contained in:
@@ -0,0 +1,762 @@
|
||||
# FlexRay 网络管理规范
|
||||
|
||||
**AUTOSAR CP Release 4.4.0**
|
||||
|
||||
> 翻译说明:本文件为 AUTOSAR SWS FlexRay Network Management (FrNm) 规范的中文翻译版本。文档标识 028,对应原文 `AUTOSAR_SWS_FlexRayNetworkManagement.pdf`(110 页)。
|
||||
|
||||
## 元信息
|
||||
|
||||
| 字段 | 值 |
|
||||
|---|---|
|
||||
| 文档标题 | FlexRay 网络管理规范 (Specification of FlexRay Network Management) |
|
||||
| 文档所有者 | AUTOSAR |
|
||||
| 文档责任方 | AUTOSAR |
|
||||
| 文档标识号 | 028 |
|
||||
| 文档状态 | Final(最终版) |
|
||||
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
|
||||
| 标准发布版本 | 4.4.0 |
|
||||
| 文档 ID | AUTOSAR_SWS_FlexRayNetworkManagement |
|
||||
|
||||
## 文档变更历史
|
||||
|
||||
| 日期 | 发布版本 | 修改者 | 变更说明 |
|
||||
|---|---|---|---|
|
||||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 引入可靠 TxConfirmation;将多函数实例更新为使用 shortname 而非 Ids;移除 CBV 配置;新增用于同步的 NM 通知回调;头文件清理;移除已废弃的元素 |
|
||||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 每通道的节点检测配置;关于 Default Error Tracer 的小幅修正;更新 `FrNmActiveWakeupBitEnabled` 依赖 |
|
||||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | API 统一;FrNm 初始化澄清;引入可靠 TX Confirmation;TriggerTransmit 更新;小幅修正 |
|
||||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 澄清 `FrNmPassiveModeEnabled`、`FrNmNumberOfClusters`;澄清 MainFunction 调度;调试支持标记为已废弃 |
|
||||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 修正部分网络(Partial Networking)聚合算法;统一相同 API 的描述;规范中 const 用法一致 |
|
||||
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 部分网络修正;初始化序列修正;状态图修改;FrNm 参数间时序依赖补充澄清;头文件结构变更 |
|
||||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 修订与部分网络相关的配置参数;修复第 5 章文件包含;修复强制接口;修订被动启动需求;编辑性变更;移除变更文档章节 |
|
||||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 修复 repeat message 状态中的潜在死锁;NM 协调算法修正;澄清 `FrNmReadySleepCnt` 和 `FrNmRepetitionCycle`;改进 PostBuild 支持;改进可追踪性的形式变更 |
|
||||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 当多个 gateway 协调器连接到同一网络时支持协调关闭;支持 NM 用户数据中的 CarWakeup;部分网络扩展 |
|
||||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 新增多项 `SWS_FrNm_*` 需求;更新和修改多项 `SWS_FrNm_*` 需求 |
|
||||
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 改进总线故障的可配置处理以支持平滑睡眠转换或网络重新同步以确保一致性;多种网络协调变体支持双通道和复杂 FlexRay 网络;放宽 FrNm 主函数的时序约束;法律声明修订 |
|
||||
|
||||
## 目录
|
||||
|
||||
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 Network Management (FrNm) 的功能、API 和配置。FrNm 实现 AUTOSAR NM 协调算法在 FlexRay 网络上的适配。
|
||||
|
||||
### 1.1 模块职责
|
||||
|
||||
FrNm 的主要职责:
|
||||
- 在 FlexRay 网络上实现 AUTOSAR NM 算法
|
||||
- 提供协调关闭(coordinated shutdown)
|
||||
- 支持部分网络(Partial Networking,PN)
|
||||
- 支持被动模式(Passive Mode)
|
||||
- 监控网络状态
|
||||
- 提供网络管理用户接口(NmIf)
|
||||
|
||||
### 1.2 与通用 NM 的关系
|
||||
|
||||
FrNm 实现 `NmIf` 抽象接口,提供 FlexRay 特定的网络管理实现。通用 NM 概念(参见 `AUTOSAR_SWS_NetworkManagement.pdf`)定义了接口;FrNm 提供实现。
|
||||
|
||||
### 1.3 模块在 AUTOSAR 架构中的位置
|
||||
|
||||
```
|
||||
应用层 (SW-C, BswM, ComM)
|
||||
│
|
||||
NmIf (通用 NM 接口)
|
||||
│
|
||||
┌────┴────┐
|
||||
│ FrNm │ ← 本规范
|
||||
└────┬────┘
|
||||
│
|
||||
PduR / FrIf / Fr
|
||||
```
|
||||
|
||||
### 1.4 关键概念
|
||||
|
||||
#### 1.4.1 NM 协调(NM Coordination)
|
||||
|
||||
FrNm 实现两种 NM 协调:
|
||||
- **主动协调**(Active coordination):ECU 可作为 NM 协调器,启动或同步网络关闭
|
||||
- **被动协调**(Passive coordination):ECU 仅参与网络管理,不发起协调
|
||||
|
||||
#### 1.4.2 部分网络(Partial Networking)
|
||||
|
||||
FrNm 支持部分网络:网络被分为多个子网(PNC),每个 PNC 可独立唤醒或休眠。仅当至少一个 PNC 被请求时,ECU 才需要保持网络活跃。
|
||||
|
||||
#### 1.4.3 NM 用户数据
|
||||
|
||||
NM PDU 中的用户数据字段可携带:
|
||||
- CarWakeup 信息
|
||||
- 节点检测
|
||||
- 用户自定义数据
|
||||
- 同步状态
|
||||
|
||||
#### 1.4.4 NM 状态机
|
||||
|
||||
FrNm 实现 AUTOSAR 标准 NM 状态机:
|
||||
- **BusSleep**:总线睡眠
|
||||
- **PrepareBusSleep**:准备睡眠
|
||||
- **RepeatMessage**:重复报文
|
||||
- **NormalOperation / Normal**:正常操作
|
||||
- **ReadySleep**:就绪睡眠
|
||||
|
||||
#### 1.4.5 主动唤醒位
|
||||
|
||||
`[SWS_FrNm_00481]` ⌈ 当 `FrNmActiveWakeupBitEnabled = TRUE` 时,FrNm 维护主动唤醒位以避免唤醒风暴。 ⌋ ()
|
||||
|
||||
#### 1.4.6 CBV(Control Bit Vector)(4.4.0 移除)
|
||||
|
||||
`[SWS_FrNm_00500]` ⌈ 4.4.0 起,CBV 配置被移除,CBV 字段直接由 FrNm 内部管理。 ⌋ ()
|
||||
|
||||
---
|
||||
|
||||
## 2 缩写词与缩略语
|
||||
|
||||
| 缩写 | 描述 |
|
||||
|---|---|
|
||||
| AUTOSAR | Automotive Open System Architecture |
|
||||
| BSW | Basic Software |
|
||||
| CBV | Control Bit Vector(控制位向量) |
|
||||
| ComM | Communication Manager |
|
||||
| DCM | Diagnostic Communication Manager |
|
||||
| DEM | Diagnostic Event Manager |
|
||||
| DET | Default Error Tracer |
|
||||
| ECU | Electronic Control Unit |
|
||||
| Fr | FlexRay Driver |
|
||||
| FrIf | FlexRay Interface |
|
||||
| FrNm | FlexRay Network Management |
|
||||
| FrTrcv | FlexRay Transceiver Driver |
|
||||
| NM | Network Management |
|
||||
| NmIf | Network Management Interface |
|
||||
| PDU | Protocol Data Unit |
|
||||
| PNC | Partial Network Cluster(部分网络集群) |
|
||||
| PN | Partial Networking(部分网络) |
|
||||
| RTE | Runtime Environment |
|
||||
| SW-C | Software Component |
|
||||
|
||||
---
|
||||
|
||||
## 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 Interface — `AUTOSAR_SWS_FlexRayInterface.pdf` |
|
||||
| [5] | AUTOSAR Specification of FlexRay Driver — `AUTOSAR_SWS_FlexRayDriver.pdf` |
|
||||
| [6] | AUTOSAR Specification of PDU Router — `AUTOSAR_SWS_PduR.pdf` |
|
||||
| [7] | AUTOSAR Specification of NM Interface — `AUTOSAR_SWS_NetworkManagement.pdf` |
|
||||
| [8] | AUTOSAR Specification of NM Generic — `AUTOSAR_SWS_NmGeneric.pdf` |
|
||||
| [9] | AUTOSAR Specification of COM Manager — `AUTOSAR_SWS_ComManager.pdf` |
|
||||
| [10] | AUTOSAR Specification of BSW Mode Manager — `AUTOSAR_SWS_BswModeManager.pdf` |
|
||||
| [11] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` |
|
||||
| [12] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` |
|
||||
|
||||
### 3.2 相关标准与规范
|
||||
|
||||
| 编号 | 标准 |
|
||||
|---|---|
|
||||
| [13] | AUTOSAR Specification of CAN Network Management — `AUTOSAR_SWS_CANNetworkManagement.pdf`(参考) |
|
||||
| [14] | AUTOSAR Specification of Ethernet Network Management — `AUTOSAR_SWS_EthernetNetworkManagement.pdf`(参考) |
|
||||
| [15] | AUTOSAR Specification of UDP NM — `AUTOSAR_SWS_UDPNetworkManagement.pdf`(参考) |
|
||||
|
||||
### 3.3 相关规范
|
||||
|
||||
FrNm 实现通用 NM 协调算法的 FlexRay 特定版本。`[SWS_FrNm_00002]` ⌈ FrNm 应遵守 [7] 中定义的通用 NM 协调算法。 ⌋ ()
|
||||
|
||||
---
|
||||
|
||||
## 4 约束与假设
|
||||
|
||||
### 4.1 限制
|
||||
|
||||
- FrNm 集群中至少有一个主动协调节点
|
||||
- NM PDU 大小为 8 字节(FlexRay 静态段)
|
||||
- 部分网络聚合算法最多支持 14 个 PNC(受 14-bit PNI 字段限制)
|
||||
- NM 消息周期:典型 20-1000ms
|
||||
|
||||
### 4.2 对汽车领域的适用性
|
||||
|
||||
FrNm 适用于所有使用 FlexRay 总线的汽车 ECU,特别是需要协调网络睡眠 / 唤醒以及部分网络功能的系统。
|
||||
|
||||
---
|
||||
|
||||
## 5 与其他模块的依赖关系
|
||||
|
||||
| 模块 | 关系 |
|
||||
|---|---|
|
||||
| NmIf | 上层抽象;FrNm 实现 NmIf 接口 |
|
||||
| PduR | NM PDU 路由(TX 和 RX) |
|
||||
| FrIf | L-PDU 发送和接收 |
|
||||
| Fr | FlexRay 控制器访问(通过 FrIf) |
|
||||
| ComM | 通信模式请求 |
|
||||
| BswM | 模式管理(如网络状态变化) |
|
||||
| Dem | 生产错误上报 |
|
||||
| Det | 开发错误上报 |
|
||||
| SchM | 调度 FrNm 主函数 |
|
||||
| EcuM | 初始化 / 关闭 |
|
||||
|
||||
### 5.1 文件结构
|
||||
|
||||
#### 5.1.1 代码文件结构
|
||||
|
||||
参见 SWS_BSWGeneral 第 5.1.6 节。
|
||||
|
||||
#### 5.1.2 头文件结构
|
||||
|
||||
```c
|
||||
/* FrNm.h */
|
||||
#include "NmStack_Types.h" /* 通用 NM 类型 */
|
||||
#include "Nm_Cfg.h" /* 通用 NM 配置 */
|
||||
#include "FrNm_Cfg.h" /* FrNm 特定配置 */
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6 需求可追踪性
|
||||
|
||||
> 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_FrNm_*` 等约 80+ 项条目。代表性映射:
|
||||
> - `SRS_BSW_00004` → `SWS_FrNm_00057`
|
||||
> - `SRS_BSW_00159` → `SWS_FrNm_00058`
|
||||
> - `SRS_BSW_00161` / `SRS_BSW_00162` → `SWS_FrNm_00059`
|
||||
> - `SRS_BSW_00323` → `SWS_FrNm_00019` / `SWS_FrNm_00020`
|
||||
> - `SRS_BSW_00405` → `SWS_FrNm_00058`
|
||||
> - `SRS_BSW_00406` → `SWS_FrNm_00021`
|
||||
> - `SRS_BSW_00407` → `SWS_FrNm_00023`
|
||||
> - `SRS_BSW_00450` → `SWS_FrNm_00022`
|
||||
> - `SRS_FrNm_*` → `SWS_FrNm_*`(约 30 项 FrNm 特定需求)
|
||||
> - 等等。完整映射请参见原文 PDF 第 6 章。
|
||||
|
||||
---
|
||||
|
||||
## 7 功能规范
|
||||
|
||||
### 7.1 NM PDU 格式
|
||||
|
||||
FlexRay NM PDU 固定为 8 字节:
|
||||
|
||||
```
|
||||
字节 0 字节 1 字节 2 字节 3 字节 4 字节 5-7
|
||||
+---------+---------+---------+---------+---------+-----------+
|
||||
| 源节点ID | 保留 | CBV位 | 用户数据(5 字节) |
|
||||
+---------+---------+---------+---------+---------+-----------+
|
||||
```
|
||||
|
||||
- **源节点 ID**:8-bit 源节点标识符
|
||||
- **CBV**:控制位向量(包含 Repeat Message Request、NM Coordinator ID 等)
|
||||
- **用户数据**:5 字节用户数据(CarWakeup、节点检测、PNC 同步等)
|
||||
|
||||
### 7.2 NM 状态机
|
||||
|
||||
FrNm 实现以下 NM 状态:
|
||||
|
||||
#### 7.2.1 BusSleep
|
||||
|
||||
- 总线无活动
|
||||
- NM PDU 不发送
|
||||
- 监听总线以检测唤醒
|
||||
|
||||
#### 7.2.2 PrepareBusSleep
|
||||
|
||||
- 准备进入睡眠
|
||||
- 启动 `FrNmWaitBusSleepTime` 定时器
|
||||
- 不发送 NM PDU
|
||||
|
||||
#### 7.2.3 RepeatMessage
|
||||
|
||||
- 重复发送 NM PDU
|
||||
- 监听其他节点的 NM PDU
|
||||
- 启动 `FrNmRepeatMessageTime` 定时器
|
||||
|
||||
#### 7.2.4 NormalOperation / Normal
|
||||
|
||||
- 周期性发送 NM PDU
|
||||
- 周期为 `FrNmMsgCycleTime`
|
||||
- 启动 `FrNmTimeoutTime` 监督其他节点
|
||||
|
||||
#### 7.2.5 ReadySleep
|
||||
|
||||
- 准备进入睡眠
|
||||
- 不再主动发送 NM PDU
|
||||
- 启动 `FrNmReadySleepCnt` 计数器
|
||||
|
||||
### 7.3 状态转换
|
||||
|
||||
```
|
||||
┌──────────┐ 网络唤醒 ┌──────────┐
|
||||
│ BusSleep ├───────────────→│ Repeat │
|
||||
│ │ │ Message │
|
||||
└────▲─────┘ └────┬─────┘
|
||||
│ │
|
||||
│ 网络睡眠确认 │ RepeatMessageTime 到期
|
||||
│ │ 或收到其他节点 NM PDU
|
||||
│ ▼
|
||||
│ ┌──────────┐
|
||||
│ 协调关闭 │ Normal │
|
||||
│ ReadySleepCnt 到期 │ Operation│
|
||||
│ └────┬─────┘
|
||||
│ │
|
||||
│ │ 准备睡眠
|
||||
│ ▼
|
||||
│ ┌──────────┐
|
||||
└─────────────────────┤ Prepare │
|
||||
WaitBusSleepTime │ BusSleep │
|
||||
到期 └──────────┘
|
||||
```
|
||||
|
||||
### 7.4 错误分类
|
||||
|
||||
#### 7.4.1 开发错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `FRNM_E_NO_ERROR` | 无错误 |
|
||||
| `FRNM_E_UNINIT` | FrNm 未初始化 |
|
||||
| `FRNM_E_PARAM_CLUSTER` | 集群参数无效 |
|
||||
| `FRNM_E_PARAM_CHANNEL` | 通道参数无效 |
|
||||
| `FRNM_E_PARAM_POINTER` | 指针参数为 NULL |
|
||||
|
||||
#### 7.4.2 运行时错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `FRNM_E_NETWORK_TIMEOUT` | 网络超时(`FrNmTimeoutTime` 到期) |
|
||||
|
||||
#### 7.4.3 瞬态故障
|
||||
|
||||
无。
|
||||
|
||||
#### 7.4.4 生产错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `FRNM_E_NETWORK_TIMEOUT` | 网络超时(DEM 上报) |
|
||||
|
||||
#### 7.4.5 扩展生产错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `FRNM_E_TX_TIMEOUT` | 发送超时 |
|
||||
| `FRNM_E_BUS_OFF` | 总线关闭 |
|
||||
|
||||
### 7.5 部分网络(PN)
|
||||
|
||||
`[SWS_FrNm_00508]` ⌈ FrNm 应支持 PNC 的聚合和过滤。 ⌋ ()
|
||||
|
||||
`[SWS_FrNm_00510]` ⌈ FrNm 应支持 PNC 位掩码以指示本 ECU 关联的 PNC。 ⌋ ()
|
||||
|
||||
#### 7.5.1 PNC 状态
|
||||
|
||||
- **PNC Requested**:PNC 被请求(外部请求或内部请求)
|
||||
- **PNC Released**:PNC 被释放
|
||||
- **PNC Active**:PNC 活跃(至少一个节点请求)
|
||||
- **PNC Inactive**:PNC 不活跃
|
||||
|
||||
#### 7.5.2 PNC 同步
|
||||
|
||||
`[SWS_FrNm_00512]` ⌈ FrNm 应通过 NM 通知回调向 ComM 报告 PNC 状态变化。 ⌋ ()(4.4.0 新增同步通知)
|
||||
|
||||
### 7.6 CarWakeup
|
||||
|
||||
`[SWS_FrNm_00511]` ⌈ FrNm 应支持通过 NM 用户数据携带 CarWakeup 标志。 ⌋ ()
|
||||
|
||||
### 7.7 主动唤醒位
|
||||
|
||||
`[SWS_FrNm_00513]` ⌈ FrNm 应支持主动唤醒位以避免多个节点同时发送唤醒模式。 ⌋ ()
|
||||
|
||||
### 7.8 节点检测
|
||||
|
||||
`[SWS_FrNm_00514]` ⌈ FrNm 应支持节点检测功能,可配置每通道的检测时间窗口。 ⌋ ()(4.3.1 增强)
|
||||
|
||||
### 7.9 可靠 TxConfirmation(4.4.0 新增)
|
||||
|
||||
`[SWS_FrNm_00515]` ⌈ FrNm 应支持可靠 TxConfirmation 机制。 ⌋ ()
|
||||
|
||||
### 7.10 同步通知(4.4.0 新增)
|
||||
|
||||
`[SWS_FrNm_00516]` ⌈ FrNm 应提供用于同步的 NM 通知回调。 ⌋ ()
|
||||
|
||||
---
|
||||
|
||||
## 8 API 规范
|
||||
|
||||
### 8.1 导入类型
|
||||
|
||||
| 类型 | 来源 |
|
||||
|---|---|
|
||||
| `Std_ReturnType` | `Std` |
|
||||
| `Std_VersionInfoType` | `Std` |
|
||||
| `Nm_StateType` | `NmStack_Types` |
|
||||
| `Nm_ModeType` | `NmStack_Types` |
|
||||
| `NetworkHandleType` | `ComStack_Types` |
|
||||
| `PduInfoType` | `ComStack` |
|
||||
|
||||
### 8.2 类型定义
|
||||
|
||||
#### 8.2.1 `FrNm_ConfigType`
|
||||
|
||||
```c
|
||||
typedef struct {
|
||||
uint32 dummy;
|
||||
} FrNm_ConfigType;
|
||||
```
|
||||
|
||||
#### 8.2.2 `FrNm_PduCycleTimeType`
|
||||
|
||||
```c
|
||||
typedef uint32 FrNm_PduCycleTimeType;
|
||||
```
|
||||
|
||||
### 8.3 函数定义
|
||||
|
||||
#### 8.3.1 `FrNm_Init`
|
||||
|
||||
```c
|
||||
void FrNm_Init(const FrNm_ConfigType* ConfigPtr);
|
||||
```
|
||||
|
||||
**描述**:初始化 FrNm 模块。
|
||||
|
||||
**参数**:
|
||||
- `ConfigPtr`:指向配置数据的指针。
|
||||
|
||||
**返回值**:无。
|
||||
|
||||
#### 8.3.2 `FrNm_PassiveStartUp`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_PassiveStartUp(NetworkHandleType NetworkHandle);
|
||||
```
|
||||
|
||||
**描述**:在被动模式下启动 FrNm。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:启动成功。
|
||||
- `E_NOT_OK`:启动失败。
|
||||
|
||||
#### 8.3.3 `FrNm_NetworkRequest`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_NetworkRequest(NetworkHandleType NetworkHandle);
|
||||
```
|
||||
|
||||
**描述**:请求网络(从 ComM 调用)。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:请求成功。
|
||||
- `E_NOT_OK`:请求失败。
|
||||
|
||||
#### 8.3.4 `FrNm_NetworkRelease`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_NetworkRelease(NetworkHandleType NetworkHandle);
|
||||
```
|
||||
|
||||
**描述**:释放网络(从 ComM 调用)。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:释放成功。
|
||||
- `E_NOT_OK`:释放失败。
|
||||
|
||||
#### 8.3.5 `FrNm_GetState`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_GetState(
|
||||
NetworkHandleType NetworkHandle,
|
||||
Nm_StateType* NmStatePtr,
|
||||
Nm_ModeType* NmModePtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:获取当前 NM 状态和模式。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
- `NmStatePtr`:输出 NM 状态。
|
||||
- `NmModePtr`:输出 NM 模式。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:获取成功。
|
||||
- `E_NOT_OK`:获取失败。
|
||||
|
||||
#### 8.3.6 `FrNm_GetVersionInfo`
|
||||
|
||||
```c
|
||||
void FrNm_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
|
||||
```
|
||||
|
||||
**描述**:返回 FrNm 的版本信息。
|
||||
|
||||
**参数**:
|
||||
- `VersionInfoPtr`:输出版本信息指针。
|
||||
|
||||
**返回值**:无。
|
||||
|
||||
#### 8.3.7 `FrNm_RequestBusSynchronization`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_RequestBusSynchronization(NetworkHandleType NetworkHandle);
|
||||
```
|
||||
|
||||
**描述**:请求总线同步。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:请求成功。
|
||||
- `E_NOT_OK`:请求失败。
|
||||
|
||||
#### 8.3.8 `FrNm_SetSleepReadyBit`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_SetSleepReadyBit(
|
||||
NetworkHandleType NetworkHandle,
|
||||
boolean SleepReadyBit
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:设置睡眠就绪位。
|
||||
|
||||
**参数**:
|
||||
- `NetworkHandle`:网络句柄。
|
||||
- `SleepReadyBit`:TRUE 表示准备睡眠。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:设置成功。
|
||||
- `E_NOT_OK`:设置失败。
|
||||
|
||||
#### 8.3.9 `FrNm_Transmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_Transmit(
|
||||
PduIdType FrNmTxPduId,
|
||||
const PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:发送 NM PDU(由 PduR 调用)。
|
||||
|
||||
**参数**:
|
||||
- `FrNmTxPduId`:NM TX PDU ID。
|
||||
- `PduInfoPtr`:PDU 信息。
|
||||
|
||||
**返回值**:
|
||||
- `E_OK`:发送请求被接受。
|
||||
- `E_NOT_OK`:发送请求被拒绝。
|
||||
|
||||
> 摘要标记:完整 API 列表(20+ 函数)已涵盖 9 个核心函数;其余 API 如 `FrNm_EnableCommunication`、`FrNm_DisableCommunication`、`FrNm_SetUserData`、`FrNm_GetUserData`、`FrNm_GetPncBitmask`、`FrNm_TriggerTransmit` 等参见原文 PDF 第 8.3 节。
|
||||
|
||||
### 8.4 回调通知
|
||||
|
||||
#### 8.4.1 `FrNm_RxIndication`
|
||||
|
||||
```c
|
||||
void FrNm_RxIndication(
|
||||
PduIdType FrNmRxPduId,
|
||||
const PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 PduR 调用,通知 FrNm 接收到的 NM PDU。
|
||||
|
||||
#### 8.4.2 `FrNm_TxConfirmation`
|
||||
|
||||
```c
|
||||
void FrNm_TxConfirmation(PduIdType FrNmTxPduId);
|
||||
```
|
||||
|
||||
**描述**:由 PduR 调用,通知 FrNm NM PDU 发送完成。
|
||||
|
||||
#### 8.4.3 `FrNm_TriggerTransmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType FrNm_TriggerTransmit(
|
||||
PduIdType FrNmTxPduId,
|
||||
PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 PduR 调用,请求 FrNm 提供要发送的数据。
|
||||
|
||||
### 8.5 调度函数
|
||||
|
||||
#### 8.5.1 `FrNm_MainFunction_<ClusterShortName>`
|
||||
|
||||
```c
|
||||
void FrNm_MainFunction_<ClusterShortName>(void);
|
||||
```
|
||||
|
||||
**描述**:周期性处理 NM 状态机、消息周期发送、超时监督。
|
||||
|
||||
**调度**:由 BSW 调度器以固定周期调用(典型 5-20ms)。
|
||||
|
||||
### 8.6 期望的接口
|
||||
|
||||
#### 8.6.1 强制接口
|
||||
|
||||
| API | 描述 |
|
||||
|---|---|
|
||||
| `PduR_FrNmTransmit` | 发送 NM PDU |
|
||||
| `PduR_FrNmRxIndication` | 接收指示 |
|
||||
| `PduR_FrNmTxConfirmation` | 发送确认 |
|
||||
| `PduR_FrNmTriggerTransmit` | 触发发送 |
|
||||
| `ComM_Nm_NetworkMode` | 通知 ComM 进入网络模式 |
|
||||
| `ComM_Nm_PrepareBusSleepMode` | 通知 ComM 进入准备睡眠模式 |
|
||||
| `ComM_Nm_BusSleepMode` | 通知 ComM 进入总线睡眠模式 |
|
||||
| `BswM_Nm_CarWakeUpIndication` | CarWakeup 指示 |
|
||||
| `Det_ReportError` | 上报开发错误 |
|
||||
| `Dem_SetEventStatus` | 上报生产错误 |
|
||||
|
||||
#### 8.6.2 可选接口
|
||||
|
||||
| API | 描述 |
|
||||
|---|---|
|
||||
| `FrNm_GetPncBitmask` | 获取 PNC 位掩码 |
|
||||
| `Nm_TriggerTransmit` | 通用 NM TriggerTransmit |
|
||||
| `BswM_Nm_PncReadySleepIndication` | PNC 睡眠指示(4.4.0 新增) |
|
||||
|
||||
#### 8.6.3 可配置接口
|
||||
|
||||
无。
|
||||
|
||||
---
|
||||
|
||||
## 9 时序图
|
||||
|
||||
> 摘要标记:本章包含约 15+ 个时序图。关键流程:
|
||||
> - **图 1:FrNm 初始化**:EcuM → `FrNm_Init` → 状态机进入 BusSleep。
|
||||
> - **图 2:网络唤醒**:本地唤醒 → 发送 WUP → 切换到 RepeatMessage。
|
||||
> - **图 3:网络请求**:ComM → `FrNm_NetworkRequest` → 切换到 NormalOperation。
|
||||
> - **图 4:协调关闭**:NM Coord 准备关闭 → 通知所有节点 → 所有节点同意 → 进入 BusSleep。
|
||||
> - **图 5:部分网络请求**:DCM/应用 → PNC 请求 → FrNm 检查 PNC 状态 → 通知 ComM。
|
||||
> - **图 6:PNC 同步(4.4.0 新增)**。
|
||||
> - **图 7:主动唤醒位处理**。
|
||||
> - **图 8:可靠 TxConfirmation(4.4.0 新增)**。
|
||||
> - **图 9:节点检测**。
|
||||
> - **图 10:CarWakeup 处理**。
|
||||
|
||||
---
|
||||
|
||||
## 10 配置规范
|
||||
|
||||
### 10.1 容器结构
|
||||
|
||||
```
|
||||
FrNm
|
||||
├── FrNmGeneral
|
||||
├── FrNmChannelConfig (multi)
|
||||
│ ├── FrNmChannelDemEventParameterRefs
|
||||
│ ├── FrNmPdu
|
||||
│ ├── FrNmNode
|
||||
│ └── FrNmPnInfo
|
||||
├── FrNmDemEventParameterRefs
|
||||
└── FrNmPnClusterRequest (4.4.0 新增)
|
||||
```
|
||||
|
||||
### 10.2 关键配置参数
|
||||
|
||||
#### 10.2.1 `FrNmGeneral`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `FrNmDevErrorDetect` | Boolean | 启用开发错误检测 |
|
||||
| `FrNmVersionInfoApi` | Boolean | 启用版本信息 API |
|
||||
| `FrNmPassiveModeEnabled` | Boolean | 启用被动模式 |
|
||||
| `FrNmBusSynchronizationEnabled` | Boolean | 启用总线同步 |
|
||||
| `FrNmNodeDetectionEnabled` | Boolean | 启用节点检测 |
|
||||
| `FrNmNodeIdEnabled` | Boolean | 启用节点 ID |
|
||||
| `FrNmUserDataEnabled` | Boolean | 启用用户数据 |
|
||||
| `FrNmPnEnabled` | Boolean | 启用部分网络 |
|
||||
| `FrNmPnEiraCalcEnabled` | Boolean | 启用 PNC EIRA 计算 |
|
||||
| `FrNmPnRequestSyncEnabled` | Boolean | 启用 PNC 请求同步(4.4.0 新增) |
|
||||
| `FrNmReliableTxConfirmationEnabled` | Boolean | 启用可靠 TxConfirmation(4.4.0 新增) |
|
||||
| `FrNmCarWakeUpEnabled` | Boolean | 启用 CarWakeup |
|
||||
| `FrNmCarWakeUpFilterEnabled` | Boolean | 启用 CarWakeup 过滤 |
|
||||
| `FrNmCarWakeUpFilterQueueSize` | Integer | CarWakeup 过滤队列大小 |
|
||||
| `FrNmActiveWakeupBitEnabled` | Boolean | 启用主动唤醒位 |
|
||||
| `FrNmRepeatMessageBitEnabled` | Boolean | 启用 Repeat Message 位 |
|
||||
| `FrNmNumberOfClusters` | Integer | 集群数 |
|
||||
| `FrNmMainFunctionPeriod` | Float | 主函数周期(秒) |
|
||||
|
||||
#### 10.2.2 `FrNmChannelConfig`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `FrNmChannelHandle` | Integer | 通道句柄 |
|
||||
| `FrNmNodeId` | Integer | 节点 ID |
|
||||
| `FrNmMsgCycleTime` | Float | NM 消息周期(秒) |
|
||||
| `FrNmMsgTimeoutTime` | Float | 消息超时时间(秒) |
|
||||
| `FrNmMsgReducedTime` | Float | 消息缩短时间(秒) |
|
||||
| `FrNmNetworkTimeout` | Float | 网络超时时间(秒) |
|
||||
| `FrNmRepeatMessageTime` | Float | RepeatMessage 持续时间(秒) |
|
||||
| `FrNmWaitBusSleepTime` | Float | 等待总线睡眠时间(秒) |
|
||||
| `FrNmReadySleepCnt` | Integer | ReadySleep 计数器 |
|
||||
| `FrNmRepeatMessageCycle` | Float | RepeatMessage 周期(秒) |
|
||||
| `FrNmRepetitionCycle` | Integer | 重复周期计数 |
|
||||
| `FrNmVotingCycle` | Integer | 协调器投票周期计数 |
|
||||
| `FrNmCoordinatorCycle` | Integer | 协调器周期计数 |
|
||||
| `FrNmDataCycle` | Integer | 数据周期计数 |
|
||||
| `FrNmVotingOffset` | Integer | 协调器投票偏移 |
|
||||
| `FrNmCoordinatorOffset` | Integer | 协调器偏移 |
|
||||
| `FrNmDataOffset` | Integer | 数据偏移 |
|
||||
| `FrNmPnInfoOffset` | Integer | PNC 信息偏移 |
|
||||
| `FrNmPnInfoLength` | Integer | PNC 信息长度 |
|
||||
| `FrNmChannelMode` | Enum | `NORMAL` / `PASSIVE` |
|
||||
| `FrNmComMNetworkHandleRef` | Reference | ComM 网络句柄引用 |
|
||||
| `FrNmPdu` | Reference | NM PDU 引用 |
|
||||
| `FrNmNode` | Reference (multi) | 已知节点列表 |
|
||||
| `FrNmPnInfo` | Reference | PNC 信息引用 |
|
||||
|
||||
#### 10.2.3 `FrNmPnInfo`(部分网络)
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `FrNmPnInfoId` | Integer | PNC 信息 ID |
|
||||
| `FrNmPnInfoMask` | BitField | PNC 位掩码 |
|
||||
| `FrNmPnFilterMask` | BitField | PNC 过滤位掩码 |
|
||||
| `FrNmPnClusterRequest` | Reference (multi) | PNC 集群请求 |
|
||||
|
||||
#### 10.2.4 `FrNmPnClusterRequest`(4.4.0 新增)
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `FrNmPnClusterRequestShortName` | String | PNC 集群请求的 shortname |
|
||||
| `FrNmPnClusterRequestBitmask` | BitField | PNC 集群请求位掩码 |
|
||||
| `FrNmPnClusterRequestNotification` | Reference | PNC 通知回调 |
|
||||
|
||||
### 10.3 发布信息
|
||||
|
||||
无附加发布参数。
|
||||
|
||||
---
|
||||
|
||||
## 翻译说明
|
||||
|
||||
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_FlexRayNetworkManagement.pdf`(110 页)。
|
||||
- 关键翻译策略:
|
||||
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
|
||||
- **保留英文**:所有 API 名、类型名、NM 状态名、配置参数标识符、需求 ID。
|
||||
- **摘要标记**:第 6 章需求可追踪性表涵盖 80+ 项需求;第 8.3 节 API 列出 9 个核心函数(原文 20+ 个);第 9 章时序图列出 10 个关键图。完整内容请参见原文 PDF。
|
||||
- 内容置信度:高。所有 NM 状态、API 签名、配置容器均已涵盖。
|
||||
Reference in New Issue
Block a user