:TOOMOSS_SID34-36-37_DownloadFlow.vi — 下载流程)
1. 引言在UDS刷写流程中,真正的固件数据传输是通过三个服务协同完成的:0x34 RequestDownload(请求下载)、0x36 TransferData(传输数据)和0x37 RequestTransferExit(请求传输退出)。这三个服务共同构成了UDS协议中的上传下载功能单元(Upload Download Function Unit)。其核心逻辑是:0x34:上位机与ECU协商传输参数(起始地址、数据大小、ECU的接收能力)0x36:循环发送数据块,直到所有数据发送完毕0x37:通知ECU数据传输结束,退出传输状态TOOMOSS_SID34-36-37_DownloadFlow.vi将这三个服务封装为一个完整的下载流程,并集成了进度条更新功能,是UDS刷写上位机中最核心的数据传输子VI。2. 子VI功能概述2.1 设计目标根据起始地址和长度构造0x34请求下载报文将下载数据按ECU指定的块大小分包循环调用0x36服务传输每个数据块所有数据传输完成后调用0x37退出传输实时更新进度条显示下载进度2.2 UDS三个服务协议说明2.2.1 0x34 RequestDownload(请求下载)请求格式:字节序号参数说明#1RequestDownload SID固定值0x34#2dataFormatIdentifier数据格式标识符,0x00表示无压缩无加密#3addressAndLengthFormatIdentifier地址和长度格式标识符#4 ~ #(m-1)+4memoryAddress[]内存起始地址(m字节,由ALFID低位决定)#n-(k-1) ~ #nmemorySize[]数据大小(k字节,由ALFID高位决定)addressAndLengthFormatIdentifier说明:bit 7-4:memorySize参数占用的字节数(k值)bit 3-0:memoryAddress参数占用的字节数(m值)例如0x44表示地址4字节、大小4字节。肯定响应格式:74 20 00 81 (示例)响应SID =0x74(0x34 + 0x40)maxNumberOfBlockLength:ECU每个0x36请求能接收的最大数据字节数2.2.2 0x36 TransferData(传输数据)请求格式:36 blockSequenceCounter transferRequestParameterRecordblockSequenceCounter:从0x01开始,每发送一帧递增1,到0xFF后回绕到0x00transferRequestParameterRecord:实际要传输的数据肯定响应格式:76 blockSequenceCounterblockSequenceCounter用于错误处理机制——当ECU收到重复的计数器值时,可识别为重复帧而不重复写入内存。2.2.3 0