specification(规范)
1 Scope(范围)
本标准规定了ECU UDS CAN编程的详细方法和要求。
2 Normative references(引用标准)
ISO 14229-1-2013
道路车辆:统一诊断服务(Unified diagnostic services)
Q/SQR E8-20-2018
车辆UDS诊断CAN标准
3 Diagnostic services and parameters(诊断服务和参数)
在编程会话中应支持以下诊断服务和子功能:
DiagnosticServiceName | SID(Hex) | Subfunction(Hex) | SecurityAccessLevelRequired | Functionaddress |
---|---|---|---|---|
DiagnosticSessionControl | 10 | 01 02 / | / | √ |
ECU Reset | 11 | 01 / / | / | - |
ReadDataByIdentifier | 22 | / / / | / | / |
Security Access | 27 | 03/04 / / | / | / |
Routine Control | 31 | 01 02 03 | √ | / |
Request Download | 34 | / / / | √ | / |
Transfer Data | 36 | / / / | √ | / |
Request Transfer Exit | 37 | / / / | √ | / |
Tester Present | 3E | 00 / / | / | √ |
remark:“√”:Support “/”:Not Support “-”:Optional
注意:
- 上表中服务和子功能的详细信息见Q/SQR E8-20-2018;
- 安全接入算法的详细描述请参考ECU的诊断参数规范。
- 启动时应支持带有车辆制造商ECU硬件编号(F191h)、启动软件标识(F180h)、车辆制造商备件编号(F187h)和系统供应商标识(F18Ah)的ReadDataByldentifier (22h)。
4 Routine identifier(例程ID)
应该支持以下例程标识符
Hex | Description |
---|---|
DA04 | Check software program validation 检查软件程序验证 |
FF00 | Erase memory 擦除内存 |
FF01 | Check programming dependencies 检查编程依赖关系 |
4.1 Check software program validation 检查软件程序验证 (DA04h)
4.1.1 StartRoutine - request message
4.1.2 StartRoutine - positive response message
4.1.3 RequestRoutineResults - request message
4.1.4 RequestRoutineResults - positive response message
4.1.5 StopRoutine - request message
4.1.6 StopRoutine - positive response message
注意:
1)如果ECU只需要下载应用软件或校准数据文件,则测试人员已实现了完整的编程过程。应用软件或校准数据下载成功后,ECU可将软件状态设置为有效;
2)如果ECU需要下载应用软件文件和校准数据文件,测试人员应执行两次完整的编程过程,分别下载应用软件和校准数据。应用软件和校准数据下载成功后,ECU可将软件状态设置为有效;
3)当ECU供应商生成编程文件时,所有数据块的初始CRC16校验和(CRC_initial)应设置在编程文件的某个地址。在接收到带有Routineldentifier DA04h(检查软件程序验证)的Routine Control请求消息后,ECU应该分两步实现检查过程。
第一步:数据完整性检查
ECU应为所有编程数据(包括CRC_initial CheckResult_initial)计算一个CRC16校验和(名为CRC_receive_1)),并与测试器发送的CRC16校验和(CRC_tester)进行校验。
如果检查过程已完成,且CRC_receive_1与CRC_tester相同,ECU应进入下一步,否则应停止例程,当测试者请求停止例程时,将发送“Software Status = 02h”响应消息。
第二步:数据篡改检查
ECU应计算CRC16校验和检查结果(命名CRC_receive_2CheckResult_calculate)用于所有编程数据(不包括CRC_initial CheckResult_initial),并将其与CRC_initial CheckResult_initial进行检查比较。
当测试员请求停止例程时,如果检查过程已完成,且CRC_receive_2 CheckResult_calculate与CRC_initial CheckResult_initial相同,ECU应发送“Software Status = 01h”响应,否则将发送响应码$72的响应消息。
例如以S3文件为例:
4)如果测试者在检查过程中要求停止例程,ECU应根据实际情况发送检查结果,即如果ECU只需要下载应用软件文件,如果检查过程结束,ECU计算的结果与测试者计算的结果一致,则ECU应发送“software Status = 01h”响应,否则将发送“software Status = 02h”响应消息。如果不能通过停止程序停止检查过程,则应发送NRC=22h的否定响应消息。