1069 lines
38 KiB
Markdown
1069 lines
38 KiB
Markdown
# LIN 接口规范 (Specification of LIN Interface)
|
||
|
||
> **AUTOSAR CP Release 4.4.0**
|
||
> **文档 ID 073: AUTOSAR_SWS_LINInterface**
|
||
|
||
## 元信息
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| 文档标题 | LIN 接口规范 (Specification of LIN Interface) |
|
||
| 文档所有者 | AUTOSAR |
|
||
| 文档责任方 | AUTOSAR |
|
||
| 文档标识号 | 073 |
|
||
| 文档状态 | Final |
|
||
| 所属 AUTOSAR 标准 | Classic Platform |
|
||
| 所属标准版本 | 4.4.0 |
|
||
|
||
## 文档变更历史
|
||
|
||
| 日期 | 版本 | 变更方 | 变更说明 |
|
||
| --- | --- | --- | --- |
|
||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 将 TP 定时器改为通道特定;删除虚拟 API(LinIf_CancelTransmit 等)并以 LinIfChannel.ShortName 替换 ChannelId;将 LIN 2.1 引用替换为 ISO 17987:2016(无功能修改);LIN Slave 支持(CONC_631);头文件清理;细微更正/澄清/编辑 |
|
||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 运行时错误的引入;节点配置请求的 SRF 处理澄清;初始化时通道状态不一致的解决;LIN 调度表切换行为澄清 |
|
||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 更改每个通道 MainFunction_<ChannelId> 的调用方式;新增调度表变更函数;变更 User_TxConfirmation 签名 |
|
||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 移除可选接口配置类中 PostBuildTime;调用 <User_TriggerTransmit> 增加 buffer 长度参数;改用默认错误跟踪器(DET) |
|
||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 更改 LinIf_Wakeup 返回 E_NOT_OK 描述;LinIfFrameRef.upperMultiplicity 由 '*' 改为 '1';修正 SWS_LinIf_00614 错别字 |
|
||
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | LinIfSlave 与 LinIfLength 标记为 obsolete;修改 <User_RxIndication> 签名 |
|
||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 为 LINTP 物理与功能请求增加并行处理;LIN 总线唤醒处理调整;删除 NotifResultType 类型 |
|
||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 修改 LinTp 重试与失败时缓冲区处理;调整 LinTp 接收非预期 PDU 的错误处理;调整向睡眠状态过渡时的唤醒操作 |
|
||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 为 LIN TP 增加 As/Cs/Cr 超时观测;澄清 LIN TP 缓冲区处理需求;删除 LIN TP 的 CDD;补充收发器唤醒规范 |
|
||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 添加 5.3.3 版本检查;参数 "NetworkHandleType Transceiver" 改名 "NetworkHandleType Channel";LinIf_TrcvModeType 等类型从 LIN 接口中删除;统一函数名 "WakeUp" 为 "Wakeup";时间配置参数单位改为 "秒" |
|
||
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 支持 LIN 2.1 规范;增加 LIN 收发器驱动支持;移除 LIN 调度表管理器(由 BSW 模式管理器接管);扩展与复杂设备驱动交互;法律声明修订 |
|
||
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明修订 |
|
||
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 增加与 LIN 状态管理器的交互;重新设计 LIN 接口配置;增加 LIN 响应错误检测;唤醒概念重新设计 |
|
||
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 启动与唤醒针对收发器需求重做;文件结构与需求可追溯性按新模板调整;集成商反馈后配置重做;移除 API:LinIf_InitChannel() 和 LinIf_DeInitChannel() |
|
||
| 2006-05-16 | 2.0 | AUTOSAR Administration | 初始发布 |
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
- [1. 介绍与功能概述](#1-介绍与功能概述)
|
||
- [1.1 架构概述](#11-架构概述)
|
||
- [1.2 功能概述](#12-功能概述)
|
||
- [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 接口** (LinIf) 与 **LIN 传输协议** (LIN TP) 的功能、API 和配置。LIN TP 是 LIN 接口的组成部分。
|
||
|
||
唤醒功能由 LIN 接口、LIN 驱动与 LIN 收发器驱动共同覆盖。
|
||
|
||
本文档基于 ISO 17987 系列规范 [19]。假定读者已熟悉这些规范。本文档不会重复说明 ISO 17987 的 LIN 功能。
|
||
|
||
LIN 接口模块适用于 ISO 17987 主节点和从节点(与 LIN 2.2、LIN 2.1 主节点兼容)。AUTOSAR 中的 LIN 实现在某些方面偏离了 ISO 17987 规范(如本文档所述),但在 LIN 总线上的行为不会改变。我们的目标是能够在 AUTOSAR LIN 实现(即 LIN 接口)中重用所有现有的 LIN 节点。
|
||
|
||
LIN 接口设计为硬件无关。与上层(PDU 路由器)和下层(LIN 驱动)模块之间的接口是良好定义的。
|
||
|
||
LIN 接口可以处理多个 LIN 驱动。一个 LIN 驱动可以支持多个通道。
|
||
|
||
### 1.1 架构概述
|
||
|
||
根据分层软件架构 [2],LIN 接口在 BSW 架构中位于通信硬件抽象层。下图示例中,LIN 接口连接两个 LIN 驱动,但最常见配置是连接一个 LIN 驱动。
|
||
|
||
```
|
||
AUTOSAR COM 诊断通信 LIN 状态管理器
|
||
管理器 或复杂驱动
|
||
| |
|
||
I-PDU 复用器 PDU 路由器/复杂驱动
|
||
|
|
||
=====通信硬件抽象=====
|
||
LIN 接口(含 LIN TP)
|
||
|
|
||
LIN 收发器驱动
|
||
|
|
||
I/O 驱动 通信驱动
|
||
DIO 驱动 LIN 驱动 1 LIN 驱动 2
|
||
| |
|
||
µC LIN 1 LIN 2
|
||
```
|
||
|
||
*图 1 – AUTOSAR BSW 软件架构(LIN 相关模块)*
|
||
|
||
### 1.2 功能概述
|
||
|
||
LIN 接口负责提供 ISO 17987 LIN 功能,即:
|
||
|
||
- 为 ECU 作为主节点连接的每条 LIN 总线执行当前选定的调度(发送 header 与发送/接收 response)。
|
||
- 当上层请求时,切换主节点的调度表。
|
||
- 接受上层的帧传输请求并在合适的 LIN 帧中作为响应发送数据。
|
||
- 在合适的帧中收到响应时,向上层提供帧接收通知。
|
||
- 进入睡眠和唤醒服务。
|
||
- 错误处理。
|
||
- 诊断传输层服务。
|
||
- 从节点的节点配置与识别服务。
|
||
|
||
---
|
||
|
||
## 2. 缩略语
|
||
|
||
除 ISO 17987 LIN 规范 [19] 中的缩略语外,本文档使用如下缩略语:
|
||
|
||
| 缩略语 | 含义 |
|
||
| --- | --- |
|
||
| CF | LIN TP 中的 Continuous Frame |
|
||
| FF | LIN TP 中的 First Frame |
|
||
| ID | 标识符 (Identifier) |
|
||
| LDF | LIN Description File (LIN 描述文件) |
|
||
| LIN TP | LIN Transport Protocol (LIN 接口的组成部分) |
|
||
| MRF | Master Request Frame |
|
||
| NAD | Node Address (LIN 中每个从节点必须有唯一 NAD) |
|
||
| NC | Node Configuration |
|
||
| N_As | 发送方在 LIN 帧(任意 N-PDU)上的传输时间(见 ISO 17987-2 [19]) |
|
||
| N_Cr | 直到下一个连续帧 N-PDU 接收的时间 |
|
||
| N_Cs | 直到下一个连续帧 N-PDU 发送的时间 |
|
||
| P2 | 诊断请求最后一帧在 LIN 总线上被接收 与 从节点能提供响应数据 之间的时间 |
|
||
| P2* | 发送响应挂起帧(0x78)与 LIN 从节点能提供响应数据之间的时间 |
|
||
| PID | Protected ID (受保护标识符) |
|
||
| RX | Reception (接收) |
|
||
| SID | Service Identifier (节点配置服务标识符) |
|
||
| SF | LIN TP 中的 Single Frame |
|
||
| SRF | Slave Response Frame |
|
||
| SRS | Software Requirement Specification |
|
||
| TX | Transmission (发送) |
|
||
|
||
| 术语 | 描述 |
|
||
| --- | --- |
|
||
| Slot Delay | 调度表中两帧起始之间的时间。单位为特定集群的时基个数 |
|
||
| Jitter | 最长延迟与最短延迟之间的差值(例如最差情况执行时间与最佳情况执行时间之差) |
|
||
| Maximum frame length | 最大帧长是 ISO 17987-3 [19] 中定义的 TFRAME_MAX (标称帧长加 40%) |
|
||
| Schedule entry is due | LIN 接口到达调度表中新条目,即将发起一帧(接收或发送) |
|
||
| Slave-to-slave | 从主节点视角,LIN 总线上响应方向有 3 种:主节点发送、主节点接收、由一从节点发送给另一从节点接收。slave-to-slave 描述最后一种 |
|
||
| Irrelevant frame | 从从节点视角,有 3 种方向:从节点发送、从节点接收、被忽略(主-另一从或两从之间)。被忽略的帧称为不相关帧 |
|
||
| Relevant frame | 从从节点视角,被发送或接收的帧。不相关帧的对立面 |
|
||
| Sporadic frame | 附加到 sporadic slot 的非条件帧之一 |
|
||
| Sporadic slot | sporadic 帧的占位槽。命名为槽是因为它没有 LIN 帧 ID |
|
||
| Tick | 处理所有通道通信的最小时间单位 |
|
||
| Bus idle timeout | 总线无活动持续的时间 |
|
||
|
||
---
|
||
|
||
## 3. 相关文档
|
||
|
||
### 3.1 输入文档
|
||
|
||
- [1] List of Basic Software Modules — AUTOSAR_TR_BSWModuleList.pdf
|
||
- [2] Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
|
||
- [3] General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral.pdf
|
||
- [4] Specification of Standard Types — AUTOSAR_SWS_StandardTypes.pdf
|
||
- [5] Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf
|
||
- [6] Requirements on LIN — AUTOSAR_SRS_LIN.pdf
|
||
- [7] Specification of LIN Driver — AUTOSAR_SWS_LINDriver.pdf
|
||
- [8] Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf
|
||
- [9] Specification of ECU State Manager — AUTOSAR_SWS_ECUStateManager.pdf
|
||
- [10] Specification of LIN State Manager — AUTOSAR_SWS_LINStateManager.pdf
|
||
- [11] Basic Software Module Description Template — AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
|
||
- [12] Specification of LIN Transceiver Driver — AUTOSAR_SWS_LINTransceiverDriver.pdf
|
||
- [13] Specification of PDU Router — AUTOSAR_SWS_PDURouter.pdf
|
||
- [14] Specification of Communication Stack Types — AUTOSAR_SWS_CommunicationStackTypes.pdf
|
||
- [15] Specification of Basic Software Mode Manager — AUTOSAR_SWS_BSWModeManager.pdf
|
||
- [16] General Specification of Basic Software Modules — AUTOSAR_SWS_BSWGeneral.pdf
|
||
|
||
### 3.2 相关标准与规范
|
||
|
||
- [17] LIN Specification Package Revision 2.1, November 24, 2006 — http://www.lin-subbus.org/
|
||
- [18] SAE J2602-1 (2012-11), LIN Network for Vehicle Applications
|
||
- [19] ISO 17987:2016 (所有部分), Road vehicles – Local Interconnect Network (LIN)
|
||
|
||
注:非 ISO 的 LIN 规范(LIN 2.2A 与 LIN 2.1 by LIN Consortium)在 LIN 联盟关闭后仍可于 <https://www.lin-cia.org/standards/> 获取。
|
||
|
||
### 3.3 相关规范
|
||
|
||
AUTOSAR 提供了通用的基础软件模块规范 [16] (SWS BSW General),该规范同样适用于 LIN 接口。因此,SWS BSW General 应被视为 LIN 接口的附加且必需规范。
|
||
|
||
---
|
||
|
||
## 4. 约束与假设
|
||
|
||
### 4.1 限制
|
||
|
||
LIN 接口模块在 LIN 集群中可用作 LIN 主节点或 LIN 从节点。每个 ECU 中只有一个 LIN 接口实例。如果底层 LIN 驱动支持多通道,则 LIN 接口可作用于多个集群。
|
||
|
||
假定所有已连接的 LIN ECU 在已运行时能够接收唤醒帧(因为 LIN ECU 以 LINIF_CHANNEL_SLEEP 状态启动)。
|
||
|
||
LIN 接口模块不支持以下功能:
|
||
- ConditionalChangeNAD (SID 0xB3,LIN 2.1 定义,ISO 17987-3 已废弃)
|
||
- DataDump (SID 0xB4,ISO 17987-3 中可选)
|
||
|
||
对于从节点,LIN 接口模块不支持:
|
||
- ReadByIdentifier 使用非 0 和非 2 的标识符 (SID 0xB2,ISO 17987-3 强制)
|
||
- 序列号 (Serial Number,ISO 17987-3, 第 6.2.2 条定义)。这意味着没有对应配置或访问序列号的 API。
|
||
- AutoAddressingSlave (SID 0xB8,ISO 17987-3 可选);Slave 节点位置检测 (SID 0xB5,LIN 2.x 可选)
|
||
|
||
对于主节点,LIN 接口模块不支持:
|
||
- ReadByIdentifier (SID 0xB2,ISO 17987-3 强制)
|
||
|
||
注:ReadByIdentifier 不被视为节点配置,而是识别服务。因此,将其作为调度表命令支持没有意义。诊断层负责实现 ReadByIdentifier 的功能。
|
||
|
||
注:一个 ECU 在某通道上是主节点的同时,可以在另一通道上作为从节点。
|
||
|
||
### 4.2 适用车域
|
||
|
||
本规范适用于所有使用 LIN 的车域。
|
||
|
||
### 4.3 关于其他 LIN 标准的说明
|
||
|
||
J2602 [18] 与 LIN 2.1 [17] 是 ISO 17987 [19] 的其他标准化形式。这些替代标准是 ISO 17987 的前身,共享相同概念。
|
||
|
||
ISO 17987 节点与 LIN 2.1 节点兼容(见 ISO 17987-3, 附录 B.2.3)。
|
||
|
||
AUTOSAR LinIf 在与 ISO 17987 相同的部分支持上述标准。出于兼容性原因,基于较旧 LIN 标准(LIN 1.3、LIN 2.0、LIN 2.1、LIN 2.2)的现有从节点在与 ISO 17987 相同的部分受到支持。
|
||
|
||
---
|
||
|
||
## 5. 与其他模块的依赖关系
|
||
|
||
本节描述 LIN 接口与基础软件中其他模块的关系,以及所使用的服务。
|
||
|
||
LIN 接口与下列模块对接:
|
||
- Default Error Tracer – DET
|
||
- ECU State Manager – EcuM
|
||
- PDU Router – PduR
|
||
- LIN State Manager – LinSM
|
||
- BSW Mode Manager – BswM
|
||
- AUTOSAR COM – Com
|
||
- LIN Driver – Lin
|
||
- LIN Transceiver Driver – LinTrcv
|
||
|
||
### 5.1 上层
|
||
|
||
#### 5.1.1 PDU Router 与 CDD
|
||
LIN 接口连接到 PDU 路由器和/或上层的替代模块(如复杂驱动)用于帧的发送和接收。假定这些模块负责接收和发送时帧数据的拷贝。对于 TP 而言,PDU 路由器是上方唯一的模块,处理 TP 消息缓冲区(无论完整或分段消息)。
|
||
|
||
#### 5.1.2 镜像 (Mirroring)
|
||
LIN 接口还连接到 Bus Mirroring 模块。如启用镜像,将报告所有接收和发送的 LIN 帧内容。TP 消息不报告给 Bus Mirroring 模块。
|
||
|
||
#### 5.1.3 LIN 状态管理器
|
||
LIN 接口连接到 LIN 状态管理器,后者负责整个 LIN 协议栈的控制流。它对 LIN 接口的作用:
|
||
1. 对于主节点,状态管理器向 LIN 接口转发调度表请求;
|
||
2. 状态管理器请求唤醒发送,对主节点还请求 sleep 命令发送。
|
||
|
||
#### 5.1.4 BSW 模式管理器
|
||
作为 LIN 接口一部分的 LIN TP 连接到 BSW 模式管理器,在上层请求 LIN TP 操作时请求调度表切换。
|
||
|
||
#### 5.1.5 AUTOSAR COM
|
||
LIN 接口作为 LIN 从节点时,连接到 COM 以更新 response_error 信号值。
|
||
|
||
### 5.2 下层
|
||
|
||
#### 5.2.1 LIN 驱动
|
||
LIN 接口需要由 [7] 定义的底层 LIN 驱动服务。LIN 接口假定 LIN 驱动提供以下原语:
|
||
- 主节点的帧 header 和响应部分发送 (Lin_SendFrame),也指示帧响应方向(发送、接收或 slave-to-slave)。
|
||
- 主节点的进入睡眠命令发送 (Lin_GoToSleep)。
|
||
- 不发送 sleep 命令直接将通道设置为 LIN_CH_SLEEP 状态 (Lin_GoToSleepInternal)。
|
||
- 唤醒命令发送 (Lin_Wakeup)。
|
||
- 不发送唤醒命令直接将通道设置为 LIN_CH_OPERATIONAL 状态 (Lin_WakeupInternal)。
|
||
- 查询发送状态及接收响应部分 (Lin_GetStatus)(主节点),区分以下情形:成功接收/发送、未接收、错误接收/发送、接收中、发送中、通道在 sleep。
|
||
|
||
对于从节点,LIN 接口额外要求 LIN 驱动提供:
|
||
- 接收到 header 的指示 (LinIf_HeaderIndication),也指示响应方向。
|
||
- 接收到响应的指示 (LinIf_RxIndication)。
|
||
- 发送响应的确认 (LinIf_TxConfirmation)。
|
||
- 检测到通信错误事件的指示 (LinIf_LinErrorIndication),区分:header 接收错误、响应帧错误、校验和错误、响应发送中位错误、不完整响应、无响应。
|
||
|
||
LIN 接口不直接使用或访问 LIN 硬件,所有交互均通过上述函数调用。
|
||
|
||
#### 5.2.2 LIN 收发器驱动
|
||
LIN 接口可选地需要 [12] 中定义的底层 LIN 收发器驱动服务。它将以下服务统一为一个接口:
|
||
- 各底层 LIN 收发器设备的工作模式请求与读取服务。
|
||
- LIN 收发器唤醒原因支持的读取服务。
|
||
- 各使用的 LIN 收发器的唤醒事件状态启用/禁用/清除请求服务。
|
||
|
||
### 5.3 文件结构
|
||
|
||
#### 5.3.1 头文件结构
|
||
|
||
本章描述将由 LIN 接口及其他模块包含的头文件。
|
||
|
||
- **[SWS_LinIf_00497]** ⌈LIN 接口应包含其连接到的所有上层 BSW 模块定义的头文件,如连接到 PDU Router 时包含 PduR_LinIf.h。⌋ ()
|
||
- **[SWS_LinIf_00561]** ⌈如启用 LIN TP (配置参数 LinIfTpSupported),LIN 接口应包含 PduR_LinTp.h。⌋ ()
|
||
- **[SWS_LinIf_00555]** ⌈如配置参数 LinIfTrcvDriverSupported 为 TRUE,LIN 接口应包含 LinTrcv.h。⌋ ()
|
||
- **[SWS_LinIf_00669]** ⌈LIN 接口应包含 CDD 回调声明所用的 <CDD_Cbk.h>,该文件由配置参数 LinIfPublicCddHeaderFile 配置。⌋ ()
|
||
- **[SWS_LinIf_00872]** ⌈如启用 Bus Mirroring (配置参数 LinIfBusMirroringSupported),LIN 接口应包含 Mirror.h。⌋ ()
|
||
|
||
---
|
||
|
||
## 6. 需求可追溯性
|
||
|
||
本章包含将 LIN 接口的 SWS 需求与输入需求文档(SRS)关联的矩阵。
|
||
|
||
| 需求 ID | 描述 | 满足者 |
|
||
| --- | --- | --- |
|
||
| SRS_BSW_00003 | 所有软件模块应提供版本与标识信息 | SWS_LinIf_99999 |
|
||
| SRS_BSW_00010 | 所有 BSW 模块的内存消耗应在所有支持平台的定义配置下记录 | SWS_LinIf_99999 |
|
||
| SRS_BSW_00101 | BSW 模块应能在独立的初始化函数中初始化变量和硬件 | SWS_LinIf_00198, SWS_LinIf_00350 |
|
||
| SRS_BSW_00167 | 所有 AUTOSAR BSW 模块应提供配置规则和约束以支持合理性检查 | SWS_LinIf_00375 |
|
||
| SRS_BSW_00170 | AUTOSAR 软件组件应提供有关其对故障、信号质量、驱动需求依赖的信息 | SWS_LinIf_00373 |
|
||
| SRS_BSW_00171 | ECU 中不需要的 BSW 组件可选功能应在预编译时可配置 | SWS_LinIf_00310, SWS_LinIf_00387 |
|
||
| SRS_BSW_00321 | AUTOSAR BSW 模块版本号应按特定规则枚举 | SWS_LinIf_99999 |
|
||
| SRS_BSW_00327 | 错误值命名约定 | SWS_LinIf_00376, SWS_LinIf_00729 |
|
||
| SRS_BSW_00328 | 所有 BSW 模块应避免代码重复 | SWS_LinIf_00386 |
|
||
| SRS_BSW_00331 | 所有 BSW 模块应严格分离错误和状态信息 | SWS_LinIf_99999 |
|
||
|
||
> **[摘要]** 需求追溯表共包含 90+ 条目,涵盖 SRS_BSW_*、SRS_Lin_* 系列。完整表见原文 PDF 第 22-25 页。
|
||
|
||
主要 LIN 特定需求:
|
||
|
||
| 需求 ID | 描述 | 满足者 |
|
||
| --- | --- | --- |
|
||
| SRS_Lin_01502 | LIN 接口应支持 RX/TX 通知 API | SWS_LinIf_00033, SWS_LinIf_00128, SWS_LinIf_00734, SWS_LinIf_00741 |
|
||
| SRS_Lin_01504 | AUTOSAR 架构适用于 LIN 主节点 | SWS_LinIf_00248 |
|
||
| SRS_Lin_01514 | LIN 接口应通知上层唤醒事件 | SWS_LinIf_00378 |
|
||
| SRS_Lin_01515 | LIN 接口应提供唤醒 LIN 通道集群的 API | SWS_LinIf_00205 |
|
||
| SRS_Lin_01523 | 应有 API 调用以使 LIN 总线进入睡眠 | SWS_LinIf_00204 |
|
||
| SRS_Lin_01534 | AUTOSAR LIN 传输层应支持半双工物理连接 | SWS_LinIf_00062 |
|
||
| SRS_Lin_01540 | LIN 传输层应提供初始化 API | SWS_LinIf_00350 |
|
||
| SRS_Lin_01544 | 应处理错误 | SWS_LinIf_00079, SWS_LinIf_00651 |
|
||
| SRS_Lin_01546 | LIN 接口应为主节点提供调度表处理器 | SWS_LinIf_00028, SWS_LinIf_00384, SWS_LinIf_00393 |
|
||
| SRS_Lin_01551 | 一个 LIN 接口应支持一个或多个 LIN 驱动 | SWS_LinIf_00386 |
|
||
| SRS_Lin_01594 | LIN 从节点应支持节点配置与识别服务 | SWS_LinIf_00810, SWS_LinIf_00811, SWS_LinIf_00813 |
|
||
| SRS_Lin_01595 | LIN 接口应支持 LIN 从节点 response_error 信号设置与清除 | SWS_LinIf_00763, SWS_LinIf_00764 |
|
||
| SRS_Lin_01596 | LIN 接口应为从节点提供总线空闲条件观测 | SWS_LinIf_00751, SWS_LinIf_00755 |
|
||
|
||
---
|
||
|
||
## 7. 功能规范
|
||
|
||
无需重新阐述 ISO 17987 规范 [19] 中已规定的需求。但 AUTOSAR 有一些特定细节和未充分定义的部分,这些将在此规定。
|
||
|
||
LIN 接口应支持 ISO 17987 规范中主节点和从节点的行为。
|
||
|
||
- **[SWS_LinIf_00248]** ⌈LIN 接口应支持 ISO 17987 规范中主节点和从节点的行为。⌋ (SRS_BSW_00425, SRS_Lin_01576, SRS_Lin_01504, SRS_Lin_01577)
|
||
|
||
上述需求基本上意味着从 ISO 17987 节点到 LIN 接口节点的通信将是等效的。
|
||
|
||
- **[SWS_LinIf_00249]** ⌈LIN 接口应以现有 LIN 节点可重用的方式实现 LIN 行为。⌋ ()
|
||
- **[SWS_LinIf_00386]** ⌈LIN 接口应能处理一个或多个 LIN 通道。⌋ (SRS_BSW_00328, SRS_Lin_01551)
|
||
|
||
### 7.1 帧传输
|
||
|
||
ISO 17987 中协议规范的全部功能均被使用。某些部分需要澄清和附加需求以适配 LIN 接口。
|
||
|
||
#### 7.1.1 帧类型
|
||
|
||
适用于 ISO 17987 规范中规定的不同帧类型。现有帧类型:
|
||
- Unconditional frame (无条件帧)
|
||
- Event-triggered frame (事件触发帧)
|
||
- Sporadic frame (Sporadic 帧)
|
||
- Diagnostic frames MRF 与 SRF (诊断帧)
|
||
- Reserved frames (保留帧)
|
||
|
||
##### 7.1.1.1 无条件帧
|
||
LIN 集群中的常规帧类型。其在总线上的传输严格遵循调度表。
|
||
|
||
##### 7.1.1.2 事件触发帧
|
||
事件触发帧的报文设计应使其能与等效的无条件帧区分。
|
||
|
||
- **[SWS_LinIf_00009]** ⌈LIN 接口应将事件触发帧视为无条件帧,但接收端的 PID 不需与帧 ID 相同。⌋ ()
|
||
|
||
##### 7.1.1.3 Sporadic 帧
|
||
Sporadic 帧总是从主节点发送。当 sporadic slot 到期时:
|
||
- **[SWS_LinIf_00010]** ⌈LIN 接口仅在帧的至少一个信号被更新时才发送对应于该 sporadic slot 的 sporadic 帧。⌋ ()
|
||
|
||
##### 7.1.1.4 诊断帧 MRF 与 SRF
|
||
MRF 与 SRF 用于 LIN TP。
|
||
|
||
##### 7.1.1.5 保留帧
|
||
保留帧不被 LIN 接口处理。
|
||
|
||
#### 7.1.2 帧接收
|
||
|
||
- **[SWS_LinIf_00033]** ⌈LIN 接口应轮询 LIN 驱动以确定帧成功接收/发送状态。⌋ (SRS_Lin_01502, SRS_Lin_01558)
|
||
- **[SWS_LinIf_00128]** ⌈如帧接收/发送成功,LIN 接口应分别调用相关上层模块的 RX 指示或 TX 确认。⌋ (SRS_Lin_01502, SRS_Lin_01558)
|
||
- **[SWS_LinIf_00734]** ⌈帧接收失败应被 LIN 接口处理。⌋ (SRS_Lin_01502, SRS_Lin_01558)
|
||
|
||
#### 7.1.3 帧发送
|
||
|
||
主节点的帧发送由调度表驱动。LIN 接口在通道到期时发送对应 header 和响应。
|
||
|
||
- **[SWS_LinIf_00201]** ⌈LIN 接口的 `LinIf_Transmit` API 应在 PDU 路由器请求时启动 LIN 帧的发送。⌋ (SRS_Lin_01571)
|
||
|
||
#### 7.1.4 Slave-to-slave 通信(仅主节点)
|
||
当主节点的调度表条目到期且 PDU 方向为 slave-to-slave 时,LIN 接口发送 header 但不发送响应。
|
||
|
||
#### 7.1.5 不相关通信(仅从节点)
|
||
当从节点检测到接收的 header PID 与本节点的相关帧 PID 都不匹配时,该帧被忽略。
|
||
|
||
### 7.2 调度(仅主节点)
|
||
|
||
LIN 接口具备调度表管理器,处理调度表的切换和帧分派。
|
||
|
||
#### 7.2.1 调度表管理器
|
||
- **[SWS_LinIf_00202]** ⌈LIN 接口应支持运行调度表。⌋ (SRS_Lin_01564)
|
||
- **[SWS_LinIf_00495]** ⌈LIN 接口应通过 LinSM 上层的请求切换调度表。⌋ (SRS_Lin_01564)
|
||
- **[SWS_LinIf_00028]** ⌈LIN 接口应在主节点中实现调度表处理。⌋ (SRS_Lin_01546)
|
||
|
||
### 7.3 Main function
|
||
|
||
LIN 接口的 main function 用于发起帧、检查发送/接收状态、超时检测等。
|
||
|
||
- **[SWS_LinIf_00384]** ⌈LIN 接口应为每个通道提供 main 函数。⌋ (SRS_BSW_00373, SRS_Lin_01546, SRS_Lin_01555, SRS_Lin_01561)
|
||
|
||
### 7.4 网络管理
|
||
|
||
#### 7.4.1 节点管理
|
||
LIN 接口为每个通道维护以下状态:
|
||
- LINIF_CHANNEL_OPERATIONAL
|
||
- LINIF_CHANNEL_SLEEP
|
||
- LINIF_CHANNEL_SLEEP_PENDING
|
||
|
||
#### 7.4.2 进入睡眠过程
|
||
当 LIN State Manager 调用 `LinIf_GotoSleep` 时:
|
||
- 主节点:LIN 接口在合适的调度槽中发送 sleep 命令(MRF 0x3C with 0x00...)。
|
||
- 从节点:监测总线 sleep 命令并通知 LinSM 当总线进入睡眠。
|
||
|
||
#### 7.4.3 唤醒过程
|
||
- **[SWS_LinIf_00205]** ⌈LinIf_Wakeup API 应触发唤醒命令。⌋ (SRS_Lin_01515)
|
||
- **[SWS_LinIf_00459]** ⌈如向睡眠过渡时发生唤醒,通道应返回 OPERATIONAL 状态。⌋ (SRS_Lin_01560)
|
||
|
||
### 7.5 状态管理
|
||
|
||
#### 7.5.1 Response_error 信号 (仅从节点)
|
||
- **[SWS_LinIf_00763]** ⌈LIN 接口应在检测到错误时设置 response_error 信号。⌋ (SRS_Lin_01595)
|
||
- **[SWS_LinIf_00764]** ⌈LIN 接口应在成功 RX 后清除 response_error 信号。⌋ (SRS_Lin_01595)
|
||
|
||
### 7.6 诊断与节点配置
|
||
|
||
#### 7.6.1 主节点中的节点配置
|
||
主节点通过 MRF/SRF 实现节点配置。
|
||
|
||
#### 7.6.2 从节点中的节点配置
|
||
- **[SWS_LinIf_00810]** ⌈LIN 从节点应支持 ISO 17987-3 强制的节点配置服务。⌋ (SRS_Lin_01594)
|
||
- **[SWS_LinIf_00811]** ⌈LIN 从节点应处理 AssignNAD、AssignFrameIdRange、ReadByIdentifier (ID 0/2)、SaveConfiguration 等服务。⌋ (SRS_Lin_01594)
|
||
|
||
#### 7.6.3 诊断 – 传输协议
|
||
|
||
LIN TP 支持单帧(SF)和多帧(FF + CF)报文。
|
||
|
||
- **[SWS_LinIf_00062]** ⌈LIN TP 应支持半双工连接,主节点支持功能请求传输。⌋ (SRS_Lin_01534, SRS_Lin_01592)
|
||
- **[SWS_LinIf_00313]** ⌈AUTOSAR LIN TP 应基于 ISO 17987 的诊断传输层。⌋ (SRS_Lin_01579)
|
||
- **[SWS_LinIf_00314]** ⌈应允许每个通道有一个 TP 实例。⌋ (SRS_Lin_01574)
|
||
|
||
##### LIN TP 超时
|
||
- **[SWS_LinIf_00617]** ⌈LIN TP 应支持 N_As 超时。⌋ (SRS_Lin_01593)
|
||
- **[SWS_LinIf_00621]** ⌈LIN TP 应支持 N_Cs 超时。⌋ (SRS_Lin_01593)
|
||
- **[SWS_LinIf_00623]** ⌈LIN TP 应支持 N_Cr 超时。⌋ (SRS_Lin_01593)
|
||
|
||
### 7.7 多通道与多驱动处理
|
||
|
||
#### 7.7.1 多通道
|
||
LIN 接口可处理多个通道。每个通道独立处理调度、超时、状态。
|
||
|
||
#### 7.7.2 多 LIN 驱动
|
||
LIN 接口可同时处理多个 LIN 驱动。
|
||
|
||
#### 7.7.3 多 LIN 收发器驱动
|
||
LIN 接口可与多个 LIN 收发器驱动协作。
|
||
|
||
### 7.8 错误分类
|
||
|
||
#### 7.8.1 开发错误
|
||
|
||
| 错误名 | 错误码 | 含义 |
|
||
| --- | --- | --- |
|
||
| LINIF_E_UNINIT | 0x00 | API 在 LIN 接口未初始化时调用 |
|
||
| LINIF_E_PARAMETER | 0x02 | API 参数错误 |
|
||
| LINIF_E_PARAMETER_POINTER | 0x03 | API 空指针参数 |
|
||
| LINIF_E_NONEXISTENT_CHANNEL | 0x04 | 不存在的通道 ID |
|
||
| LINIF_E_NONEXISTENT_SCHEDULE | 0x06 | 不存在的调度 ID |
|
||
| LINIF_E_SCHEDULE_REQUEST_ERROR | 0x07 | 调度请求错误 |
|
||
| LINIF_E_PARAMETER_TIMEOUT | 0x09 | TP 超时参数错误 |
|
||
| LINIF_E_RESPONSE | 0x0A | 响应错误 |
|
||
|
||
#### 7.8.2 运行时错误
|
||
- **[SWS_LinIf_00729]** ⌈LIN 接口应根据规定上报运行时错误。⌋ (SRS_BSW_00452, SRS_BSW_00327, SRS_BSW_00385)
|
||
|
||
#### 7.8.3 瞬态故障
|
||
LIN 接口不上报瞬态故障。
|
||
|
||
#### 7.8.4 生产错误
|
||
LIN 接口不上报生产错误。
|
||
|
||
#### 7.8.5 扩展生产错误
|
||
LIN 接口不上报扩展生产错误。
|
||
|
||
---
|
||
|
||
## 8. API 规范
|
||
|
||
### 8.1 导入类型
|
||
|
||
#### 8.1.1 标准类型
|
||
|
||
| 类型 | 来源 |
|
||
| --- | --- |
|
||
| Std_ReturnType | Std_Types.h |
|
||
| Std_VersionInfoType | Std_Types.h |
|
||
|
||
#### 8.1.2 类型定义
|
||
|
||
##### LinIf_Mode
|
||
|
||
```c
|
||
typedef uint8 LinIf_Mode;
|
||
```
|
||
取值:
|
||
- LINIF_OPERATIONAL = 0x00
|
||
- LINIF_SLEEP = 0x01
|
||
|
||
##### LinIf_SchHandleType
|
||
|
||
```c
|
||
typedef uint8 LinIf_SchHandleType;
|
||
```
|
||
|
||
调度表索引类型。值 0 (LINIF_NULL_SCHEDULE) 表示空调度表。
|
||
|
||
##### LinTp_Mode
|
||
|
||
```c
|
||
typedef uint8 LinTp_Mode;
|
||
```
|
||
取值:
|
||
- LINTP_APPLICATIVE_SCHEDULE = 0
|
||
- LINTP_DIAG_REQUEST = 1
|
||
- LINTP_DIAG_RESPONSE = 2
|
||
|
||
### 8.2 LIN 接口 API
|
||
|
||
#### 8.2.1 LinIf_Init
|
||
|
||
```c
|
||
void LinIf_Init(
|
||
const LinIf_ConfigType* ConfigPtr
|
||
)
|
||
```
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| Service ID | 0x01 |
|
||
| Sync/Async | Synchronous |
|
||
| Reentrancy | Non Reentrant |
|
||
| 参数 (in) | ConfigPtr — LIN 接口配置数据指针 |
|
||
| 返回值 | 无 |
|
||
| 描述 | 初始化 LIN 接口模块 |
|
||
|
||
- **[SWS_LinIf_00198]** ⌈LinIf_Init 应初始化所有 LIN 接口内部变量并将 LIN 通道置于 LINIF_CHANNEL_SLEEP 状态。⌋ (SRS_BSW_00101, SRS_BSW_00358, SRS_BSW_00414, SRS_BSW_00416, SRS_Lin_01569)
|
||
|
||
#### 8.2.2 LinIf_GetVersionInfo
|
||
|
||
```c
|
||
void LinIf_GetVersionInfo(
|
||
Std_VersionInfoType* versioninfo
|
||
)
|
||
```
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| Service ID | 0x02 |
|
||
| Sync/Async | Synchronous |
|
||
| Reentrancy | Reentrant |
|
||
| 参数 (out) | versioninfo — 版本信息指针 |
|
||
|
||
- **[SWS_LinIf_00340]** ⌈返回模块的版本信息。⌋ (SRS_BSW_00407)
|
||
|
||
#### 8.2.3 LinIf_Transmit
|
||
|
||
```c
|
||
Std_ReturnType LinIf_Transmit(
|
||
PduIdType TxPduId,
|
||
const PduInfoType* PduInfoPtr
|
||
)
|
||
```
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| Service ID | 0x04 |
|
||
| Sync/Async | Synchronous |
|
||
| Reentrancy | Reentrant for different PduIds |
|
||
| 参数 (in) | TxPduId — 要发送的 PDU ID;PduInfoPtr — PDU 数据指针 |
|
||
| 返回值 | E_OK 接受;E_NOT_OK 失败 |
|
||
| 描述 | 请求传输 PDU |
|
||
|
||
- **[SWS_LinIf_00201]** ⌈LinIf_Transmit API 在 PDU 路由器请求时应启动 LIN 帧的发送。⌋ (SRS_Lin_01571)
|
||
|
||
#### 8.2.4 LinIf_ScheduleRequest
|
||
|
||
```c
|
||
Std_ReturnType LinIf_ScheduleRequest(
|
||
NetworkHandleType Channel,
|
||
LinIf_SchHandleType Schedule
|
||
)
|
||
```
|
||
|
||
| 项目 | 内容 |
|
||
| --- | --- |
|
||
| Service ID | 0x05 |
|
||
| Sync/Async | Synchronous |
|
||
| Reentrancy | Non Reentrant for the same Channel |
|
||
| 参数 (in) | Channel — LIN 通道索引;Schedule — 调度表索引 |
|
||
| 返回值 | E_OK 接受;E_NOT_OK 失败 |
|
||
| 描述 | 请求切换调度表(仅主节点) |
|
||
|
||
#### 8.2.5 LinIf_GotoSleep
|
||
|
||
```c
|
||
Std_ReturnType LinIf_GotoSleep(
|
||
NetworkHandleType Channel
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x06 |
|
||
| --- | --- |
|
||
| 描述 | 启动进入睡眠过程 |
|
||
|
||
- **[SWS_LinIf_00204]** ⌈LinIf_GotoSleep 应启动 LIN 总线进入睡眠过程。⌋ (SRS_Lin_01523)
|
||
|
||
#### 8.2.6 LinIf_Wakeup
|
||
|
||
```c
|
||
Std_ReturnType LinIf_Wakeup(
|
||
NetworkHandleType Channel
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x07 |
|
||
| --- | --- |
|
||
| 描述 | 启动唤醒过程 |
|
||
|
||
#### 8.2.7 LinIf_SetTrcvMode
|
||
|
||
```c
|
||
Std_ReturnType LinIf_SetTrcvMode(
|
||
NetworkHandleType Channel,
|
||
LinTrcv_TrcvModeType TransceiverMode
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x09 |
|
||
| --- | --- |
|
||
| 描述 | 设置收发器模式 |
|
||
|
||
- **[SWS_LinIf_00544]** ⌈LIN 接口应支持收发器模式请求。⌋ (SRS_Lin_01584, SRS_Lin_01585, SRS_Lin_01586)
|
||
|
||
#### 8.2.8 LinIf_GetTrcvMode
|
||
|
||
```c
|
||
Std_ReturnType LinIf_GetTrcvMode(
|
||
NetworkHandleType Channel,
|
||
LinTrcv_TrcvModeType* TransceiverModePtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x0A |
|
||
| --- | --- |
|
||
| 描述 | 读取收发器模式 |
|
||
|
||
- **[SWS_LinIf_00545]** ⌈LIN 接口应支持读取收发器模式。⌋ (SRS_Lin_01587)
|
||
|
||
#### 8.2.9 LinIf_GetTrcvWakeupReason
|
||
|
||
```c
|
||
Std_ReturnType LinIf_GetTrcvWakeupReason(
|
||
NetworkHandleType Channel,
|
||
LinTrcv_TrcvWakeupReasonType* TrcvWuReasonPtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x0B |
|
||
| --- | --- |
|
||
| 描述 | 读取收发器唤醒原因 |
|
||
|
||
- **[SWS_LinIf_00547]** ⌈LIN 接口应支持读取收发器唤醒原因。⌋ (SRS_Lin_01588)
|
||
|
||
#### 8.2.10 LinIf_SetTrcvWakeupMode
|
||
|
||
```c
|
||
Std_ReturnType LinIf_SetTrcvWakeupMode(
|
||
NetworkHandleType Channel,
|
||
LinTrcv_TrcvWakeupModeType LinTrcvWakeupMode
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x0C |
|
||
| --- | --- |
|
||
| 描述 | 配置收发器唤醒模式 |
|
||
|
||
- **[SWS_LinIf_00550]** ⌈LIN 接口应支持配置收发器唤醒通知。⌋ (SRS_Lin_01589)
|
||
|
||
#### 8.2.11 LinIf_GetPIDTable (从节点)
|
||
|
||
```c
|
||
Std_ReturnType LinIf_GetPIDTable(
|
||
NetworkHandleType Channel,
|
||
uint8** PidBufferPtr,
|
||
uint8* PidBufferLengthPtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x16 |
|
||
| --- | --- |
|
||
| 描述 | 读取从节点的 PID 表 |
|
||
|
||
#### 8.2.12 LinIf_SetPIDTable (从节点)
|
||
|
||
```c
|
||
Std_ReturnType LinIf_SetPIDTable(
|
||
NetworkHandleType Channel,
|
||
uint8* PidBufferPtr,
|
||
uint8 PidBufferLength
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x17 |
|
||
| --- | --- |
|
||
| 描述 | 设置从节点的 PID 表 |
|
||
|
||
#### 8.2.13 LinIf_GetConfiguredNAD (从节点)
|
||
|
||
```c
|
||
Std_ReturnType LinIf_GetConfiguredNAD(
|
||
NetworkHandleType Channel,
|
||
uint8* NadPtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x18 |
|
||
| --- | --- |
|
||
| 描述 | 读取已配置的 NAD |
|
||
|
||
#### 8.2.14 LinIf_SetConfiguredNAD (从节点)
|
||
|
||
```c
|
||
Std_ReturnType LinIf_SetConfiguredNAD(
|
||
NetworkHandleType Channel,
|
||
uint8 Nad
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x19 |
|
||
| --- | --- |
|
||
| 描述 | 设置已配置的 NAD |
|
||
|
||
#### 8.2.15 LinTp_Init
|
||
|
||
```c
|
||
void LinTp_Init(
|
||
const LinTp_ConfigType* ConfigPtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x40 |
|
||
| --- | --- |
|
||
| 描述 | 初始化 LIN TP |
|
||
|
||
- **[SWS_LinIf_00350]** ⌈LinTp_Init 应初始化所有 LIN TP 内部变量。⌋ (SRS_BSW_00101, SRS_BSW_00358, SRS_BSW_00414, SRS_BSW_00416, SRS_Lin_01540)
|
||
|
||
#### 8.2.16 LinTp_Transmit
|
||
|
||
```c
|
||
Std_ReturnType LinTp_Transmit(
|
||
PduIdType TxPduId,
|
||
const PduInfoType* PduInfoPtr
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x49 |
|
||
| --- | --- |
|
||
| 描述 | 请求传输 TP 消息 |
|
||
|
||
#### 8.2.17 LinTp_GetVersionInfo
|
||
|
||
```c
|
||
void LinTp_GetVersionInfo(
|
||
Std_VersionInfoType* versioninfo
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x42 |
|
||
| --- | --- |
|
||
| 描述 | 获取 TP 版本信息 |
|
||
|
||
#### 8.2.18 LinTp_Shutdown
|
||
|
||
```c
|
||
void LinTp_Shutdown(void)
|
||
```
|
||
|
||
| Service ID | 0x43 |
|
||
| --- | --- |
|
||
| 描述 | 关闭 LIN TP |
|
||
|
||
#### 8.2.19 LinTp_ChangeParameter
|
||
|
||
```c
|
||
Std_ReturnType LinTp_ChangeParameter(
|
||
PduIdType id,
|
||
TPParameterType parameter,
|
||
uint16 value
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x44 |
|
||
| --- | --- |
|
||
| 描述 | 在 TP 运行时修改参数 |
|
||
|
||
#### 8.2.20 LinIf_CheckWakeup
|
||
|
||
```c
|
||
Std_ReturnType LinIf_CheckWakeup(
|
||
EcuM_WakeupSourceType WakeupSource
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x60 |
|
||
| --- | --- |
|
||
| 描述 | 检查唤醒源 |
|
||
|
||
#### 8.2.21 LinIf_EnableBusMirroring
|
||
|
||
```c
|
||
Std_ReturnType LinIf_EnableBusMirroring(
|
||
NetworkHandleType Channel,
|
||
boolean MirroringActive
|
||
)
|
||
```
|
||
|
||
| Service ID | 0x61 |
|
||
| --- | --- |
|
||
| 描述 | 启用/禁用 LIN 通道总线镜像 |
|
||
|
||
### 8.3 回调通知
|
||
|
||
#### 8.3.1 LinIf_WakeupConfirmation
|
||
|
||
```c
|
||
void LinIf_WakeupConfirmation(
|
||
EcuM_WakeupSourceType WakeupSource
|
||
)
|
||
```
|
||
|
||
由 ICU 驱动调用,确认 LIN 接口的唤醒事件。
|
||
|
||
#### 8.3.2 LinIf_HeaderIndication (从节点)
|
||
|
||
```c
|
||
Std_ReturnType LinIf_HeaderIndication(
|
||
NetworkHandleType Channel,
|
||
Lin_PduType* PduPtr
|
||
)
|
||
```
|
||
|
||
LIN 驱动收到 header 时通知 LIN 接口。
|
||
|
||
#### 8.3.3 LinIf_RxIndication (从节点)
|
||
|
||
```c
|
||
void LinIf_RxIndication(
|
||
NetworkHandleType Channel,
|
||
uint8* Lin_SduPtr
|
||
)
|
||
```
|
||
|
||
LIN 驱动收到响应时通知 LIN 接口。
|
||
|
||
#### 8.3.4 LinIf_TxConfirmation (从节点)
|
||
|
||
```c
|
||
void LinIf_TxConfirmation(
|
||
NetworkHandleType Channel
|
||
)
|
||
```
|
||
|
||
LIN 驱动确认响应已发送。
|
||
|
||
#### 8.3.5 LinIf_LinErrorIndication (从节点)
|
||
|
||
```c
|
||
void LinIf_LinErrorIndication(
|
||
NetworkHandleType Channel,
|
||
Lin_SlaveErrorType ErrorStatus
|
||
)
|
||
```
|
||
|
||
LIN 驱动通知 LIN 接口出现通信错误。
|
||
|
||
### 8.4 调度函数
|
||
|
||
#### 8.4.1 LinIf_MainFunction_<LinIfChannel.ShortName>
|
||
|
||
```c
|
||
void LinIf_MainFunction_<LinIfChannel.ShortName>(void)
|
||
```
|
||
|
||
每通道一个 main 函数。负责轮询 LIN 驱动、调度表执行、超时观测。
|
||
|
||
### 8.5 期望接口
|
||
|
||
#### 8.5.1 强制接口
|
||
- Lin_SendFrame
|
||
- Lin_GoToSleep
|
||
- Lin_GoToSleepInternal
|
||
- Lin_Wakeup
|
||
- Lin_WakeupInternal
|
||
- Lin_GetStatus
|
||
- PduR_LinIfRxIndication
|
||
- PduR_LinIfTxConfirmation
|
||
- PduR_LinIfTriggerTransmit
|
||
- Det_ReportError
|
||
|
||
#### 8.5.2 可选接口
|
||
- LinTrcv_SetOpMode、LinTrcv_GetOpMode、LinTrcv_GetBusWuReason、LinTrcv_SetWakeupMode、LinTrcv_CheckWakeup
|
||
- BswM_LinTp_RequestMode
|
||
- Com_ReceiveSignal、Com_SendSignal
|
||
- Mirror_ReportLinFrame
|
||
- Det_ReportRuntimeError
|
||
- EcuM_BswErrorHook
|
||
|
||
#### 8.5.3 可配置接口
|
||
- <User_RxIndication>
|
||
- <User_TxConfirmation>
|
||
- <User_TriggerTransmit>
|
||
|
||
---
|
||
|
||
## 9. 时序图
|
||
|
||
> **[摘要]** 本章包含主从节点的帧发送、帧接收、slave-to-slave、不相关通信、sporadic 帧、事件触发帧、TP 消息发送/接收、进入睡眠过程、唤醒过程、内部唤醒等场景的 UML 时序图。详细图见原文 PDF 第 110-128 页。
|
||
|
||
### 9.1 帧发送
|
||
|
||
#### 9.1.1 主节点中的帧发送
|
||
主节点调度表条目到期时,主流程:
|
||
1. LinIf 在 main 函数中检查调度表条目;
|
||
2. 调用 PduR 获取数据;
|
||
3. 调用 Lin_SendFrame 发送 header + response;
|
||
4. 下次 main 调用时检查 Lin_GetStatus;
|
||
5. 成功后调用 PduR_LinIfTxConfirmation。
|
||
|
||
#### 9.1.2 从节点中的帧发送
|
||
从节点接收 header 时:
|
||
1. LIN 驱动调用 LinIf_HeaderIndication;
|
||
2. LinIf 调用 PduR_LinIfTriggerTransmit 获取数据并交给驱动;
|
||
3. 驱动调用 LinIf_TxConfirmation;
|
||
4. LinIf 调用 PduR_LinIfTxConfirmation。
|
||
|
||
### 9.2 帧接收
|
||
类似过程,使用 RX 通知。
|
||
|
||
### 9.6 TP 消息发送
|
||
TP 消息分段为 SF 或 FF + CF 序列,通过 MRF/SRF 在专门调度表中发送。
|
||
|
||
---
|
||
|
||
## 10. 配置规范
|
||
|
||
### 10.1 如何阅读本章
|
||
|
||
参考 [ECU Configuration Specification] 文档了解参数定义结构。
|
||
|
||
### 10.2 容器与配置参数
|
||
|
||
#### 10.2.1 配置工具
|
||
LIN 接口配置由生成器工具基于 ARXML 输入生成 C 代码与头文件。
|
||
|
||
### 10.3 LinIf_Configuration
|
||
|
||
#### 10.3.1 LinIf
|
||
根容器。
|
||
|
||
#### 10.3.2 LinIfGlobalConfig
|
||
全局配置容器。
|
||
|
||
#### 10.3.3 LinIfGeneral
|
||
| 参数 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| LinIfDevErrorDetect | bool | 启用/禁用开发错误检测 |
|
||
| LinIfMultipleDriversSupported | bool | 是否支持多 LIN 驱动 |
|
||
| LinIfTrcvDriverSupported | bool | 是否支持 LIN 收发器驱动 |
|
||
| LinIfTpSupported | bool | 是否支持 LIN TP |
|
||
| LinIfBusMirroringSupported | bool | 是否支持总线镜像 |
|
||
| LinIfMainFunctionPeriod | float | main 函数周期(秒) |
|
||
| LinIfMaxFrameLength | int | 最大帧长 |
|
||
| LinIfPublicCddHeaderFile | string | CDD 头文件名 |
|
||
|
||
> **[摘要]** 完整参数列表(包含 LinIfChannel、LinIfFrame、LinIfNodeType、LinIfScheduleTable、LinIfEntry、LinIfMaster、LinIfSlave、LinIfNodeConfigurationIdentification、LinIfTransceiverDrvConfig 等容器)详见原文 PDF 第 129-157 页。
|
||
|
||
#### 10.3.4 LinIfChannel
|
||
LIN 通道配置容器。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| LinIfChannelId | int | 通道 ID |
|
||
| LinIfChannelRef | ref | 引用 LIN 通信通道 |
|
||
| LinIfNodeType | ref | 引用主节点或从节点类型 |
|
||
| LinIfMainFunctionPeriod | float | 通道 main 函数周期 |
|
||
|
||
#### 10.3.5 LinIfNodeType
|
||
主节点或从节点容器。包含从节点的 NAD、PID 表、调度表等。
|
||
|
||
#### 10.3.6 LinIfFrame
|
||
LIN 帧定义。
|
||
| 参数 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| LinIfChecksumType | enum | CLASSIC 或 ENHANCED |
|
||
| LinIfFrameId | int | 帧 ID (0-59) |
|
||
|
||
### 10.4 LIN 传输层配置
|
||
|
||
#### 10.4.1 LinTp
|
||
LIN TP 根容器。
|
||
|
||
#### 10.4.2 LinTpGeneral
|
||
启用开发错误检测、版本信息 API 等通用参数。
|
||
|
||
#### 10.4.3 LinTpGlobalConfig
|
||
| 参数 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| LinTpMaxBufReq | int | 最大缓冲区请求次数 |
|
||
| LinTpVersionInfoApi | bool | 是否启用版本信息 API |
|
||
|
||
#### 10.4.4 LinTpChannelConfig
|
||
每通道 TP 配置。
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| LinTpNas | float | N_As 超时(秒) |
|
||
| LinTpNcs | float | N_Cs 超时(秒) |
|
||
| LinTpNcr | float | N_Cr 超时(秒) |
|
||
|
||
#### 10.4.5 LinTpRxNSdu
|
||
RX TP 消息(N-SDU)配置。
|
||
|
||
#### 10.4.6 LinTpTxNSdu
|
||
TX TP 消息(N-SDU)配置。
|
||
|
||
### 10.5 已发布信息
|
||
按 BSW General 提供模块版本信息。
|
||
|
||
---
|
||
|
||
## 11. 不适用需求
|
||
|
||
部分 SRS_BSW 通用需求在 LIN 接口规范范围之外。详细列表见原文 PDF 第 169 页。
|
||
|
||
---
|
||
|
||
## 翻译说明
|
||
|
||
- 本译本基于 AUTOSAR CP 4.4.0 (2018-10-31 发布) 的 LIN 接口规范 (Document ID 073)
|
||
- 严格保留 API 名称、SWS 需求 ID、协议 ID、AUTOSAR 方框符 ⌈⌋
|
||
- 部分大型参考表与时序图采用摘要标记,完整内容请参阅原文 PDF (169 页)
|
||
- 摘要标记位置:
|
||
- 第 6 章需求可追溯性表
|
||
- 第 9 章时序图章节
|
||
- 第 10.3 章配置参数表(详细参数)
|
||
- 第 11 章不适用需求列表
|