UDS诊断----------$11诊断服务
1、服务描述
客户端使用 ECUReset 服务请求服务重置;
11 服务请求 ECU 端根据 ECUReset 请求消息中嵌入的 resetType 参数值有效地执行服务器重置;ECU 服务器
应在服务器执行重置之前发送 ECUReset 肯定响应消息(若需要);服务器重置成功后,ECU 应当激活 defaultSession;ISO14229 协议中对 ECU 从重置请求的肯定响应消息之后到重置成功完成的这段时间未定义相关行为;建议 ECU 在此期间不接收任何请求消息及发送任何响应消息;
2、服务请求格式
如下图的请求消息定义:
ECUReset 请求消息使用参数 resetType 来描述服务器必须如何执行重置;
请求消息子函数参数定义如下:
0x00:ISOSAEReserved 预留值 强制
0x01:硬件重置,该值标识一种"硬件重置"状态,用于模拟 ECU 断开电源后典型的上电/启动序列;具体执行的操作又设备实现决定,标准未定义。该操作可能导致易失性内存和非易失性内存值重新初始化为预设值;用户可选
0x02:钥匙关闭/打开重置(keyOffOnReset),该值标识一种类似于驾驶员关闭并重新打开点火钥匙的状态。此重置条件应模拟钥匙关闭/打开操作。具体执行的操作由设备实现决定,标准未定义。通常,非易失性内存位置的值会被保留;易失性内存将被初始化;用户可选
0x03:软重置,该值标识一种"软重置"状态,会使 ECU 立即重启应用程序。具体执行的操作由设备实现决定,标准未定义,典型操作是重启应用程序而不重新初始化先前学习的配置数据、自适应因子和其它长期调整参数;用户可选
0x04:启用快速断电(enableRapidPowerShutDown),此功能适用于非点火供电但由电池供电的 ECU。因此,关机操作会强制进入睡眠模式而非完全断电。睡眠模式意味着电源关闭但仍准备好唤醒(电池供电)。该子功能的目的是减少ECU在点火关闭后的待机时间。该值请求服务器启用并执行"快速断电"功能。一旦"钥匙/点火"关闭,ECU 应当立即执行该功。在执行断电功能时,ECU 应直接或在定义的待机时间后过渡到睡眠模式。若客户端需要响应消息且服务器已经准备好执行"快速断电"功能,服务器应在开始执行前发送正响应消息。下一次"钥匙打开"或"点火打开"
信号将终止"快速断电"功能。 用户可选
0x05:禁用快速断电(disableRapidPowerShutDown),该值请求 ECU 禁用先前启用的"快速断电"功能;用户可选
0x06 - 0x3F:ISOSA 预留值,用于未来定义 强制
0x40 - 0x5F:车辆制造商专用,该范围值保留给车辆制造商专用。
0x60 - 0x7E:系统供应商专用,该范围值保留给系统供应商专用。
0x7F:ISOSA 预留值,该值由本文件保留,用于未来定义。
3、肯定响应格式
如下图定义了 positive response message:
肯定响应消息数据参数的定义如下:
resetType:对应请求消息中的参数
powerDownTime:下电时间,该参数需要子功能参数设置为 enableRapidPowerDown。
以下参数值有效:
0x00 - 0xFE:0 -254 秒下电时间
0xFF:表示出现故障或当前时间无效
4、负响应代码(NRC_)
0x12:若子功能参数不支持,则应返回此 NRC;
0x13:若消息长度有误或格式无效,则应返回此 NRC;
0x22:若 ECU 重置请求的条件不满足,则应返回此 NRC;
0x33:若所请求的重置是受安全保护的,且服务器未处于解锁状态,则应返回NRC;
5、实战配置及代码介绍
以 ETAS 的 ISOLAR-A/B 工具为例:
1、DCM 模块中创建 11 服务,如下图:
2、创建软件复位 03 子服务,如下图:
完成上述配置后生成 BSW 代码;具体的复位执行操作在如下 Dcm_Prv_DspEcuResetConfirmation API 函数
中的集成代码实施:
测试结果如下: