加速汽车软件升级——堆栈刷写技术的应用与挑战

0e58a81c-d8b8-4325-a315-ee2558c05bd0

背景和挑战

| 背景:

当前汽车市场竞争激烈,多品牌并存,新车发布速度加快,价格逐渐降低,功能日益多样化。随着车辆功能的不断提升与优化,ECU(电子控制单元)的代码量也随之增加,这导致用户在每次车辆软件升级时需要等待较长时间,影响用户体验,进而影响各汽车制造商(OEM)的品牌声誉。为了解决这一问题,确保控制器稳定运行,提升软件刷写的效率,同时不断满足用户的多样化需求,堆栈刷写技术应运而生。

| 技术挑战:

1.确保刷写过程的稳定性:避免在刷写过程中出现中断或错误,导致ECU损坏、文件不完整等;

2.优化刷写的效率:缩短刷写时间,提升生产线和售后刷写的效率;

3.保证刷写数据的可靠性:确保数据在刷写的过程中不会被泄露。

什么是堆栈刷写?

堆栈刷写也叫Queued Flash是一种快捷、有效的数据刷写。在运行刷写时,上位机对ECU同时发送多帧连续的诊断请求到控制器。与传统刷写不同的是,在传统的刷写流程中,上位机和ECU之间是一种一问一答的形式,这就意味着上位机必须等到上一个诊断请求响应后,才能发送下一个诊断响应,从而导致数据传输出现过剩的情况,刷写速度变缓。

而堆栈刷写是在初个诊断请求发出去后,无需等待响应,即可接着发送诊断请求,直到缓存饱和,由此可大大提升刷写速率

1f68c152-a84f-453f-8850-b4154869f4ee

(图1 传统刷写和堆栈刷写区别)

堆栈刷写方案

| 方案概述:

本文讲述的堆栈刷写实现方案,是由风丘科技自研的工程诊断仪Q-Testr.Expert车辆通信卡MC800组成。其主要原理是,将车辆通信卡和电脑连接在一起,实现电脑和通信卡的连接,进而连接到车辆,实现诊断报文的收发。

5403cb95-d0a5-44db-99c5-fab5d0982851

(图2 方案逻辑图)

| 队列刷写原理:

下文将以一个堆栈刷写的流程示意图进行简单阐述。

68590389-3d6f-4b87-b946-9ad9822cb5db

(图3 堆栈刷写原理图)

T1时刻:Tester(上位机)发送36 01用来请求,请求刷写数据的一个Block块,之后ECU(控制器)给出流控帧表明自己的诊断传输能力;

T2时刻:Tester发送完最后一个Block块后,没有等待ECU的响应,而是直接发送了下一个请求36 02;

T3时刻:ECU响应36 01正响应;

T4时刻:ECU响应7F 36 78,表示此刻在处理其他的诊断请求,需要等待一会儿。

堆栈刷写核心在于Tester多帧请求发送顺序不能乱,且接收的响应也应按照诊断请求的顺序。

| 优势:

1. 大大提升了刷写速率,尤其在生产线上,每个工位都是有固定的时间,避免因刷写速度缓慢而导致停线,并减少停线时间。

2. 堆栈刷写的大小可设置,便于用户更好管理刷写过程,并可根据实际情况调整刷写堆栈大小,优化资源利用。

3. 对于较大的软件更新包,用户往往需要等待较长时间来完成车辆的升级过程。然而,利用堆栈刷写技术,即可大大缩短这一等待时间,使用户能够更快获取软件新版本,确保汽车系统始终保持实时更新状态

| 硬件:

此方案中所使用的硬件为风丘科技自研的MC800车辆通信卡。其通信稳定性高,是专为诊断而开发的多总线接口。它拥有两路CANFD、一路以太网,通道独立,互不影响,且可通过4个LED灯显示状态,设计紧凑,还可PC端进行供电。

9270ecc1-eefc-4dff-b2ad-8b31d34a634f

(图4 MC800车辆通信卡)

| 软件:

Q-Tester.Expert是一个由风丘科技研发的基于ODX(ASAM MCD-2D / ISO 22901-1)国际标准的工程诊断仪,通过此诊断仪可实现与ECU控制器之间的数据交互。基于ODX国际标准的解决方案,其优势在于:ODX数据库不仅可在开发部门交互,而且可释放给生产和售后部门,保证了诊断工具链数据同源,且使用的是统一国际标准的数据格式和数据定义。

2b8a70c5-6610-4cb6-8472-bb9e6cdfdd7c

(图5 Q-Tester.Expert软件界面)

| 刷写实例:

c8f57ec5-3b7b-4457-8cf3-7935b1c4cf9b

(图6 刷写截图及报文)

往期回顾

▶ 如何使用Q-Tester Sequence控件低代码实现ECU自定义刷写?

▶ 基于UDS的ECU诊断刷写流程 助力汽车智能化发展