Repérer les zones de calibration dans un fichier

Deux fiches existantes encadrent ce sujet : lire une cartographie explique ce qu'est une table et comment le calculateur la consulte ; DAMOS, A2L et mappack explique ce qui permet de la nommer. Il manquait ce qu'il y a entre les deux : comment on distingue, dans une suite d'octets, ce qui est du programme et ce qui est de la donnée.

CE QUE CONTIENT UN FICHIER DE CALCULATEUR ZONE PROGRAMME les algorithmes, les stratégies — on n'y touche pratiquement jamais ZONE DE DONNÉES — LES CARTOGRAPHIES c'est ici, et presque exclusivement ici, que travaille la reprogrammation injection · suralimentation · avance · limiteurs · sécurités Sommes de contrôle à recalculer après toute modification Données véhicule VIN, codages, adaptations apprises
Les zones d'un fichier : programme, données, contrôles

Cette fiche est descriptive. Elle explique ce qu'un motoriste regarde et pourquoi, afin que le reprogrammateur comprenne ce qu'il transmet et ce qu'on lui rend. Elle ne contient aucune adresse à modifier ni aucune procédure d'édition.

La carte du terrain

Sur une architecture TriCore, telle que documentée dans le rapport technique interne, l'organisation mémoire est la suivante :

RégionDépartContenu
PFLASH0x80000000code et calibration, 2 à 4 Mo
DFLASH0xAF000000mémoire de données émulant une EEPROM, 64 à 128 ko
ROM d'amorçage0xAFFFC000chargeur d'amorçage gravé en usine
RAM0xD0000000mémoire de travail volatile
Registres0xF0000000périphériques : CAN, convertisseurs, compteurs

Le PFLASH est sectorisé de façon non uniforme : de petits secteurs, de l'ordre de 16 ko, en bas de l'espace pour le chargeur d'amorçage, de gros secteurs de l'ordre de 256 ko en haut pour l'applicatif. Le vecteur de réinitialisation se trouve à 0x80000020, précédé en tête de PFLASH d'un en-tête de mode de démarrage qui porte l'adresse du point d'entrée.

À l'intérieur du PFLASH, trois zones logiques : le chargeur d'amorçage sur les premières dizaines de kilo-octets, l'applicatif ensuite, et la zone de calibration typiquement dans la partie haute. Voir mémoire interne ou externe.

Le premier tri : l'entropie

C'est la méthode la plus simple et la plus parlante. L'entropie mesure le désordre d'une suite d'octets : plus les valeurs sont variées et imprévisibles, plus elle est élevée.

Le rapport technique interne donne les ordres de grandeur mesurés sur des binaires MED17 et EDC17 :

La transition entre les deux est nette. Tracée sur toute la longueur du fichier — avec un outil d'analyse d'entropie ou un simple calcul de Shannon à fenêtre glissante — elle dessine une frontière franche, qui délimite la zone où vivent les cartographies.

Deux signatures complètent ce tri : les zones non programmées, remplies uniformément d'octets à 0xFF, dont l'entropie est nulle ; et les zones chiffrées ou compressées, dont l'entropie est au contraire proche du maximum théorique, plus élevée encore que du code.

Le second tri : les routines d'interpolation

C'est la méthode qui a le plus de valeur, et c'est aussi une compétence de motoriste.

Les firmwares MED17 et EDC17 utilisent des routines de consultation standardisées : interpolation à une dimension pour une courbe, à deux dimensions pour une carte, plus rarement à trois. Leur signature est reconnaissable : la fonction reçoit un pointeur vers un descripteur d'axe et un pointeur vers un tableau de données, borne l'entrée aux extrémités de l'axe, calcule les fractions d'interpolation, et renvoie la valeur interpolée. Le schéma typique d'une consultation à deux dimensions : chargement des points de rupture de l'axe, recherche dichotomique de la position, calcul de la position fractionnaire, même chose sur le second axe, puis interpolation bilinéaire sur les quatre cellules voisines.

L'intérêt est considérable : une fois ces quelques fonctions identifiées, chaque appel vers elles désigne un accès à une cartographie. On ne cherche plus des tables au hasard, on remonte la liste des appelants. Le rapport technique interne qualifie cette identification de compétence à haut levier du métier, et c'est exact.

Les repères secondaires

La table des vecteurs d'interruption, à l'adresse configurée au démarrage, révèle les points d'entrée des traitements temps réel : réception de trame CAN, fin de conversion analogique-numérique, débordement de compteur. Identifier ces gestionnaires, c'est identifier les boucles temps réel du contrôle moteur.

Les chaînes de caractères servent d'ancrage même dans un binaire dépouillé : libellés liés aux services de diagnostic, définitions de codes défaut, identifiants de modules logiciels, parfois des fragments de noms de paramètres issus de la description d'ingénierie.

Ce qui est du ressort du reprogrammateur

Rien de ce qui précède ne consiste à modifier quoi que ce soit. En revanche, trois conséquences pratiques concernent directement l'atelier.

Reconnaître une lecture incomplète. Une lecture par la prise diagnostic ne rend souvent que la zone de calibration, et pas le chargeur d'amorçage. Un fichier dont le profil d'entropie s'arrête net, ou dont des pans entiers sont à 0xFF, est un fichier partiel. Le rapport technique interne rappelle qu'une lecture partielle fausse le calcul des sommes de contrôle à l'écriture, et qu'une lecture complète en banc ou en boot est plus sûre. Voir OBD, bench, boot.

Ne pas confondre fichier usine et image mémoire. Un conteneur de flash constructeur n'est pas un binaire : il peut être structuré en blocs, compressé et chiffré. C'est ce qui explique qu'un fichier téléchargé ne s'ouvre pas comme un dump.

Fournir la version exacte. Une définition appliquée à une version logicielle voisine pointe des adresses décalées. C'est pourquoi la référence matérielle et la version logicielle complètes font partie du dossier, systématiquement. Voir réussir une demande de révision.

Voir aussi lire une cartographie, DAMOS, A2L et mappack et qu'est-ce qu'un checksum.


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…