以太网 doip 36服务多帧刷写资料整理

以太网 doip 36服务多帧刷写资料整理

https://blog.youkuaiyun.com/SoftingChina/article/details/108261321
28服务
https://blog.youkuaiyun.com/weixin_44522306/article/details/114255675

38服务
https://blog.youkuaiyun.com/qfmzhu/article/details/130895945
https://blog.youkuaiyun.com/weixin_43722921/article/details/132701228

UDS(十)应用层 34/36/37
https://blog.youkuaiyun.com/weixin_44522306/article/details/114299841

UDS诊断(ISO14229-1) 37服务
https://blog.youkuaiyun.com/m0_56208280/article/details/135451585

ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分
https://blog.youkuaiyun.com/qfmzhu/article/details/130895839

3e服务
https://blog.youkuaiyun.com/qq_40242571/article/details/120315618
如果在刷写过程中,不发送3E 80是不是也不会退出会话?
超时到了就会退出

博主,负响应可以保持住会话吗
只要发了指令就能保持会话

博主遇到过3E80一直发送,但是会话模式没有保持住的情况么
软件有问题呀

为什么3E 80不用回复
有抑制正响应位

在刷写过程,ECU接收 3E 00指令是否会干扰其他指令处理?如诊断仪发送3E 00后,ECU未响应,接着诊断仪很快下发擦除指令31 01 +
如果发3E 00的话必须要回复,那简单在中断里面接收3E 00 ,之后再用一个邮箱去发响应就好了,也可以完成功能,或者做两个通道去控制,一个通道就接收3E ,另一个通道就接收其他诊断指令也可以做到,软件处理还是可以比较灵活的
如果是双线程就不影响,如果单线程就处理成在接收连续帧的时候不接收3E就好了

只是抑制正响应的,否定响应是可以响应

https://blog.youkuaiyun.com/weixin_44522306/article/details/114299841
从成本等角度考虑,汽车ECU中用于缓存诊断服务数据的buffer大小有限,所以当我们需要读取或写入超过buffer大小的数据时,就无法简单地使用2E和22服务了,UDS据此定义了几个将大块数据写入或读出的服务,即数据下载和上传。

UDS的第六类诊断服务:存储数据传输。该类型服务包含SID如下:

RequestDownload (0x34):请求下载数据,诊断仪向ECU请求下载数据
RequestUpload (0x35):请求上传数据,诊断仪向ECU请求上传数据
TransferData (0x36):数据传输,诊断仪向ECU传数据(下载),或者ECU向诊断仪传数据(上传)
RequestTransferExit (0x37):数据传输完成,请求退出
RequestFileTransfer (0x38):请求文件传输,可以用于替代上传下载的服务

  1. RequestDownload (0x34) service

该服务用于启动下载传输,作用是告知ECU准备接受数据,ECU则通过0x74 response告诉诊断仪自己是否允许传输,以及自己的接受能力是多大。
1.1 请求格式
在这里插入图片描述
由上图可知,请求格式分为5部分

第一部分:请求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。

1.2 响应格式
在这里插入图片描述
由上图可知响应格式分为三个部分

第一部分:response SID (1byte): 0x74
第二部分:lengthFormatIdentifier(1byte):高4bit为maxNumberOfBlockLength有效字节长度,低4bit保留为0.
第三分部:maxNumberOfBlockLength:字节长度不定,表示0x36服务一次传输一个block的最大的字节数。如:maxNumberOfBlockLength=0x202,则应用层36服务一次最多发送字节数为0x202(字节数:0x202 >= 36 (1byte)+ parameter(x个byte))。后续36服务会细讲。

1.3 举例
诊断仪向ECU请求下载数据,dataFormatIdentifier值为0x00,该值有厂家或供应商协商制定,此处暂定为0x00。memoryAddress值为0x0x12345678(占4个字节),memorySize值为0x01234567(占4字节),则addressAndLengthFormatIdentifier值为0x44(该值计算方式上述请求格式中以说明)。
处链接和本声明。

在这里插入图片描述
上图中不同颜色代表不同的参数
橙色:addressAndLengthFormatIdentifier(0x44)
紫色:memoryAddress(0x12345678)
绿色:memorySize(0x01234567)
青色:maxNumberOfBlockLength(0x0202)

  1. TransferData (0x36) service

如果34服务得到了正确响应,诊断仪就要启动数据传输过程了,使用的就是36服务。

2.1 请求格式
在这里插入图片描述
上图可知请求格式分为三个部分

第一部分:请求SID :0x36(1个byte)
第二部分:blockSequenceCounter(1个byte),34服务后,发送的第一个36服务时clockSequenceCounter=0x01,每次36服务请求便自增1,当增加到0xFF,此时下次请求36服务发送数据时blockSequenceCounter=0x00。
第三部分:transferRequestParameterRecord:字节长短和参数格式不定,由厂家制定。发送请求的数据。

2.2 响应格式

在这里插入图片描述
由上图可知响应格式分为三个部分

第一部分:response SID:0x76
第二部分:blockSequenceCounter:对请求的blockSequenceCounter的echo
第三部分:transferResponseParameterRecord,当36服务用于上传数据时,该参数必须的。36服务用于下载数据时,该参数非必须,此处不解析。

2.3 举例

假设诊断仪34服务请求下载30字节,ECU反馈每次最大下载maxNumberOfBlockLength为0x0A,则诊断仪使用36服务下载数据如下图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值