资讯动态

第三十三篇技术笔记:郭大侠学UDS(10服务)- 桃花岛内规矩多,模式切换要会说

发布时间:2026/10/3 16:14:16 来源:尧图企业网站定制
写在开篇上回说到黄蓉读94 01“谁是靖哥哥最爱的心上人”被拒郎中帮她“转了个身份”才读出来。具体怎么转的正在气头上的蓉儿没顾得上细看。第二天等缓过神来她直接拉着郭靖奔郎中店里。“郎中你昨天帮我转的那个‘身份’到底是啥为啥一转就能读靖哥哥的私密柜子了”郎中捋着胡子笑了“今天咱们就好好唠唠UDS的另一个服务——10服务诊断会话控制。说白了就是ECU的‘岛上身份’。”黄蓉眼珠一转“岛上身份就像我爹桃花岛那套——一般游客模式、亲信弟子模式、岛主本尊模式”郎中竖起大拇指“对头”一、10服务ECU的“桃花岛身份之谜”10服务大名DiagnosticSessionControl不读数据也不写数据只做一件事切换ECU的工作模式。身份会话模式能干啥像谁游客默认会话01读VIN、读故障码岛上普通访客弟子扩展会话03写数据、例程控制亲信弟子岛主编程会话02刷固件、改底层黄岛主本尊郎中在白板上写下这句口诀默认会话只能读扩展会话可以写编程会话才能刷。郭靖念了一遍“读、写、刷……郎中这句好记”黄蓉也点头“比降龙十八掌的口诀好背多了”二、会话状态机桃花岛的三重身份郎中画了张状态机图郎中指着图四条规矩——规矩一上岛默认是游客默认会话状态ECU上电自动进入默认会话想升级自己发命令。规矩二游客不能直接变岛主默认会话不能直切编程会话10 01 → 10 02禁止。必须先切扩展会话再切编程会话。黄蓉秒懂“想见我爹得先当弟子不能从大门口直接闯密室。”规矩三就算同级身份重新切一次锁也会重置从非默认会话切到非默认会话包括10 03→10 03安全锁会重置。黄蓉扭头看郭靖“所以你写94 01的时候郎中帮你切扩展会话、对暗号、写进去——一气呵成。我后来自己也切了会话才读到。不是靖哥哥藏私是ECU的规矩在保护我的好奇心。”规矩四在高级房里不说话会被请回大厅服务端超时被请回进入非默认会话后如果在超时时间内没收到任何诊断请求ECU会自动退回默认会话。“那不想被踢怎么办”黄蓉问。郎中捋着胡子“这就是3E服务——Tester Present的活了。”三、3E保活告诉ECU“我还在”“3E服务特别简单就一个功能保活。”服务命令响应说明Tester Present3E 007E 00“我还在别踢我”“进入扩展会话或编程会话后ECU会启动一个S3定时器通常5秒。如果你在S3时间内没发任何诊断请求ECU就当你走了自动退回默认会话。”黄蓉“所以不想被踢就得不停地跟ECU说‘还在还在’”郎中点头“对每2秒发一次3E 00S3定时器不断重置你就一直待在高级房间里。”郭靖挠挠头“那不发会咋样”“试试呗。”郎中切了扩展会话然后故意不发3E。等了5秒再发22 F1 90读VIN——结果收到7F 22 22“0x22——条件不满足。ECU已经把你踢回默认会话了所以读VIN被拒。”黄蓉咬了口糖葫芦“哦就像在书房待太久不说话管家会来问‘还在吗’你要回一句‘在’不然就被请回大厅了”郎中竖起大拇指“就是这个理”四、切换身份不是你想切就能切发10 03ECU会先查你有没有资格进书房就是必须要满足定义的切换条件哦条件类型举例不满足时返回的NRC车速条件车速必须为0才能进编程会话0x22条件不满足发动机状态发动机不能运转0x22安全条件车辆必须处于安全状态0x22权限条件特定客户端ID才有资格切扩展会话0x7E顺序条件默认会话不能直切编程会话0x7E很多厂家还规定想进扩展会话必须先过27服务。这也是为什么先切会话、再对暗号——因为对暗号本身就需要扩展会话权限。郭靖恍然大悟“所以我写94 01的时候郎中先让我从游客变弟子10 03然后才能对暗号27服务最后才写进去。顺序不对ECU根本不认默认会话只能读扩展会话可以写编程会话才能刷——顺序错了啥也干不了。”五、武功高不高 且看数据包1. 切扩展会话10 0303 FC 80 01 00 00 00 0210 03字段值说明Protocol Version0x03版本3Inverse Version0xFC暗号Payload Type0x80 0x01诊断消息Payload Length0x00 00 00 022字节UDS命令0x10 0x03切扩展会话2. 切扩展会话成功50 0303 FC 80 01 00 00 00 0850 0300 32 01 F4 00 00字段值说明DoIP头部03 FC 80 01 00 00 00 08负载长度8字节UDS响应50 03 00 32 01 F4 00 00正响应参数最后补0响应里带两个时间参数00 3250msP2Server_maxECU处理请求的最大时间01 F4500msP2*Server_maxECU返回NRC 0x78后的最大等待时间3. 3E保活请求03 FC 80 01 00 00 00 023E 00响应03 FC 80 01 00 00 00 027E 004. S3超时后被踢回大厅ECU不主动发消息只是把你踢下线。你发下一个请求时它直接回NRC 0x22——你才发现已经被赶回大厅了。六、这些坑靖哥哥替你先踩了坑真相以为只有27服务就能写必须先切扩展会话以为切一次会话永久有效重新切同级会话安全锁会重置以为游客能直接变岛主必须经过扩展会话以为S3超时ECU会喊你不会下一脚直接踢以为所有DID默认会话都能读94 01这种游客就是看不了以为3E是“心跳”必须一直发只要在S3时间内发一次就行不用无脑狂刷七、下步目标郭靖感慨“默认会话只能读扩展会话可以写编程会话才能刷——原来10服务就是ECU的‘桃花岛身份’什么身份干什么活。3E保活就是告诉ECU‘我还在’免得被踢出去。”郎中笑着点头“10服务和3E保活都讲完了。会话切换有顺序、有条件、有超时3E续命S3超时回退。下一篇我们进入真正的硬仗——34/36/37刷写固件换药方。”黄蓉咬一口糖葫芦“桃花岛内规矩多模式切换要会说。靖哥哥你终于明白我为什么非得把94 01读出来了吧”郭靖老老实实“明白了。不是为了查岗是想确认……有些话你真的写进去了。”黄蓉愣了一下没接话偷笑着把糖葫芦棍儿扔进垃圾桶。写在最后10服务 ECU的“桃花岛身份”默认会话只能读扩展会话可以写编程会话才能刷。3E服务 保活续命告诉ECU“我还在”别踢我。郭靖叹口气“桃花岛内规矩多学完10服务才敢说真听懂了蓉儿的潜台词。”打完收工886。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑