掌桥专利:专业的专利平台
掌桥专利
首页

一种通过CAN多邮箱发送提升XCP性能的方法

文献发布时间:2023-06-19 18:27:32


一种通过CAN多邮箱发送提升XCP性能的方法

技术领域

本发明涉及XCP通信技术领域,尤其涉及一种通过CAN多邮箱发送提升XCP性能的方法。

背景技术

XCP通信过程中,XCP Slave通过数据传输对象DAQ将ECU数据给XCP Master,一般有分为2个异步过程,ECU数据采集和ECU数据上传来实施XCP Master控制对象元素的更新,其中ODT(Object Description Table)对象描述表用来归并元素的测量内存(如图1所示),数据采集过程一般通过ms级的任务采集到缓存buffer中,ECU数据上传通过中断的方式获取buffer中的数据对象DTO (Data Transfer Object),写到单个邮箱中,最终传输到CAN总线中(如图5所示)。

这样带来一个问题,要想提高CAN总线利用率和数据吞吐量,就必须以足够快的中断(在标准CAN的500kbps条件下,理论上以260us的中断可以达到不错的效果)写到邮箱,轮询发送方式因为时间间隔的原因,即使是没有其他报文,有一定可能出现该周期CAN邮箱Busy的可能性,此时邮箱处于非空闲状态,无法写入新的数据,260us的中断就无法达到实际的效果,如果数据量过大,高频率的中断占用大量CPU时间。

因此,上述技术中当充分提高CAN总线利用率和数据吞吐量时对ECU性能要求较高,数据存在丢失堵塞风险。

发明内容

本发明的目的在于提供一种通过CAN多邮箱发送提升XCP性能的方法,解决目前常规的CAN单邮箱中断发送方式对ECU性能的要求过高,且增大CPU的负载率,数据上传效率低问题,多邮箱定时循环发送能提高数据观测性能,解决丢数据问题,降低CPU负载。

为达到上述目的,本发明采用的技术方案是:一种通过CAN多邮箱发送提升XCP性能的方法,包括如下步骤,

S1)XCP主机发送指令,ECU的XCP服务通过DAQ队列提供数据信息;

S2)采用定时任务对ECU DAQ进行数据采集;

S3)获取ODT数据,通过多邮箱循环写入发送流程:判断多邮箱循环空闲状态,按优先级顺序写入邮箱;

S4)直至数据完全写入,结束任务。

作为进一步的优化,该通过CAN多邮箱发送提升XCP性能的方法还包括步骤S5,步骤S5为:当仍有ODT数据时,重复步骤S2至步骤S4。

作为进一步的优化,步骤S1中XCP主机通过CTO和DTO与ECU的XCP服务进行交互。

作为进一步的优化,步骤S2中定时任务的数据采集周期为2ms。

作为进一步的优化,步骤S3中定时任务的数据发送周期为2ms。

作为进一步的优化,步骤S3为首先对邮箱进行排序,从优先级较低的邮箱开始查找空闲的邮箱,直到找到所有空闲的邮箱,然后从邮箱优先级较高的邮箱开始写入ODT数据。

作为进一步的优化,步骤S3写入时需要先发送的ODT数据写到优先级较高的邮箱中。

作为进一步的优化,步骤S3循环访问次数≤10次。

与已有技术相比,本发明的有益效果体现在:

1.有效减少XCP Slave CPU负载,充分利用邮箱自身高效率,减少CAN帧等待时间,增加数据上传效率,XCP Master 能够添加更多的观测量;

2.解决常规的CAN单邮箱中断发送方式对ECU性能的要求过高,且增大CPU的负载率,数据上传效率低问题,多邮箱定时循环发送能提高数据观测性能,解决丢数据问题。

附图说明

图1为本发明的ODT数据采集流程图。

图2为本发明的XCP Master和XCP Slave的数据通信流。

图3为本发明的多邮箱定时循环发送流程图。

图4为本发明的多邮箱写入发送流程图。

图5常规的单邮箱中断方式发送。

具体实施方式

以下是本发明的具体实施例,结合附图对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

如图1至4所示,本发明将CAN的发送由CPU控制转给CAN控制器发送,CAN控制器会自动检测当前CAN网络是否空闲,根据CAN报文的优先级,以最小的延时发送报文。

本发明由XCP Master和ECU的XCP服务组成,XCP通信主机和ECU的交互主要通过CTO(CTO: Command Transfer Object)和DTO,主机发送命令,ECU的XCP服务通过DAQ队列提供相应的数据信息(如图3所示),对于ECU DAQ的采集和发送,此方案采用2ms任务和多邮箱循环发送的方式。数据端以2ms采集(ECU可以存在多个不同的数据采集周期)和2ms发送为例,采用2ms任务,从ECU内存中提取更新数据经过打包处理更新到buffer中,数据发送端以2ms任务为周期,在有限次(最大次数需保证任务不超时,2ms应小于10次)循环访问buffer中数据,写入时需要注意,由于邮箱的发送是有优先级的,如果需要先发送的报文写到低优先级的邮箱,需要后发送的报文写到高优先级的邮箱,此时就有可能导致报文的乱序,所以写入时遵循的原则是需先发送的报文写到高优先级邮箱中,直到buffer中无数据(如图4所示)。

在数据采集端,从机以2ms的任务为周期,主机通过DAQ初始化(如图4),对提供的观测量或标定量的进行更新并放到buffer中。数据上传,从buffer中取ODT数据,在写入时,为了保证发送和接收报文顺序的一致性,对邮箱进行排序,从优先级低的邮箱开始查找空闲的邮箱,直到找到所有空闲的邮箱,然后从邮箱优先级较高的邮箱开始写入ODT数据,保证先写入的报文写到优先级更高的邮箱,直到写完所有空闲邮箱,这样保证了XCP报文发送接收顺序的一致性,CAN控制器再根据总线情况和报文优先级决定什么时候发送(如图5所示)。

本发明可以有效减少XCP Slave CPU负载,充分利用邮箱自身高效率,减少CAN帧等待时间,增加数据上传效率,XCP Master 能够添加更多的观测量。

本发明解决目前常规的CAN单邮箱中断发送方式对ECU性能的要求过高,且增大CPU的负载率,数据上传效率低问题,多邮箱定时循环发送能提高数据观测性能,解决丢数据问题,降低CPU负载。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

相关技术
  • 一种基于延迟发送机制的GPU虚拟化性能提升的方法
  • 一种基于延迟发送机制的GPU虚拟化性能提升的方法
技术分类

06120115574349