Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_XCP.md
T

373 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# XCP 模块规范 (Specification of Module XCP)
> **AUTOSAR CP Release 4.4.0**
> **文档 ID 412: AUTOSAR_SWS_XCP**
## 元信息
| 项目 | 内容 |
| --- | --- |
| 文档标题 | XCP 模块规范 |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 412 |
| 文档状态 | 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 | 以太网支持增强 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑修正 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | DAQ 增强 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑变更 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 增加 XCP on UDP/TCP |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 引入 XCP |
---
## 目录
- [1. 介绍](#1-介绍)
- [2. 缩略语](#2-缩略语)
- [3. 相关文档](#3-相关文档)
- [4. 约束与假设](#4-约束与假设)
- [5. 与其他模块的依赖](#5-与其他模块的依赖)
- [6. 需求可追溯性](#6-需求可追溯性)
- [7. 功能规范](#7-功能规范)
- [8. API 规范](#8-api-规范)
- [9. 配置规范](#9-配置规范)
---
## 1. 介绍
本规范规定了 AUTOSAR 基础软件模块 **XCP** (Universal Calibration Protocol) 的功能、API 和配置。
XCP 是 ASAM 标准化的通用测量和标定协议,支持:
- 测量(Measurement):读取 ECU 内部变量
- 标定(Calibration):修改 ECU 标定参数
- 数据采集(DAQ):周期或事件触发的数据流
- 数据刺激(STIM):向 ECU 注入数据
XCP 支持多种传输层:
- XCP on CAN
- XCP on FlexRay
- XCP on Ethernet (UDP/TCP)
---
## 2. 缩略语
| 缩略语 | 描述 |
| --- | --- |
| AUTOSAR | Automotive Open System Architecture |
| A2L | ASAM 2MC 语言文件扩展 |
| ASAM | Association for Standardization of Automation and Measuring Systems |
| BSW | Basic Software |
| CAN | Controller Area Network |
| CanIf | CAN Interface |
| CTO | Command Transfer Object |
| DAQ | Data AcQuisition |
| DTO | Data Transfer Object |
| ECU | Electronic Control Unit |
| FrIf | FlexRay Interface |
| LPDU | Data Link Layer PDU |
| MCD | Measurement Calibration and Diagnostics |
| MISRA | Motor Industry Software Reliability Association |
| ODT | Object Descriptor Table |
| PDU | Protocol Data Unit |
| SchM | Schedule Manager |
| SRS | Software Requirements Specification |
| STIM | Data Stimulation packet |
| SW | Software |
| SWS | Software Specification |
| TCP/IP | Transmission Control Protocol / Internet Protocol |
| TS | Time Stamp |
| UDP/IP | User Datagram Protocol / Internet Protocol |
| XCP | Universal Calibration Protocol |
| ISR | Interrupt Service Routine |
| DET | Default Error Tracer |
---
## 3. 相关文档
### 3.1 输入文档
- [0] Basic Software Module Description Template
- [1] List of Basic Software Modules
- [2] AUTOSAR Layered Software Architecture
- [3] General Requirements on Basic Software Modules
- [4] Specification of RTE (BSW Scheduler)
- [5] Specification of ECU Configuration
- [6] Specification of Memory Mapping
- [7] Specification of FlexRay Interface
- [8] Specification of CAN Interface
- [9] Specification of Socket Adaptor
- [10] Requirements on XCP Module
- [11] AUTOSAR OS Specification
- [12] General Specification of Basic Software Modules
### 3.1.1 相关标准
- [13] ASAM XCP Part1 Overview, Version 1.1
- [14] ASAM XCP Part3 Transport Layer Specification XCP on CAN, Version 1.2
- [15] ASAM XCP Part3 Transport Layer Specification XCP on Ethernet (TCP_IP & UDP_IP), Version 1.1
- [16] ASAM XCP Part3 Transport Layer Specification XCP on FlexRay, Version 1.1
### 3.2 相关规范
SWS BSW General [12] 适用。
---
## 4. 约束与假设
### 4.1 限制
不在范围内的功能:
- SET_DAQ_ID 命令(XCP CAN 传输层规范)
- AUTOSAR RTE 当前不提供 XCP 直接通信 API
- NAX 仅通过 ASAM 配置文件 A2L 配置
- LIN 总线不支持 ASAM XCP
### 4.2 适用车域
n/a
---
## 5. 与其他模块的依赖
### 5.1 AUTOSAR RTE (BSW Scheduler)
调度 XCP main 函数。
### 5.2 AUTOSAR FlexRay Interface
通过 FlexRay 收发 XCP PDU。
### 5.3 AUTOSAR CAN Interface
通过 CAN 收发 XCP PDU。
### 5.4 AUTOSAR SocketAdaptor
通过 Ethernet 收发 XCP PDU。
### 5.5 AUTOSAR RTE
用于将 ROM/FLASH 中的标定参数复制到 RAM(双指针方法)。
---
## 6. 需求可追溯性
| 需求 ID | 描述 | 满足者 |
| --- | --- | --- |
| SRS_BSW_00101 | 初始化 | SWS_Xcp_00010 |
| SRS_BSW_00407 | 版本信息 | SWS_Xcp_00020 |
| SRS_Xcp_00001 | XCP 协议 | SWS_Xcp_00050 |
> **[摘要]** 完整需求追溯表见原文 PDF 第 18-25 页。
---
## 7. 功能规范
### 7.1 XCP 协议概述
XCP 是基于 master-slave 的协议:
- **Master**:外部工具(标定工具,如 INCA、CANape)
- **Slave**:ECU 上的 XCP 模块
通信通过 CTO 和 DTO 进行:
- **CTO** (Command Transfer Object):命令/响应
- **DTO** (Data Transfer Object):DAQ/STIM 数据
### 7.2 标准 XCP 命令
| 命令 | 含义 |
| --- | --- |
| CONNECT | 建立 XCP 会话 |
| DISCONNECT | 关闭会话 |
| GET_STATUS | 查询状态 |
| GET_ID | 获取标识 |
| SET_MTA | 设置内存传输地址 |
| UPLOAD | 上传内存 |
| DOWNLOAD | 下载到内存 |
| FREE_DAQ | 释放 DAQ 列表 |
| ALLOC_DAQ | 分配 DAQ 列表 |
| WRITE_DAQ | 写 DAQ 项 |
| SET_DAQ_LIST_MODE | 配置 DAQ 模式 |
| START_STOP_DAQ_LIST | 启动/停止 DAQ |
| GET_DAQ_CLOCK | 获取 DAQ 时钟 |
| PROGRAM_START | 开始编程 |
| PROGRAM | 编程数据 |
| PROGRAM_RESET | 编程后复位 |
### 7.3 DAQ 数据采集
#### 7.3.1 DAQ 配置
- DAQ List
- ODT (Object Descriptor Table)
- ODT Entry
#### 7.3.2 DAQ 运行模式
- 周期触发
- 事件触发
- 直接写
### 7.4 标定页切换
- Calibration Page:RAM 中的标定值
- Working Page:工作页
- Reference Page:参考页(ROM/Flash)
### 7.5 传输层
#### 7.5.1 XCP on CAN
- DLC 通常为 8
- 11 位或 29 位 CAN ID
#### 7.5.2 XCP on FlexRay
- 使用 FlexRay 静态/动态段
- 支持帧拆分
#### 7.5.3 XCP on Ethernet
- UDP 或 TCP
- 端口可配置
### 7.6 错误分类
#### 7.6.1 开发错误
| 错误名 | 错误码 | 含义 |
| --- | --- | --- |
| XCP_E_INIT_FAILED | 0x01 | 初始化失败 |
| XCP_E_UNINIT | 0x02 | 未初始化 |
| XCP_E_PARAM_POINTER | 0x03 | NULL 指针 |
| XCP_E_INVALID_PDUID | 0x04 | 无效 PDU ID |
---
## 8. API 规范
### 8.1 导入类型
| 模块 | 头文件 | 导入类型 |
| --- | --- | --- |
| ComStack_Types | ComStack_Types.h | PduIdType, PduInfoType |
| Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType |
### 8.2 类型定义
#### 8.2.1 Xcp_ConfigType
```c
typedef struct Xcp_ConfigType Xcp_ConfigType;
```
### 8.3 函数定义
#### 8.3.1 Xcp_Init
```c
void Xcp_Init(const Xcp_ConfigType* Xcp_ConfigPtr)
```
| Service ID | 0x00 |
| --- | --- |
#### 8.3.2 Xcp_GetVersionInfo
```c
void Xcp_GetVersionInfo(Std_VersionInfoType* versioninfo)
```
#### 8.3.3 Xcp_Transmit
```c
Std_ReturnType Xcp_Transmit(
PduIdType TxPduId,
const PduInfoType* PduInfoPtr
)
```
#### 8.3.4 Xcp_MainFunction
```c
void Xcp_MainFunction(void)
```
#### 8.3.5 Xcp_SetTransmissionMode
```c
void Xcp_SetTransmissionMode(
NetworkHandleType Channel,
Xcp_TransmissionModeType Mode
)
```
### 8.4 回调通知
#### 8.4.1 Xcp_RxIndication
```c
void Xcp_RxIndication(
PduIdType RxPduId,
const PduInfoType* PduInfoPtr
)
```
#### 8.4.2 Xcp_TxConfirmation
```c
void Xcp_TxConfirmation(PduIdType TxPduId)
```
#### 8.4.3 Xcp_TriggerTransmit
```c
Std_ReturnType Xcp_TriggerTransmit(
PduIdType TxPduId,
PduInfoType* PduInfoPtr
)
```
### 8.5 期望接口
#### 8.5.1 强制接口
- CanIf_Transmit / FrIf_Transmit / SoAd_IfTransmit
- Det_ReportError
---
## 9. 配置规范
### 9.1 容器与配置参数
#### 9.1.1 Xcp
根容器。
#### 9.1.2 XcpConfig
配置集容器。
#### 9.1.3 XcpGeneral
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| XcpDevErrorDetect | bool | DET 启用 |
| XcpVersionInfoApi | bool | 版本信息 API |
| XcpMainFunctionPeriod | float | main 周期 |
| XcpOnCanEnabled | bool | XCP on CAN 启用 |
| XcpOnFrEnabled | bool | XCP on FlexRay 启用 |
| XcpOnEthernetEnabled | bool | XCP on Ethernet 启用 |
#### 9.1.4 XcpDaqList
DAQ 列表配置。
#### 9.1.5 XcpEvent
事件配置(周期、信道等)。
#### 9.1.6 XcpSegment, XcpPage
段和页配置(用于标定)。
> **[摘要]** 完整配置详见原文 PDF 第 50-60 页。
---
## 翻译说明
- 本译本基于 AUTOSAR CP 4.4.0 的 XCP 规范 (Document ID 412,共 62 页)
- 摘要标记位置:第 6 章需求追溯、第 9 章配置