XCP协议在以太网上实现的配置

1. XCP协议在以太网上实现

(1)背景与需求

  • 带宽限制问题:CAN 2.0标准最大带宽仅1M,即使CAN FD标准也小于10M,实际使用中仅采集几个高速数据就可能占满总线带宽。
  • 应用场景需求:复杂标定工作中,XCP协议在CAN线上运行受带宽限制,需频繁调整数据采集对象和周期。
  • 解决方案:将XCP协议移植到以太网上,利用以太网更高带宽满足实际需求。

(2)配置设备窗口

  • 物理连接差异:XCP on IP使用以太网与控制器连接,区别于XCP on CAN的CAN总线连接。
  • 配置一致性:除物理总线类型不同外,其他配置部分与XCP on CAN基本一致。

(3)启动工程并配置

  • 工程相似性:工程结构与XCP on CAN高度类似,启动后可正常获取ECU数据。
  • 实时修改能力:支持实时修改信号参数(如正弦波振幅),数据采集功能正常。
  • 带宽优势:以太网XCP可采集大量数据(采样周期短至1毫秒),仅占用19%以太网带宽,远优于CAN网络。
  • 报文差异:以太网报文突破CAN的8字节限制,大幅提升通信带宽和时效性。
  • 功能实现:同一应用层协议在CAN和以太网总线均能实现XCP功能,但以太网提供更高灵活性。

2. XCP协议的网络层级关系

(1)层级划分

  • 应用层到传输层:由BSW的XCP模块及其内部XCP on IP传输层协议实现;
  • 网络层:由SOAD模块和TCP/IP模块实现;
  • 数据链路层:由BSW的ETHIF模块实现;
  • 物理层:由ETH Controller(ETH驱动)实现。

(2)配置差异

  • 相比XCP on CAN,XCP on IP新增网络层配置;
  • 需定义ECU的socket连接、网络地址传输协议等CAN通信中无相关的配置项。

(3)数据传输流程

  • 发送过程:XCP模块→XCP on IP→SOAD→TCP/IP→ETHIF→ETH Net;
  • 接收过程:ETH Net→ETHIF→TCP/IP→SOAD→XCP模块;
  • PDU转换:SOAD模块将套接字内容转换为PDU,实现AUTOSAR BSW层与以太网通信的交互。

3. 实际操作

(1)配置步骤

  • 必要模块检查:开始前确认xcpiip相关模块已创建,包括叉CP核心模块、TCP/IP、so AD either if和eth模块;
  • 配置顺序原则:采用自底向上方式,先在底层声明上层可用的元素;
  • 复用性说明:若已完成以太网通信配置,eth和if模块无需额外修改;
  • 新增需求:需在TCP/IP模块的网络层新建socket链接,供xCP模块使用。

(2)TCP协议配置

① TCP协议的config创建
  • 创建流程:在TCP IP模块中新建TCP协议的config,系统自动填充默认内容;
  • 配置继承:沿用以太网章节已完成的general配置(含IPV4地址、socket owner和UDP配置)。
② TCP协议的config配置
  • 关键参数设置
    • 拥塞控制:禁用TCP congestion avoidance enabled;
    • 延迟确认:关闭delay acknowledgement enable;
    • 动态重传:禁用TCP dynamic re tx timer enable;
    • 上界值:upper bound设为60(默认值过小);
    • 快速恢复:启用fast recovery enable;
    • 挥手超时:TCP fee wait to time out设为3;
    • 保活机制:keep alive probes设为5,最大重连次数3;
    • 缓冲区:最大发送buffer per socket设为1500(原4096过大);
    • 分段生命周期:tc pm sl设为5秒(需小于默认值);
    • 接收窗口:receive window max设为1500;
    • 重传超时:retransmission timeout设为1;
    • 同步重置:TCP同步最大重置次数设为5。
③ 参数配置的依据与建议
  • 网络适配原则
    • TTL设置:根据网络规模确定,示例给10;
    • 用户超时:user timeout从0调整为15;
    • ZWP配置:启用z WP,max retries从255降为100;
  • 调试建议:参数需结合具体网络场景调整,可参考工程实例验证;
  • 性能影响:参数配置直接影响通信表现,调试阶段需与配置联动检查。
④ TCP协议站的配置说明
  • 全局性说明:当前配置针对整个TCP协议栈,与具体功能通道无关;
  • 通道关联:具体通道配置在socket配置阶段完成;
  • 完整性检查:确认TCP模块已提供TCP和UDP传输协议配置。
⑤ IP地址的配置
  • 地址复用:可继续使用以太网通信的IP地址;
  • 新增规则:如需为xCP单独配置地址,需在TCP模块新增声明;
  • 地址绑定:必须为TCP模块声明控制器网络地址,才能正常使用传输协议;
  • 元素检查:配置完成后确认所有必要元素已完备。
⑥ SOAD模块衔接
  • Socket创建:需在SOAD模块新增供xCP使用的socket连接;
  • 连接声明:需指定使用的TCP/UDP协议及远程通信站的地址端口;
  • 配置重点:SOAD BSW modules的配置是主要工作内容。

(3)SOAD配置

① 配置SOAD BSW模块
  • 模块声明:需要声明X7P模块来使用SOED模块;
  • 新建模块:在以太网通信建立PDUR模块后,需要新建X7P模块。
② 配置SOAD主要工作
配置Routing Group
  • 建立目的:方便初始化时快速使能和关闭路由;
  • 配置内容
    • 建立4个Routing Group:以太网通信收/发、XCP通信收/发;
    • ID保持默认不配置;
    • 初始化时enable选择"是"。
配置Socket Connection Groups
  • 命名规范:为区分XCP通信,修改以太网通信的UDP0名称;
  • 配置步骤
    • 先创建所需元素;
    • ID不进行引用;
    • header enable选择FALSE;
    • 端口号在0-65535之间随机选择,本地端口暂定为13406。
配置Socket Connections
  • 远程配置
    • 定义同一网段内的远程地址和端口;
    • 声明使用的通信协议;
    • 活动时间:设置为7200(较长持续时间);
  • XCP UDP配置
    • 选择local IP address assignment;
    • 使用远程IP(需结合以太网网络层知识填写),暂定为10000端口;
    • 声明UDP连接方式;
    • 监听模式选择FALSE;
  • TCP配置参考:可参考COM的TCP配置方式;
  • PDU关联:需将SOAD与AUTOSAR层BSW中的PDU进行关联。
③ 配置ECU模块
  • 创建a rx mail文件存储e cuc
    • 专用文件创建:以太网通信部分需专门创建a rx mail文件,存储与以太网通信相关的e cuc配置数据;
    • 存储位置:使用分裂式窗口在工程导航栏中找到对应存储位置;
  • x CP模块下的配置
    • 配置位置选择:将e cuc配置放置在x CP模块下管理;
    • 模块间通信:考虑xsp模块与so AD模块之间的信息交换需求。
④ 交换xsp模块到so AD模块的信息
  • 通信协议规划:未来可能使用TCP两路和UDP两路通信;
  • PDU创建数量:需创建四个PDU满足通信需求。
⑤ 配置的命名与长度选择
  • 命名重要性:配置时需特别注意命名规范;
  • 长度选择:选择1024作为标准长度配置,其余配置按此标准类推。
⑥ 配置的耐心与工具跳转问题
  • 工具特性:配置工具常出现不知名跳转,需保持耐心;
  • 写入过程:完成配置后工具需将内容写入AR XML文件,检索元素耗时较长;
  • 等待提示:切换配置选项时触发写入过程,需适当等待。
⑦ 配置的保存与返回so ED模块
  • 保存操作:完成e cuc配置后及时保存;
  • 后续操作:返回so ED模块继续其他配置。
⑧ 灵活使用筛选功能
  • 元素管理:配置元素增多后,需灵活使用筛选功能提高效率;
  • 操作技巧:合理运用筛选快速定位所需配置项。
⑨ 配置SOAD Tx Pdu Route
  • 配置层级:需先完成第一级目录配置,才能进入第二级目录配置;
  • 核心功能:建立XCP模块使用SOAD发送的socket连接。
⑩ 进入第二级目录的配置
  • 声明内容:需声明整个socket的route destination;
  • 配置顺序:完成第一级目录配置后自动进入此阶段。
⑪ 引用socket connection group
  • 关键步骤:必须引用预先建立的socket connection group;
  • 配置目的:为后续路由配置建立基础连接框架。
⑫ 增加routing group
  • 后续操作:增加路由组后需完成UDP的TX配置;
  • 配置关联:路由组与之前引用的socket连接组形成完整通信链路。
⑬ 完成udp的tx的配置
  • 配置重点:主要完成UDP传输协议的发送端配置;
  • 验证方式:通过数据包发送测试验证配置正确性。
⑭ 建立主机发送的以太网连接
  • 连接类型:建立SOAD socket roots形式的以太网连接;
  • 功能定位:作为主机发送数据的物理层通道。
⑮ 新建元素并命名
  • 操作步骤:新建两个配置元素并命名;
  • 配置原则:名称需具描述性且符合命名规范。
⑯ 引用socket connection group并声明地址
  • 第一层配置:再次引用socket connection group;
  • 地址声明:明确指定链接的目标地址参数。
⑰ 选择rx user、type、pdu reference和routing group
  • 关键参数
    • RX User选择XCP;
    • Type选择IF;
    • PDU Reference选择ECUC中建立的接收PDU;
    • Routing Group选择UDP;
  • 配置顺序:完成此步骤后进入TCP配置阶段。
⑱ 新建文件夹并引用x CP所使用的TCP的pdu
  • 文件夹要求:需新建蓝色文件夹;
  • 引用注意:必须选择RX PDU而非TX PDU;
  • 错误处理:引用错误需及时更正。
⑲ 引用routing group并完成so AD部分的配置
  • 最终步骤:正确引用routing group完成全部配置;
  • 配置验证:确认XCP NI P网络层配置完整;
  • 后续工作:准备进入上一级配置阶段。
⑳ 配置传输层和应用层
  • 配置位置:所有传输层和应用层配置均在XCP模块中进行;
  • 前期准备:已完成XCP模块的General配置和Events Channel配置。
配置TCP
  • 协议声明:第一条transport layer声明给TCP使用;
  • 关键参数
    • Max CTO/DT0:设置为255以突破总线限制(默认值8偏小);
    • Transport Layer Tab:选择Internet TCP;
    • 一致性协议:选择ODT(On-Demand Transmission);
  • PDU配置
    • 新建TCP的RX PDU和TX PDU;
    • 映射Event Channel到XCP通道;
    • 核心映射:需将ECUC中定义的SOAD映射到XCP的PDU。
配置UDP
  • 协议声明:第二条transport layer声明XCP协议运行在UDP上;
  • 配置流程
    • 完成UDP基础配置;
    • 建立对应的RX PDU和TX PDU;
    • 配置TX Package Type时需多选:Response Error Event、Server选项;
  • 注意事项:保持其他参数默认配置。

二、知识小结

知识点 核心内容 考试重点/易混淆点 难度系数
XCP协议基础 XCP协议是用于标定和测量的通信协议,支持CAN和以太网等不同总线 CAN总线带宽限制(最大1M) vs 以太网带宽优势 ⭐⭐
XCP on CAN的局限性 在CAN总线上,XCP协议受限于带宽,仅能进行有限的数据采集和标定 带宽占满问题:高速DAQ可能耗尽总线资源 ⭐⭐⭐
XCP on IP的优势 以太网实现(XCPoIP)大幅提升带宽和灵活性,支持更复杂的数据传输 以太网报文突破8字节限制,支持高频率采样(如1ms周期) ⭐⭐
XCPoIP的协议栈架构 分层实现:应用层(XCP模块)→传输层(XCPoIP)→网络层(SoAd/TCPIP)→数据链路层(EthIf) 新增网络层配置:需定义Socket连接、IP地址等 ⭐⭐⭐⭐
TCP/IP协议栈配置 关键参数调整(如TCP重传超时、窗口大小)以优化XCP通信性能 动态重传计时器 vs 固定超时值的选择 ⭐⭐⭐
SoAd模块配置 建立Socket连接组(UDP/TCP),关联XCP模块与底层协议栈 PDU路由映射:需与ECUC模块定义的PDU严格对应 ⭐⭐⭐⭐
XCP模块扩展配置 新增传输层(TCP/UDP),配置最大报文长度(如255字节突破CAN限制) ODT一致性模式 vs 流模式选择 ⭐⭐⭐
实操演示对比 以太网XCP实现:同时采集多通道数据(带宽占用仅19%) vs CAN带宽瓶颈 Trace窗口对比:以太网报文长度灵活性显著提升 ⭐⭐
相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习