关于ECU升级数据的传输(ISO14229系列之34/36/37服务)

关于ECU升级数据的传输(ISO14229系列之34/36/37服务)

 

1、ECU升级概述

        关于ECU升级数据的传输,是通过34(请求下载)、36(传输数据)、37(请求退出传输)这3个服务来完成的。关于升级文件中一个块的传输流程如下(假设正常升级,即没有否定响应的情况):

  • 诊断仪通过34服务传输该块的起始地址、该块的数据长度信息;进行下载请求;
  • ECU收到34服务的下载请求后,通过74肯定响应报文通知诊断仪,其(诊断仪)接下来的每个数据传输的报文中(36服务)应包含多少数据字节。诊断仪则根据该返回的参数对自身的发送能力进行调整;
  • 诊断仪通过36服务传输该块的数据,每个36服务传输的数据量大小由前面提到的ECU返回的74服务中的参数确定;
  • ECU对36服务返回肯定响应;
  • 通过36服务依次将该数据进行拆分发送,期间每完成一次36服务的发送,ECU进行肯定响应的回复。直到该块数据全部发送完
  • 诊断仪通过发送37服务进行传输退出的请求;
  • ECU进行肯定响应回复。

        升级文件中每个块(即升级数据分成的多个地址不连续的段)的数据传输都会有一个34服务进行传输的请求,并通过参数告知ECU该块数据的存放地址和长度;然后根据该块数据的大小会分成n个36服务进行数据的传输工作;在该块数据都传输完成后,通过一个37服务进行传输退出的请求。即升级文件中的每个块的传输过程,由1个34服务、n个(根据该块数据量大小确定)36服务,1个37服务完成

        接下来,我们对34、36、37服务的请求及肯定响应格式进行详细介绍。
        

2、34服务——请求下载

        (1)、在升级文件每个块进行数据传输前,都会先通过34服务进行下载请求;并将该块数据的存储地址和数据量大小发送给到ECU端。关于该服务的请求格式如下

在这里插入图片描述

  • dataFormatIdentifier/数据格式标识符,该参数占据1个字节;其中,第7-4位定义了压缩方法;第3-0位定义了加密方法。该字节为0x00时则表示既没有使用压缩方法也没有使用加密方法。0x00外的其他值的定义是由车产自行规定的。
  • addressAndLengthFormatIdentifier/地址与长度格式标识符,该参数也是占据1个字节;其中,第7-4位表示后面参数memoryAddress的字节数;第3-0位表示后面参数memorySize的字节数
  • memoryAddress/内存地址,该参数的字节长度由addressAndLengthFormatIdentifier这个参数的第7-4位决定;表示该块数据即将要烧录到的内存起始地址
  • memorySize /内存大小,该参数的字节长度由addressAndLengthFormatIdentifier这个参数的第3-0位决定;表示该块数据的数据量大小

        (2)、ECU收到34服务的下载请求后,通过74肯定响应报文通知诊断仪,其接下来的每个数据传输的报文中(36服务)应包含多少数据字节响应报文的格式如下:
在这里插入图片描述

  • lengthFormatIdentifier/长度格式标识符,该参数占据1个字节;其中,第7-4位表示后面参数maxNumberOfBlockLength所占据的字节数;第3-0位为预留位,一般为0。
  • maxNumberOfBlockLength/数据块长度最大数量,该参数用于ECU返回告知诊断仪在每次36服务进行数据传输时的最大数据量。

        (3)、假设有如下34服务报文,通过上面介绍的格式对其进行分析:

	10 0B 34 00 44 01 A4 04
	30 00 00 00 00 00 00 00     /*流控帧*/   
	21 00 00 0D 1B 42 00 00
	04 74 20 04 02 00 00 00

        根据前面的介绍,我们可以知道,该块数据信息没有采用加密和压缩方法(0x00);该块数据要存放的地址和数据长度都是用4个字节表示的(0x44);要存放到的地址是0x01A40400;该块的数据量大小是0xD1B42个字节。ECU通过74服务告知了诊断仪在接下来的数据传输中每次36服务的报文字节数应为0x402个字节(1026 - 2(减去每个36服务时的"36 帧序号" 这两个字节),即每次传输1K的数据)。

        

3、36服务——传输数据

        (1)在收到ECU返回的74肯定响应后,诊断仪则开始通过36服务进行数据的传输工作,每个36服务传输的数据量大小由ECU返回的74服务中的参数确定。关于36服务的请求格式如下
在这里插入图片描述

  • blockSequenceCounter,是36服务的帧序号每个新的36服务时该参数会进行加1;当计到0xFF时则再从0x0开始计数;依次循环,直到该36服务携带的数据被发送完成。(但注意接在34服务后面的第一次36服务的序列是从1开始的);
  • transferRequestParameterRecord是该36服务携带的要进行传输的数据,该参数的长度(即一个36服务传输的最大数据量)是由ECU的74服务返回的参数maxNumberOfBlockLength确定的。

        (2)、在诊断仪每次传输完一个36服务时,ECU应进行肯定响应的回复。响应报文格式如下:
在这里插入图片描述

        

4、37服务——请求退出传输

        (1)、通过36服务依次将一个块的数据进行拆分发送,期间每完成一次36服务的发送,ECU进行肯定响应的回复;直到该块数据全部发送完。在该块数据都传输完成后,诊断仪则会通过一个37服务进行传输退出的请求。关于37服务的请求格式如下
在这里插入图片描述

        (2)、ECU收到37服务请求后进行响应。肯定响应报文格式如下:
在这里插入图片描述

  • 0
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值