Blog/UDS 诊断中有关下载的UML流程图 ISO 14229

UDS 诊断中有关下载的UML流程图 ISO 14229

max
max
1 min read

1.下载应用软件和/或应用数据

设置用于编程的车辆网络

下图描述了预编程步骤

  1. 在数据链路上进行任何通信之前,应初始化网络(例如,在网络上执行初始唤醒)。唤醒方法和策略是特定于车辆制造商的并且可以选择使用。此外,该步骤允许确定服务器通信参数,例如服务器使用的网络配置参数和服务器诊断地址。
  2. 为了能够禁用服务器之间的正常通信和 DTC 的设置。它需要在每个服务器中启动一个非默认会话,正常的通信和 DTC 将被禁用。这是通过一个 诊断会话控制(0x10 DiagnosticSessionControl) 服务设置 sessionType 等于 extendedDiagnosticSession。该请求要么以单一的请求信息向所有的服务器传送功能地址或在单独的请求信息中被传送到每个服务器(要求向每个过渡到非默认会话的服务器发送一个物理地址的 TesterPresent 0x3E 请求消息)是否需要响应消息取决于车辆制造商。
  3. 在过渡到扩展诊断会话extendedDiagnosticSession之后,可以选择执行进一步的车辆制造商特定的数据链路初始化步骤。举例车辆制造商特定的附加初始化步骤可以是发出一个请求,该请求导致网关设备对客户端无法通过诊断连接器直接访问的所有数据链路执行唤醒。 只要非默认会话在网关中保持活动状态,网关就会保持数据链路唤醒。
  4. 这个可选的例程标识(由汽车制造商选择的数字)允许客户在尝试转换之前检查所有转换到编程会话的前提条件是否得到满足。
  5. 客户端使用 ControlDTCSetting (0x85)服务禁用每个服务器中的DTC设置,DTCSettingType等于 “off”。请求要么通过单个请求消息在功能上寻址到所有服务器,要么在单独的请求消息中物理寻址到每个服务器。 是否需要响应消息取决于车辆制造商。
  6. 这个可选的例程标识符(由车辆制造商选择的编号)允许客户在出于安全原因需要时启用或禁用 ECU 的故障保护反应。
  7. 客户端使用 CommunicationControl (0x28) 服务禁用非诊断消息的传输和接收。 控制类型参数和通信类型参数值由车辆制造商指定(一个 OEM 可能仅禁用传输,而另一个 OEM 可能会根据车辆制造商的特定需求禁用传输和接收)。该请求要么通过一个单一的请求信息向所有服务器传送功能地址,要么通过一个单独的请求信息向每个服务器传送物理地址。是否需要回复信息,这与汽车制造商有关。
  8. 在禁用正常通信后,可选的车辆制造商特定步骤如下,它允许以下操作:~读取要编程的服务器的状态;~从要编程的服务器上读取服务器识别数据:identification:SoftwareIdentification,DataIdentification,fingerprint:SoftwareFingerprint,DataFingerprint.~通信配置,如为 "服务ECU "动态分配地址标识符。为即将到来的编程活动准备非可编程服务器,以允许他们优化其数据链路硬件验收过滤,从而在不丢失数据链路帧的情况下处理 100% 的总线利用率(只接受函数请求地址标识符和自己的物理请求地址标识符)
  9. 增加编程事件的带宽是可选的,以减少整体编程时间并获得额外的带宽,以便能够并行编程多个服务器。具有等于 verifyBaudrateTransitionWithFixedMode 或 verifyBaudrateTransitionWithSpecificMode 的 linkControl 的 linkControl (0x87) 服务通过带有 responseRequired 等于“yes”的单个请求消息在功能上或物理上发送到所有服务器。该服务用于验证是否可以在相关数据链路上执行模式转换。此时不执行转换。具有SubFunction transitionMode 的第二个 LinkControl (0x87) 服务通过一个responseRequired 等于“no”的请求消息在功能上寻址到所有服务器。一旦成功传输请求消息,客户端和所有服务器将转换到先前验证的模式编程事件。服务器应在车辆制造商特定时间窗口内转换个别数据链路特定模式。在此持续时间加上安全余量,不允许客户端向车辆网络传输任何请求消息(包括 TesterPresent 请求消息)。当转换成功执行时,请求的模式将在服务器切换期间保持活动状态,在非默认会话之间。一旦服务器转换到默认会话,它将重新启用它所连接的车辆链路的正常模式。模式开关的使用需要在单个数据链路上的每个服务器中支持功能诊断通信,该数据链路应转换为相关的数据链路依赖模式。

应用软件和数据的下载

在预编程步骤之后,对一个或多个服务器进行编程。 编程序列适用于单个服务器的编程事件,因此是面向物理的。 当对多个服务器进行编程时,多个编程事件要么并行运行,要么按顺序执行。

  1. 通过对DiagnosticSessionControl(0x10)服务的物理/功能寻址请求,在服务器中启动编程事件,会话类型等于编程会话。当服务器收到该请求时,它/它们应分配编程所需的所有必要资源。服务器是否开始执行开机软件,这是特定的实现。
  2. 应确保编程活动的安全。安全访问服务(0x27)对于发送相关系统和安全系统,服务必须是强制性的。 其他系统不需要执行这项服务。 本文档中指定了如何执行安全访问的方法。
  3. 在向ECU下载任何数据之前,将 "指纹 "写入服务器内存,这是汽车制造商特有的做法。(例如,应用软件)下载到ECU中。这个 "指纹 "可以识别修改服务器内存的人。当使用这个选项时,数据标识符bootSoftwareFingerprint、applicationSoftwareFingerprint和applicationDataFingerprint应被用来写入指纹信息(见数据标识符的定义)
  4. 如果服务器没有在永久内存中存储内存擦除程序。则应下载 应执行内存擦除程序的下载。下载应遵循RequestDownload(...)、TransferData和RequestTransferExit的规定顺序。
  5. 如果RoutineControl(0x31)被用来检查存储器的下载是否成功,这与车辆制造商有关。擦除程序是否成功。替代方法是在RequestTransferExit正向响应信息中提供结果,或通过包括适当的负向响应代码的负向响应信息提供给制造商。响应消息中提供结果,或通过包括适当的消极响应代码的消极响应消息提供给 RequestTransferExit请求消息中提供结果。
  6. 服务器的内存应在内存技术(如闪存)要求时被擦除,以便 允许应用软件/数据下载。这是通过一个例程标识符实现的,使用RoutineControl (0x31)服务来执行擦除程序。