本发明涉及自动驾驶,尤其涉及一种uds远程诊断刷写方法及相关装置。
背景技术:
1、uds:unified diagnostic services协议,即统一的诊断服务,是面向整车所有ecu的一种诊断通信方式。
2、目前,车内fota刷写,远端fota service通过发送fota报文到tbox网关,由tbox网关把fota报文转成uds报文,通过can消息发送到各个ecu件,主要结构如图1所示。
3、目前的方式存在如下缺点:
4、tbox接收远端fota报文后解成诊断uds报文后直接发送到远端ecu,等待ecu件响应后回复远端fota服务端fotaserver,远端fotaserver在发送下一条uds报文,由于uds报文传输和远端ecu的报文处理都需要时间,这种方式额外增加了等待时间,导致刷写效率低。
技术实现思路
1、有鉴于此,本发明提供了一种uds远程诊断刷写方法及相关装置,用以解决现有技术中tbox接收远端fota报文后解成诊断uds报文后直接发送到远端ecu,等待ecu件响应后回复远端fota server,远端fota server e在发送下一条uds报文,由于uds报文传输和远端ecu的报文处理都需要时间,这种方式额外增加了等待时间,导致刷写效率低的问题。具体方案如下:
2、一种uds远程诊断刷写方法,包括:
3、接收uds报文,判断所述uds报文是否为请求下载数据报文或者数据传输报文;
4、若是,将所述uds报文缓存在预设缓存中,其中,所述预设缓存中包含有至少一条uds报文;
5、判断所述预设缓存中的每个uds报文的报文地址是否为本地地址;
6、若否,将当前uds报文进行分割,将分割后的uds报文发送给目标远端ecu进行刷写。
7、上述的uds远程诊断刷写方法,可选的,判断所述uds报文是否为请求下载数据报文或者数据传输报文,包括:
8、获取所述uds报文中的诊断id;
9、将所述诊断id与预设请求下载数据id和预设数据传输id进行比较;
10、若所述诊断id与所述预设请求下载数据id相同,判定所述uds报文为所述请求下载数据报文,或,若所述诊断id与所述预设数据传输id相同,判定所述uds报文为所述数据传输报文。
11、上述的uds远程诊断刷写方法,可选的,判断所述预设缓存中的每个uds报文的报文地址是否为本地地址,包括:
12、针对当前uds报文,获取所述当前uds报文中的can id;
13、将所述can id与预设本地地址标识进行比较;
14、若所述can id与所述预设本地地址标识相同,判定所述当前uds报文的报文地址为本地地址,反之,判定所述当前uds报文的报文地址为非本地地址。
15、上述的uds远程诊断刷写方法,可选的,将当前uds报文进行分割,将分割后的uds报文发送给目标远端ecu进行刷写,包括:
16、对所述当前uds报文基于预设长度进行分割,得到各个分割后的uds报文;
17、针对每个分割后的uds报文,获取其中包含的ecu标识;
18、在各个远端ecu中选取与所述ecu标识相同的目标远端ecu,将分割后的uds报文发送给所述目标远端ecu进行刷写。
19、上述的uds远程诊断刷写方法,可选的,还包括:
20、若所述uds报文不是为请求下载数据报文或者数据传输报文,判断所述uds报文的报文地址是否为本地地址;
21、若否,将所述uds报文进行分割,将分割后的uds报文发送给目标远端ecu进行刷写;
22、若是,将所述uds报文存储至本地协议栈。
23、上述的uds远程诊断刷写方法,可选的,还包括:
24、在刷写过程中,若接收到所述目标远程ecu发送的负反馈且接收到的下一条uds报文为数据传输报文的情况下,向fota服务端发送负反馈。
25、上述的uds远程诊断刷写方法,可选的,还包括:
26、若接收到的所述uds报文为最后一帧报文,每间隔预设时长向fota服务端发送pending指令;
27、或,
28、若所述预设缓存存储空间已满,向所述fota服务端发送pending指令,待有剩余存储空间后,向所述fota服务端发送正响应。
29、一种uds远程诊断刷写装置,包括:
30、接收和判断模块,用于接收uds报文,判断所述uds报文是否为请求下载数据报文或者数据传输报文;
31、缓存模块,用于若是,将所述uds报文缓存在预设缓存中,其中,所述预设缓存中包含有至少一条uds报文;
32、判断模块,用于判断所述预设缓存中的每个uds报文的报文地址是否为本地地址;
33、分割和刷写模块,用于若否,将当前uds报文进行分割,将分割后的uds报文发送给目标远端ecu进行刷写。
34、上述的uds远程诊断刷写装置,可选的,所述接收和判断模块包括:
35、第一获取单元,用于获取所述uds报文中的诊断id;
36、第一比较单元,用于将所述诊断id与预设请求下载数据id和预设数据传输id进行比较;
37、第一判定单元,用于若所述诊断id与所述预设请求下载数据id相同,判定所述uds报文为所述请求下载数据报文,或,若所述诊断id与所述预设数据传输id相同,判定所述uds报文为所述数据传输报文。
38、上述的uds远程诊断刷写装置,可选的,所述判断模块包括:
39、第二获取单元,用于针对当前uds报文,获取所述当前uds报文中的can id;
40、第二比较单元,用于将所述can id与预设本地地址标识进行比较;
41、第二判定单元,用于若所述can id与所述预设本地地址标识相同,判定所述当前uds报文的报文地址为本地地址,反之,判定所述当前uds报文的报文地址为非本地地址。
42、一种存储介质,所述存储介质包括存储的程序,其中,所述程序执行上述的uds远程诊断刷写方法。
43、一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的uds远程诊断刷写方法。
44、与现有技术相比,本发明包括以下优点:
45、本发明公开了一种uds远程诊断刷写方法及相关装置,包括:接收uds报文,判断所述uds报文是否为请求下载数据报文或者数据传输报文;若是,将所述uds报文缓存在预设缓存中,其中,所述预设缓存中包含有至少一条uds报文;判断所述预设缓存中的每个uds报文的报文地址是否为本地地址;若否,将当前uds报文进行分割,将分割后的uds报文发送给目标远端ecu进行刷写。上述过程,在刷写之前设置预设缓存,将uds报文预先存储在预设缓存中,在发送下一条uds报文时,不需要等待ecu件响应后回复远端fotaserver,远端fotaserver再发送下一条uds报文,直接在预设缓存中获取即可,通过异步处理减少了等待时间,提高了刷写效率。