DS的第六类诊断服务:存储数据传输。该类型服务包含SID如下:
RequestDownload (0x34):请求下载数据,诊断仪向ECU请求下载数据
RequestUpload (0x35):请求上传数据,诊断仪向ECU请求上传数据
TransferData (0x36):数据传输,诊断仪向ECU传数据(下载),或者ECU向诊断仪传数据(上传)
RequestTransferExit (0x37):数据传输完成,请求退出
RequestFileTransfer (0x38):请求文件传输,可以用于替代上传下载的服务
一、服务功能:
请求下载数据,诊断仪向ECU请求下载数据。
该服务被客户端用于初始化从客户端到服务端的数据传输,在服务端接收到RequestDownload的请求报文后,在服务端肯定应答之前,应采取所有必要的行为去接收数据。
二、应用场景:
该服务常应用在bootloader中,程序下载工具会发起下载请求,以完成ECU程序的升级。
三、服务请求:
请求格式:
参数memoryAddress与memorySize的长度取决于参数addressAndLengthFormatIdentifier。
Request SID (1byte):固定为0x34。
dataFormatIdentifier(1byte):这里面标识了数据格式相关的信息,比如数据是否有压缩,是否有加密,用的什么算法加密等,由主机厂与供应商约定好,用哪个bit来表示压缩、加密等信息。
addressAndLengthFormatIdentifier(1byte):该参数是代表后续的两个部分memoryAddress和memorySize所占的字节长度。addressAndLengthFormatIdentifier的低4bit表示memoryAddress,高4bit表示memorySize。如:memoryAddress参数占用0xm个字节,memorySize参数占用0xn个字节,则addressAndLengthFormatIdentifier值为0xnm。
memoryAddress(m个byte):诊断仪向ECU请求下载写入数据的逻辑地址值。如:诊断仪请求ECU写入数据的内存逻辑地址为0x12345678(memoryAddress占4个字节),则memoryAddress值为0x12345678,对应addressAndLengthFormatIdentifier低4bit值为0x04。
memorySize(n个字节):诊断仪向ECU请求下载写入数据的字节数。如:诊断仪写入ECU数据的字节数为0x01234567(memorySize占4字节),则memorySize值为0x01234567,对应的addressAndLengthFormatIdentifier高4bit值为0x4。
四、服务响应:
正响应格式:
Response SID:0x74。