Les sessions de diagnostic : pourquoi l'ordre compte

LES SESSIONS : L'ORDRE COMPTE Sessionpar défaut Sessionétendue Déverrouillageseed & key Actionautorisée
Chaque session ouvre les droits de la suivante

Beaucoup d'échecs de communication n'ont rien d'un problème matériel : c'est simplement qu'on demande à un calculateur quelque chose qu'il n'accepte pas dans l'état où il se trouve.

Le principe

Un calculateur ne fonctionne pas toujours de la même façon. Il possède plusieurs modes de fonctionnement diagnostic — des sessions — et chacune n'autorise qu'une partie des commandes.

Au démarrage, il est toujours dans la session la plus restreinte. Il faut lui demander explicitement de passer dans une autre pour accéder au reste.

Le service qui commande ce changement porte le numéro 0x10 (réponse positive 0x50).

Les trois sessions à connaître

NuméroSessionCe qu'elle permet
0x01Session par défautLe strict minimum : lecture de codes défaut, données de base. C'est l'état au démarrage.
0x02Session de programmationLes services d'écriture en mémoire. C'est la session du flashage.
0x03Session étendueÉcritures de calibration, commandes d'actionneurs, routines, effacement de défauts, réinitialisations.

Une quatrième session normalisée existe pour les systèmes de sécurité (0x04), et les constructeurs disposent de plages qui leur sont réservées pour leurs propres sessions.

L'enchaînement qui marche

C'est presque toujours le même, et le respecter évite bien des ennuis :

1. Passer en session étendue ou programmation (service 0x10).

2. Déverrouiller par seed & key (service 0x27) — la sécurité s'applique par-dessus la session.

3. Faire l'opération : lecture, écriture, routine.

4. Maintenir la session ouverte pendant toute la durée.

Si vous obtenez un refus 0x7E (« sous-fonction non supportée dans cette session ») ou 0x22 (« conditions non réunies »), la réponse est presque toujours là : mauvaise session, ou sécurité pas encore levée.

Le calculateur retombe tout seul

Point capital, et cause d'échecs mystérieux en pleine opération : une session n'est pas permanente. Si le calculateur n'entend plus le testeur pendant un certain temps, il retombe en session par défaut — et tout ce qui avait été déverrouillé est perdu.

D'où l'existence d'un service dédié : TesterPresent, numéro 0x3E. Il ne fait rien d'autre que dire « je suis toujours là ». L'outil l'envoie périodiquement en arrière-plan pour maintenir la session ouverte.

Une variante courante demande au calculateur de ne pas répondre à ce message, pour éviter d'encombrer le bus inutilement.

Le délai avant retombée est de l'ordre de quelques secondes selon les calculateurs. C'est pourquoi une opération interrompue — une pause, un câble qui bouge, un ordinateur qui se met en veille — peut faire tout perdre.

Les services du flashage

Pour comprendre ce que fait votre outil pendant une écriture, voici les services qu'il enchaîne :

ServiceRôle
0x34 — RequestDownloadAnnonce : je vais écrire, à telle adresse, telle taille
0x36 — TransferDataEnvoie les blocs de données, numérotés
0x37 — RequestTransferExitFin du transfert
0x31 — RoutineControlLance une routine : effacement mémoire, vérification
0x11 — ECUResetRedémarre le calculateur

Et pour la lecture : 0x35 (RequestUpload), 0x23 (lecture par adresse), 0x22 (lecture d'un identifiant de données, comme le VIN ou une référence).

Ces numéros expliquent ce que vous voyez passer dans une trace, et permettent de situer précisément où une opération a échoué.

Voir aussi seed & key et J2534 et logiciels constructeurs.


Sur ANP Engineering — file service de reprogrammation moteur pour professionnels : file service ECU, correction de checksum, calculateurs pris en charge, tarifs.

ANP Wiki
ANPFile Service · reprog en ligne
Chargement…