基于带有OS操作系统的控制器的刷写测试实践
在车载控制器网络诊断诸多测试场景中,刷写(Flashing)是一个比较常见的功能,如控制器早期开发阶段的BUG修复、功能迭代,量产后的软件升级、召回补丁等场景下都需要对ECU进行刷写。常规的刷写流程是按照内存地址将应用程序直接写入到控制器内部。该过程需先擦除原有应用程序,若刷写意外中断且控制器不具备双分区(A/B区)功能,将导致应用程序被清空,使控制器丧失基本功能甚至“变砖”。
本文介绍一种面向现代汽车电子架构的更高效的刷写方法——OS系统刷写(基于带有操作系统控制器的刷写)。该方法常基于DoIP协议(Diagnostic communication over Internet Protocol),将完整的软件包以文件传输方式“拷贝”到目标路径,控制器在内部自行解析校验,从而显著提升刷写过程的安全性和稳定性。
一、测试环境
采用Vector公司的软硬件设备搭建测试环境,实现报文的监测以及通过USB实现对程控电源的控制。

主要组成:
- 供电电源VH1160:可编程直流电源,用于为被测ECU提供标准电压(通常12V/24V),可以独立控制KL15、KL30和KL31的通断,并可在刷写故障注入测试中动态调节电压(如欠压、过压)。
- VN56XX设备:用于实现以太网数据的发送和接收。配合CANoe的以太网协议栈,可实时解析DoIP、SOME/IP、UDP等应用层协议。
- 上位机(PC):安装CANoe 15.0及以上版本,并集成Option Ethernet等扩展模块。通过CANoe结合VN56xx设备,实现上位机与控制器之间的刷写数据交互。
二、测试流程&重点步骤
OS系统刷写与非OS系统刷写,在宏观流程上均遵循UDS(ISO 14229-1协议)所定义的三个阶段:预编程步骤(Pre-Programming Step)、主编程步骤(Programming Step)、后编程步骤(Post-Programming Step)。但二者在编程步骤中的实现方式存在显著差异。
(一)预编程步骤
OS系统刷写的预编程步骤与非OS系统刷写的预编程步骤相同,旨在将ECU从正常运行状态切换至“就绪”状态,确保刷写过程中不会受到非诊断报文和故障码的干扰。
关键操作:
- 会话切换:通过UDS服务 0x10 01进入默认会话模式,再通过UDS服务 0x10 83进入扩展会话模式。
- 禁止DTC设置:通过UDS服务0x85 82,禁止控制器更新 DTC 状态位。
- 通信控制:通过UDS服务0x28 83 03暂停非刷写相关的总线通信,防止干扰刷写流程。


(二)主编程步骤
主编程步骤是OS系统刷写的核心环节。OS系统刷写:ECU内部运行一个轻量级文件系统。上位机通过DoIP协议,将完整的软件包作为一个文件直接写入到目标路径。底层利用TCP/IP的窗口和重传机制保证可靠传输,传输速率可达百Mbps级别,几分钟内即可完成大文件传输。
OS系统刷写采用0x38服务替代传统刷写流程中的0x34服务,将刷写方式从单纯的“内存块写入”升级为“文件级管理”。同时,该服务支持多种操作模式(ModeOfOperation),包括添加文件(AddFile)、删除文件(DeleteFile)、替换文件(ReplaceFile)、读取文件(ReadFile)及读取目录(ReadDir)等。由此,诊断工程师可像操作本地文件系统一样,直接对ECU存储空间中的文件进行精细化管理,而无需直接针对底层内存地址进行盲目写入。
关键操作:
- 请求文件下载:使用UDS服务:0x38服务,即请求文件传输服务。
- 0x38服务格式:0x38 + modeOfOperation +filePathAndNameLength+filePathAndName+dataFormatIdentifier+fileSizeParameterLength+fileSizeUncompressed+fileSizeCompressed
- modeOfOperation为操作模式,包括0x01添加文件;0x02删除文件;0x03替换文件;0x04读取文件;0x05读取目录;
- filePathAndNameLength表示路径和名字的长度占据字节。
- filePathAndName表示文件路径 当modeOfOperation = 0x05时,此参数为要读取的目录。
- dataFormatIdentifier表示数据格式,当modeOfOperation = 0x02 or 0x05时,不包含此参数。
- fileSizeParameterLength表示fileSizeUncompressed和fileSizeCompressed的长度占据字节,当modeOfOperation =0x02 or0x04 or 0x05时,不包含此参数。
- fileSizeUncompressed表示未压缩数据大小 当modeOfOperation = 0x02 or 0x04 or 0x05时,不包含此参数
- fileSizeCompressed表示压缩数据大小 当modeOfOperation= 0x02 or 0x04 or 0x05时,不包含此参数。
- 文件数据传输:通过 0x36 服务连续发送文件数据块,数据传输完成后通过0x37服务告知ECU数据传输任务完成。
- 文件写入与激活流程:
- 触发安装:数据传输完成后,Tester 通过 0x31 01服务并携带指定的例程标识符(RID),向ECU请求启动安装流程。
- 执行安装:ECU 收到请求后,将暂存在缓冲区的文件,烧录至其目标应用分区。
- 进度查询:在安装过程中,Tester 持续使用 0x22 服务指定的数据标识符(DID)读取安装进度。
完成确认:当读到的DID数据中,表示“安装完成”的状态位被置位(例如,Bit X 置为 1)且安装进度为100%时,Tester 判定安装成功,主编程流程结束。


(三)后编程步骤
- OS系统刷写的后编程步骤与非OS系统刷写的后编程步骤相同,用于刷写结束后的恢复工作,包含恢复整车网络及 DTC 记录功能。
关键操作:
- 通信控制:通过UDS服务0x28 80 03恢复所有 ECU 的网络管理报文和应用报文的发送和接收。
硬件复位:通过UDS服务0x11 01 复位ECU。
诊断会话控制:通过UDS服务0x10 03,请求ECU进入扩展会话模式。
- 清除故障码:通过UDS服务0x 14 FF FF FF,清除ECU的故障码。
- 恢复DTC设置:通过UDS服务0x85 81,开启控制器 DTC 状态位更新。
- 诊断会话控制:通过UDS服务 0x10 81 切换回默认会话模式,完成整个流程。


三、总结
目前,OS 系统刷写技术已广泛应用于各种“域控制器”,并得到主机厂及零部件供应商的普遍采纳。北汇信息在该领域积累了深厚的技术功底,能够为客户提供成熟可靠的测试解决方案。
北汇信息作为一家专注于汽车电子测试领域的企业,在车载网络测试方面积累了丰富经验,我们可提供专业的培训、技术咨询及完整的测试解决方案,协助汽车制造商与零部件供应商确保车载网络系统的可靠性及刷写流程的安全性。如您需要具体的测试服务或希望了解更多信息,欢迎随时联系我们。
注:文中部分图片来源于Vector
本文来自博客园,作者:{北汇信息},转载请注明原文链接:{https://www.cnblogs.com/polelink/}

浙公网安备 33010602011771号