359 lines
8.6 KiB
Markdown
359 lines
8.6 KiB
Markdown
# LIN 网络管理规范 (Specification of LIN Network Management)
|
|||
|
|
|
||
|
|
> **AUTOSAR CP Release 4.4.0**
|
||
|
|
> **文档 ID 297: AUTOSAR_SWS_LINNetworkManagement**
|
||
|
|
|
||
|
|
## 元信息
|
||
|
|
|
||
|
|
| 项目 | 内容 |
|
||
|
|
| --- | --- |
|
||
|
|
| 文档标题 | LIN 网络管理规范 |
|
||
|
|
| 文档所有者 | AUTOSAR |
|
||
|
|
| 文档责任方 | AUTOSAR |
|
||
|
|
| 文档标识号 | 297 |
|
||
|
|
| 文档状态 | Final |
|
||
|
|
| 所属 AUTOSAR 标准 | Classic Platform |
|
||
|
|
| 所属标准版本 | 4.4.0 |
|
||
|
|
|
||
|
|
## 文档变更历史
|
||
|
|
|
||
|
|
| 日期 | 版本 | 变更方 | 变更说明 |
|
||
|
|
| --- | --- | --- | --- |
|
||
|
|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑变更 |
|
||
|
|
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 修正/澄清 |
|
||
|
|
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 关于 BSW 模式管理器交互 |
|
||
|
|
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | DET 修正 |
|
||
|
|
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑变更 |
|
||
|
|
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑变更 |
|
||
|
|
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 初始正式版本 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 目录
|
||
|
|
|
||
|
|
- [1. 介绍与功能概述](#1-介绍与功能概述)
|
||
|
|
- [2. 缩略语](#2-缩略语)
|
||
|
|
- [3. 相关文档](#3-相关文档)
|
||
|
|
- [4. 约束与假设](#4-约束与假设)
|
||
|
|
- [5. 与其他模块的依赖](#5-与其他模块的依赖)
|
||
|
|
- [6. 需求可追溯性](#6-需求可追溯性)
|
||
|
|
- [7. 功能规范](#7-功能规范)
|
||
|
|
- [8. API 规范](#8-api-规范)
|
||
|
|
- [9. 时序图](#9-时序图)
|
||
|
|
- [10. 配置规范](#10-配置规范)
|
||
|
|
- [11. 不适用需求](#11-不适用需求)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. 介绍与功能概述
|
||
|
|
|
||
|
|
AUTOSAR LIN 网络管理(LinNm)是硬件无关协议,仅可用于 LIN(限制见第 4.1 节)。其主要目的是协调网络在正常运行与总线睡眠模式之间的转换。
|
||
|
|
|
||
|
|
AUTOSAR 网络管理一般功能见 [8]。LIN 栈在 AUTOSAR 中支持主节点行为以及 LIN 2.x 和 LIN 1.x 协议。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. 缩略语
|
||
|
|
|
||
|
|
| 缩略语 | 描述 |
|
||
|
|
| --- | --- |
|
||
|
|
| API | Application Programming Interface |
|
||
|
|
| BSW | Basic Software |
|
||
|
|
| DET | Default Error Tracer |
|
||
|
|
| LinNm | LIN Network Management |
|
||
|
|
| NM | Network Management |
|
||
|
|
| PDU | Protocol Data Unit |
|
||
|
|
| SDU | Service Data Unit |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. 相关文档
|
||
|
|
|
||
|
|
### 3.1 输入文档
|
||
|
|
|
||
|
|
- [1] Layered Software Architecture
|
||
|
|
- [2] General Requirements on Basic Software Modules
|
||
|
|
- [3] Requirements on Network Management
|
||
|
|
- [4] Requirements on LIN
|
||
|
|
- [5] Specification of Communication Stack Types
|
||
|
|
- [6] Specification of ECU Configuration
|
||
|
|
- [7] Specification of BSW Scheduler
|
||
|
|
- [8] Specification of Generic Network Management Interface
|
||
|
|
- [9] Specification of Communication Manager
|
||
|
|
- [10] Specification of ECU State Manager
|
||
|
|
- [11] Specification of Operating System
|
||
|
|
- [12] Specification of Default Error Tracer
|
||
|
|
- [13] Specification of Standard Types
|
||
|
|
- [14] Specification of Platform Types
|
||
|
|
- [15] Specification of Compiler Abstraction
|
||
|
|
- [16] Basic Software Module Description Template
|
||
|
|
- [17] List of Basic Software Modules
|
||
|
|
- [18] General Specification of Basic Software Modules
|
||
|
|
|
||
|
|
### 3.2 相关标准
|
||
|
|
无。
|
||
|
|
|
||
|
|
### 3.3 相关规范
|
||
|
|
|
||
|
|
AUTOSAR 提供 SWS BSW General [18],同样适用于 LIN 网络管理。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 约束与假设
|
||
|
|
|
||
|
|
### 4.1 限制
|
||
|
|
|
||
|
|
1. 一个 LinNm 实例只与一个网络中的网络管理集群关联。一个网络管理集群在节点中可有多个 LinNm 实例。
|
||
|
|
2. 一个 LinNm 实例只与同一 ECU 中的一个网络关联。
|
||
|
|
3. LinNm 仅适用于 LIN 系统。
|
||
|
|
|
||
|
|
LinNm 策略管理无需特定协调算法(如 CanNm)。LIN 主节点可将连接到总线的所有 LIN 从节点送入睡眠并唤醒,无需等待其确认。
|
||
|
|
|
||
|
|
### 4.2 适用车域
|
||
|
|
|
||
|
|
可应用于任何车域(在上述限制下)。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 与其他模块的依赖
|
||
|
|
|
||
|
|
LinNm 向通用网络管理接口(Nm)提供服务。
|
||
|
|
|
||
|
|
### 5.1 文件结构
|
||
|
|
|
||
|
|
- **[SWS_LinNm_00000]** ⌈代码文件结构不在本规范中完整定义。⌋
|
||
|
|
|
||
|
|
注:本模块无后构建时可配置参数。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. 需求可追溯性
|
||
|
|
|
||
|
|
| 需求 ID | 描述 | 满足者 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| SRS_BSW_00101 | BSW 模块应能初始化变量和硬件 | SWS_LinNm_00041 |
|
||
|
|
| SRS_BSW_00323 | API 参数检查 | SWS_LinNm_00047, SWS_LinNm_00048 |
|
||
|
|
| SRS_BSW_00373 | main 函数命名 | SWS_LinNm_00045 |
|
||
|
|
| SRS_BSW_00407 | 版本信息读取 | SWS_LinNm_00050 |
|
||
|
|
| SRS_Nm_00040 | 启动协调 | SWS_LinNm_00043 |
|
||
|
|
| SRS_Nm_00041 | 网络释放 | SWS_LinNm_00044 |
|
||
|
|
| SRS_Nm_00042 | 协调睡眠 | SWS_LinNm_00046 |
|
||
|
|
|
||
|
|
> **[摘要]** 完整需求追溯表见原文 PDF 第 14-21 页。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. 功能规范
|
||
|
|
|
||
|
|
### 7.1 LinNm 工作机制
|
||
|
|
|
||
|
|
LinNm 是 LIN 总线上 NM 协议的简单实现。其概念基于 LIN 主节点能控制集群上所有从节点的事实。
|
||
|
|
|
||
|
|
#### 7.1.1 网络模式
|
||
|
|
|
||
|
|
LinNm 实现两种主要模式:
|
||
|
|
- **Bus-Sleep Mode**:LIN 总线处于睡眠
|
||
|
|
- **Network Mode**:网络运行中
|
||
|
|
|
||
|
|
#### 7.1.2 模式转换
|
||
|
|
- LIN 主节点请求 Network Mode 时,LinNm 转换到 Network Mode 并通知 Nm 模块。
|
||
|
|
- LIN 主节点请求 Bus-Sleep Mode 时,LinNm 转换到 Bus-Sleep Mode 并通知 Nm 模块。
|
||
|
|
|
||
|
|
#### 7.1.3 启动与关闭
|
||
|
|
- **[SWS_LinNm_00041]** ⌈LinNm_Init 应初始化所有 LinNm 内部变量。⌋
|
||
|
|
- **[SWS_LinNm_00042]** ⌈LinNm_DeInit 应反初始化模块。⌋
|
||
|
|
|
||
|
|
### 7.2 错误分类
|
||
|
|
|
||
|
|
#### 7.2.1 开发错误
|
||
|
|
|
||
|
|
| 错误名 | 错误码 | 含义 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| LINNM_E_UNINIT | 0x01 | 未初始化即调用 |
|
||
|
|
| LINNM_E_INVALID_CHANNEL | 0x02 | 无效通道 |
|
||
|
|
| LINNM_E_INVALID_PARAMETER | 0x03 | 无效参数 |
|
||
|
|
| LINNM_E_PARAM_POINTER | 0x12 | NULL 指针 |
|
||
|
|
|
||
|
|
#### 7.2.2 运行时错误
|
||
|
|
无运行时错误。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. API 规范
|
||
|
|
|
||
|
|
### 8.1 导入类型
|
||
|
|
|
||
|
|
| 模块 | 头文件 | 导入类型 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| ComM | ComM.h | ComM_ModeType |
|
||
|
|
| ComStack_Types | ComStack_Types.h | NetworkHandleType, PduInfoType, PduIdType |
|
||
|
|
| Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType |
|
||
|
|
| Nm | Nm.h | Nm_ModeType, Nm_StateType |
|
||
|
|
|
||
|
|
### 8.2 类型定义
|
||
|
|
|
||
|
|
#### 8.2.1 LinNm_ConfigType
|
||
|
|
```c
|
||
|
|
typedef struct LinNm_ConfigType LinNm_ConfigType;
|
||
|
|
```
|
||
|
|
|
||
|
|
### 8.3 函数定义
|
||
|
|
|
||
|
|
#### 8.3.1 LinNm_Init
|
||
|
|
|
||
|
|
```c
|
||
|
|
void LinNm_Init(const LinNm_ConfigType* linnmConfigPtr)
|
||
|
|
```
|
||
|
|
|
||
|
|
| Service ID | 0x01 |
|
||
|
|
| --- | --- |
|
||
|
|
| Sync/Async | Synchronous |
|
||
|
|
| 描述 | 初始化 LinNm 模块 |
|
||
|
|
|
||
|
|
#### 8.3.2 LinNm_DeInit
|
||
|
|
|
||
|
|
```c
|
||
|
|
void LinNm_DeInit(void)
|
||
|
|
```
|
||
|
|
|
||
|
|
| Service ID | 0x02 |
|
||
|
|
| --- | --- |
|
||
|
|
| 描述 | 反初始化模块 |
|
||
|
|
|
||
|
|
#### 8.3.3 LinNm_PassiveStartUp
|
||
|
|
|
||
|
|
```c
|
||
|
|
Std_ReturnType LinNm_PassiveStartUp(NetworkHandleType nmChannelHandle)
|
||
|
|
```
|
||
|
|
|
||
|
|
| Service ID | 0x14 |
|
||
|
|
| --- | --- |
|
||
|
|
| 描述 | 被动启动网络 |
|
||
|
|
|
||
|
|
#### 8.3.4 LinNm_NetworkRequest / LinNm_NetworkRelease (主节点)
|
||
|
|
|
||
|
|
请求/释放网络。
|
||
|
|
|
||
|
|
#### 8.3.5 LinNm_GetVersionInfo
|
||
|
|
|
||
|
|
```c
|
||
|
|
void LinNm_GetVersionInfo(Std_VersionInfoType* versionInfo)
|
||
|
|
```
|
||
|
|
|
||
|
|
| Service ID | 0x03 |
|
||
|
|
| --- | --- |
|
||
|
|
|
||
|
|
#### 8.3.6 LinNm_RequestBusSynchronization
|
||
|
|
请求总线同步。
|
||
|
|
|
||
|
|
#### 8.3.7 LinNm_CheckRemoteSleepIndication
|
||
|
|
检查远程睡眠指示。
|
||
|
|
|
||
|
|
#### 8.3.8 LinNm_SetSleepReadyBit
|
||
|
|
设置睡眠就绪位。
|
||
|
|
|
||
|
|
#### 8.3.9 NM Interface 通信控制服务
|
||
|
|
- LinNm_GetState
|
||
|
|
- LinNm_DisableCommunication / LinNm_EnableCommunication
|
||
|
|
|
||
|
|
#### 8.3.10 NM Interface 额外服务
|
||
|
|
- LinNm_GetLocalNodeIdentifier
|
||
|
|
- LinNm_RepeatMessageRequest
|
||
|
|
- LinNm_GetNodeIdentifier
|
||
|
|
|
||
|
|
### 8.4 回调通知
|
||
|
|
无。
|
||
|
|
|
||
|
|
### 8.5 调度函数
|
||
|
|
|
||
|
|
#### 8.5.1 LinNm_MainFunction
|
||
|
|
|
||
|
|
```c
|
||
|
|
void LinNm_MainFunction(void)
|
||
|
|
```
|
||
|
|
|
||
|
|
| Service ID | 0x13 |
|
||
|
|
| --- | --- |
|
||
|
|
| 描述 | LinNm main 函数 |
|
||
|
|
|
||
|
|
### 8.6 期望接口
|
||
|
|
|
||
|
|
#### 8.6.1 强制接口
|
||
|
|
- Nm_NetworkMode / Nm_BusSleepMode
|
||
|
|
- LinIf_GotoSleep
|
||
|
|
- Det_ReportError
|
||
|
|
|
||
|
|
#### 8.6.2 可选接口
|
||
|
|
- Det_ReportRuntimeError
|
||
|
|
|
||
|
|
#### 8.6.3 可配置接口
|
||
|
|
无。
|
||
|
|
|
||
|
|
#### 8.6.4 任务结束通知
|
||
|
|
无。
|
||
|
|
|
||
|
|
### 8.7 服务接口
|
||
|
|
无。
|
||
|
|
|
||
|
|
### 8.8 参数检查
|
||
|
|
所有 API 参数应根据需求检查。
|
||
|
|
|
||
|
|
### 8.9 版本检查
|
||
|
|
应实现版本检查。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 9. 时序图
|
||
|
|
|
||
|
|
### 9.1 LinNm_Init
|
||
|
|
初始化序列(简单调用)。
|
||
|
|
|
||
|
|
### 9.2 LinNm_PassiveStartUp
|
||
|
|
被动启动序列。
|
||
|
|
|
||
|
|
### 9.3 LinNm_NormalOperation
|
||
|
|
正常运行场景。
|
||
|
|
|
||
|
|
> **[摘要]** 详细时序图见原文 PDF 第 41-43 页。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 10. 配置规范
|
||
|
|
|
||
|
|
### 10.1 如何阅读本章
|
||
|
|
参考 [ECU Configuration Specification]。
|
||
|
|
|
||
|
|
### 10.2 容器与配置参数
|
||
|
|
|
||
|
|
#### 10.3.1 LinNm
|
||
|
|
根容器。
|
||
|
|
|
||
|
|
#### 10.3.2 LinNmGlobalConfig
|
||
|
|
| 参数 | 类型 | 说明 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| LinNmDevErrorDetect | bool | 启用/禁用开发错误检测 |
|
||
|
|
| LinNmVersionInfoApi | bool | 启用版本信息 API |
|
||
|
|
| LinNmMainFunctionPeriod | float | main 函数周期(秒) |
|
||
|
|
|
||
|
|
#### 10.3.3 LinNmChannelConfig
|
||
|
|
| 参数 | 类型 | 说明 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| LinNmChannelId | int | 通道 ID |
|
||
|
|
| LinNmComMNetworkHandleRef | ref | 引用 ComM 网络句柄 |
|
||
|
|
|
||
|
|
### 10.4 已发布参数
|
||
|
|
按 BSW General 提供模块版本信息。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 11. 不适用需求
|
||
|
|
|
||
|
|
详见原文 PDF 第 53 页。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 翻译说明
|
||
|
|
|
||
|
|
- 本译本基于 AUTOSAR CP 4.4.0 的 LIN 网络管理规范 (Document ID 297,共 53 页)
|
||
|
|
- 摘要标记位置:第 6 章需求追溯、第 9 章时序图、第 11 章不适用需求
|