文章目录
一、引言
【源码地址】:XCPlite-5.3
在vector官网,一共给出了XCP协议的三个实现版本,三个实现版本之间的实现内容如下:
- XCPlite : 基于ASAM XCP V1.4 实现的XCP轻量版
- XCP Professional Driver : 包含了ASAM规范的有用扩展,并支持基于工具的配置。可用于Vector CANbedded基础软件
- MICROSAR XCP: 包含上面一个版本的所有功能特性,并基于AUTOSAR规范。可用于Vector MICROSAR基本软件。
本文对github上由vector开源的XCP协议实现版本XCPlite-5.3进行简要分析。
二、编译运行
(1)编译环境安装:
sudo apt-get install cmake g++
(2)资源获取:
git clone https://github.com/vectorgrp/XCPlite.git
(3)编译
cd XCPlite
git checkout V5.3
cd C_Demo
mkdir build && cd build
cmake ..
make
(4)运行
./C_Demo.out -bind 192.168.1.110 -port 5555 -tcp
-bind : serverip 当前IP
-port: 固定 5555
-tcp : tcp/udp
三、CANoe下的XCP工具使用
使用CANoe的XCP工具与XCPlite模块通信搭建。(VN5650的使用的以太网口配置,参照北汇培训文档)
1、CANoe导入xcplite生成的a2l文件
2、导入时选择基于TCP的连接
3、A2L下 网络参数调整 HOST: 初次导入需要IP调整(C_demo 作为TCP server)
4 、在XCPlite启动的前,需要选择 测量 参数 , 被选择参数 后续可以更改 采样方式
5.启动 CANOE 的 xcp(确保网络配置已完成),执行
四、源码分析
4.1 概述
该版本基于ASAM XCP Protocol Layer V1.4实现。
支持以下命令:
- GET_COMM_MODE_INFO
- GET_ID GET_VERSION
- SET_MTA UPLOAD
- SHORT_UPLOAD
- DOWNLOAD
- SHORT_DOWNLOAD
- GET_CAL_PAGE
- SET_CAL_PAGE
- BUILD_CHECKSUM
- GET_DAQ_RESOLUTION_INFO
- GET_DAQ_PROCESSOR_INFO
- GET_DAQ_EVENT_INFO
- GET_DAQ_LIST_INFO
- FREE_DAQ
- ALLOC_DAQ
- ALLOC_ODT
- ALLOC_ODT_ENTRY
- SET_DAQ_PTR
- WRITE_DAQ
- WRITE_DAQ_MULTIPLE
- GET_DAQ_LIST_MODE
- SET_DAQ_LIST_MODE
- START_STOP_SYNCH
- START_STOP_DAQ_LIST
- GET_DAQ_CLOCK
- GET_DAQ_CLOCK_MULTICAST
- TIME_CORRELATION_PROPERTIES
限制:
- 不支持8位和16位CPU,仅支持在32位或64位Linux和Windows平台上进行测试
- 不支持Motorola字节序(大端)
- 不符合misra规范
- ODT的总数限制为64K
- ODT条目的总数限制为64K
- 固定的DAQ+ODT 2字节DTO头
- 固定的32位时间戳
- 仅支持动态DAQlist分配
- 不支持恢复
- 不支持事件过载指示
- DAQ不支持预分频器
- 不支持ODT优化
- 不支持Seed & key
- 不支持Flash programming
4.2 项目结构
这份源码给出了XCP的c语言实现版本和c++实现版本,结合项目实际情况,本章节对C++实现版本进行分析:
一级目录 | 二级目录 | 文件说明 | |
XCPLite-5.3 | |||
CPP_Demo | |||
CANape | CANape配置 | ||
CMakeLists.txt | |||
main_cfg.h | 该文件由main_cfg.h.in生成,定义了一些关于XCP协议层与传输层以及A2L,默认ip地址与端口方面的宏 | ||
main_cfg.h.in | 配置文件 |