UDS诊断之一

    今日编写UDS诊断服务,在已有的模块下使用。对已有的诊断服务理解如下:

1、diagnose session control service,主要用于切换不同会话,14229中大致定义三种会话:默认会话、编程会话、扩展会话。不同的会话可以支持的服务是不一样的。一般而言,默认会话等级最低,支持几个安全等级低的服务,也是会话的初始状态。编程会话和扩展会话,可以支持如DTC控制,写DID标志,Routine Control等服务。14229中有表可示。会话切换时所需要做的工作分几类:默认->默认:重新初始化会话cfg参数即可。 默认->非默认:需要将在默认会话过程中改变的服务参数重置,如CC服务和CDTCS服务,ROE服务,时间参数等,后者我没用到,不清楚。非默认->非默认,初始化目标会话即可。非默认->默认:重置ROE服务,不清楚。

在所使用的模块下,并没有判断之前切换前的会话是什么会话,该模块只是传递了目标会话和改变标志位,所以其实是无法判断那么多情况的。控制器若只支持两个诊断服务,默认与扩展,切换时处理一下CC服务和CDTCS服务,也差不多。ROE还没用到,暂不处理。

2、security access service,其实现由三个接口是,分别是请求一个SA,保存当前服务的SA,和获得上一次请求SA的结果。 主要是客户端请求SA时,服务端要生成一个seed,发给客户端,然后客户端返回由这个seed生成的key,服务器去比较这个key对不对,以判断客户端是否获得其请求的sa。 这里,sa是服务的重要参数,每一个诊断服务都有一个对应的sa,只有当前状态满足服务的SA,才可以使用该服务。 

3、Ecu Reset Service,这个好理解了,14229提供了4种Reset,分别是Hard Reset,SoftReset,KeyOffOnReset,RapidPower-OnReset.。实现细节自定义,并没有提出详细的要求。一般用两种程度的Reset就可以了吧。 一种可采用WDT来进行复位,一种可以就重置应用层数据。

       早睡早起,明天再写。

你可能感兴趣的:(UDS诊断之一)