[行业规范] 漫话UDS协议之Service 3D

[复制链接]
查看1304 | 回复0 | 2022-8-9 21:55:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册 |

×
今天是2022年8月7日,今儿已经立秋,但是魔都天气又开始奇热无比。周末连续两天早上六点起来,没有逮着机会睡懒觉,感觉这个周末过的有点快,目前就最后一个下午了。所幸还可以有段自己的时间!
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工科男:

中年人成熟了,又成熟又疲惫。咬紧牙关扛着社会的焦虑和不安,再吃力也只不过就是眼眸里隐藏着忧郁和惆怅。他们的忧郁和惆怅,一向是社会的一道凝重的风景线,谁叫他们,不,谁叫我们是中年人呢...

Return to today‘s topic!
在车载诊断范畴,车载诊断功能是当外界无法直接获取或者需要花费很大精力才可以获取车载控制器的状态信息时,引入的功能。通过车载诊断功能可以获取车辆控制器相关运行状态(不管是静态的还是动态的数据),也可以通过外部设备(Tester)对车辆控制器进行写入配置。
studio-4985545.jpg
在以往经验中,主要通过Tester发送
Service 2E + DID
对车辆控制器进行参数配置。其功能实现也是外部Tester发送请求,代码框架数据流走向:
CAN IF -> CAN TP -> PDUR -> DCM -> SWC
其中SWC做具体功能实现。在AUTOSAR框架中,上述流程为Data Link关系。每一家的AUTOSAR解决方案策略就是确保自己方案中的代码配置工具能够确保DCM模块和SWC(通过RTE实现调度)关联正确有效。
关于Service 2E分享文章链接如下:
本文分享UDS服务为Service 3D,该服务功能较为简单粗暴直接,通过Tester直接对ECU内存地址进行写入功能。因为操作对象是车辆控制器芯片中内存地址,其危险性就很知道考量。特别是车辆引入车载以太网,使得Tester可以远程获取与ECU通信的可能性,因此该服务执行的前提条件需要严谨苛刻些。比如需要进入特定会话模式、特定安全解锁模式。
ocean-6603623.jpg
另外也可以考虑执行该服务的运行权限最小化,比如可以不释放给售后等,仅在开发、下线等场景应用。
Service 3D功能
Service 3D (WriteMemoryByAddress)允许客户端(Tester)在ECU芯片内存上一个或多个连续地址位置写入相关信息。WriteMemoryByAddress请求信息由参数DataRecord[]指定的信息写入参数MemoryAddress和MemorySize指定的存储器位置(ECU芯片掉电非易失内存)。请求格式中,用于规定MemoryAddress和MemorySize参数字节数由AddressAndLengthFormatIdentifier(低位和高位半字节)定义。
注:MemoryAddress和MemorySize参数内的未使用字节数在较高范围地址位填充值为0x00。
DataRecord的格式和定义由OEM特定规范,OEM在确保安全的前提下,该服务可用于如下功能:
-> 清除非易失存储器;
-> 更改校准值。
关于Service 3D,其请求格式在UDS定义如下:
640.png
响应格式如下:
640 1.png
其中该服务请求响应中参数含义:
640 2.png
具体含义如下:
addressAndLengthFormatIdentifier
该参数作为后续参数的标注位,通过高半位和低半位对参数进行解析:
-> bit 7 - 4:MemorySize参数的长度;
-> bit 3 - 0:MemoryAddress参数的长度。
MemoryAddress
poppy-7275283.jpg
参数MemoryAddress是要写入数据的车辆控制器内存的起始地址,描述该地址的字节数由addressAndLengthFormatIdentifier的低半字节控制。
memorySize
WriteMemoryByAddress请求消息中的参数MemorySize指定的地址开始写入ECU(Server端)内存的字节数。
dataRecord
该参数是Tester端向车辆控制器内存内地址中写入的具体数据内容。
举一个例子,加深理解:
Tester端发送请求
-> Request: 0x3D 0x13 0x20 0x48 0x13 0x03 0x00 0x01 0x8C
-> Response:0x7D 0x13 0x20 0x48 0x13 0x03
其中 Byte 1(0x13)为addressAndLengthFormatIdentifier;
预示着地址长度为3,在本例子中是0x20 0x48 0x13;
memorySize是0x03,为3个字节;
写入的数据DataRecord为0x00 0x01 0x8C。
在ISO 14229 2020版中,关于该服务给出了NRC优先级推荐解决策略,流程如下:
640 3.png
对比以往,有所不同的是ECU需要检查Tester发送该服务的Pre-Condition,一般需要解锁认证,所以对应由NRC 34。
以上是关于Service 3D分享。希望有所帮助。

"您的鼓励,是我前进的动力"
还没有人打赏,支持一下
车研会员,开心每一天!
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则