Le format A2L (ASAM MCD-2 MC) en détail
La fiche Les fichiers de définition : DAMOS, A2L, mappack situe l'A2L parmi les formats de description. Celle-ci en fait le tour en détail : sa structure interne, son rôle exact, et pourquoi il est indissociable d'une version logicielle précise.
Ce qu'est un A2L
Un A2L (aussi appelé ASAP2) est le fichier de la norme ASAM MCD-2 MC. C'est un fichier texte ASCII qui décrit les données internes d'un calculateur pour la mesure et la calibration. Première version le 15 juin 1999, dernière révision 1.7.1 le 30 janvier 2018. Il est conçu pour être lu par les protocoles de calibration CCP (CAN Calibration Protocol) et surtout XCP, qui permettent de mesurer des variables et d'ajuster des paramètres sur un calculateur en fonctionnement, au banc d'essai moteur.
L'A2L est produit par le bureau d'études de l'équipementier ou du constructeur. C'est le plan d'architecte complet : il décrit des milliers de paramètres, y compris ceux qu'un motoriste ne touche jamais.
La structure : PROJECT, MODULE et les blocs-clés
Un A2L s'organise du général au particulier : un bloc PROJECT contient un HEADER (version du projet) et un ou plusieurs MODULE. À l'intérieur d'un MODULE se trouvent les blocs qui font tout le travail :
| Mot-clé | Rôle |
|---|---|
| CHARACTERISTIC | un paramètre calibrable : scalaire, courbe (1D) ou cartographie (2D). C'est ce que le motoriste modifie. Il référence un RECORD_LAYOUT et une COMPU_METHOD |
| MEASUREMENT | une variable interne mesurable : ce que l'on enregistre en datalog (régime, pression, températures…) |
| AXIS_PTS | les points d'axe quand ils sont stockés séparément des valeurs de la table — le cas général sur calculateur |
| RECORD_LAYOUT | comment le paramètre est physiquement rangé en mémoire : type de donnée, alignement, ordre des octets |
| COMPU_METHOD | la formule de conversion entre la valeur interne du calculateur et la valeur physique (bar, °C, mg/coup, ms…) |
| FUNCTION / GROUP | le regroupement fonctionnel des paramètres |
Les points fins qui comptent
Le COMPU_METHOD est le cœur discret de l'affaire. Un calculateur ne stocke pas « 1450 bar » ; il stocke un entier, par exemple sur 16 bits, que la formule transforme en valeur physique. Les types courants sont IDENTICAL (aucune conversion), LINEAR et RAT_FUNC (fonction rationnelle, du type facteur et offset), et TAB_INTP (interpolation par table, pour les grandeurs non linéaires). L'ordre des octets, lui, se déclare dans le RECORD_LAYOUT (souvent noté MSB_FIRST ou MSB_LAST) : c'est ce qui décide si un mot de 16 bits se lit poids fort d'abord ou l'inverse. Sans le bon COMPU_METHOD, on lit un nombre qui ne veut rien dire ; avec lui, on lit une pression, une durée, un couple. C'est exactement la traduction expliquée dans de la quantité injectée à la durée d'ouverture.
Le RECORD_LAYOUT est l'autre pièce critique : il fixe le type (8 ou 16 bits, signé ou non) et l'ordre des octets. Une même zone mémoire lue avec le mauvais RECORD_LAYOUT donne des valeurs aberrantes. Les AXIS_PTS méritent une mention : sur un calculateur, les axes d'une cartographie (les points de rupture en régime et en charge) sont souvent rangés ailleurs que les cellules ; l'A2L décrit ce découplage, que l'on retrouve dans lire une cartographie.
D'autres blocs complètent le tableau. Chaque CHARACTERISTIC et chaque MEASUREMENT indiquent leur adresse mémoire (ECU_ADDRESS) : c'est le lien direct entre le nom et l'octet. Une CHARACTERISTIC a un type — VALUE (scalaire), CURVE (courbe 1D), MAP (cartographie 2D), VAL_BLK (tableau) ou ASCII. Pour les grandeurs symboliques (un drapeau, un mode de fonctionnement), une COMPU_VTAB associe une valeur numérique à un libellé en clair. Enfin, les blocs IF_DATA décrivent le transport XCP ou CCP — adresses, canaux d'événement — qui permet à l'outil de banc de lire et d'écrire en direct. Un A2L se lit toujours en couple avec le binaire : l'outil de calibration charge l'A2L pour les noms et le fichier (HEX ou .bin) pour les valeurs.
Le rôle : la clé de lecture du binaire
Sans A2L, un dump n'est qu'une suite d'octets. Avec lui, chaque octet a un nom, une adresse, une unité et une formule. C'est précisément pourquoi les A2L d'origine ne circulent pas librement, et pourquoi la communauté fabrique des mappacks. L'A2L transforme une image brute — voir repérer les zones de calibration — en un ensemble de paramètres nommés et exploitables par un éditeur de cartographies.
La correspondance avec une version logicielle
Point capital : un A2L décrit les adresses d'une version logicielle et matérielle exacte. Les adresses correspondent à un build précis. Coller un A2L sur un binaire d'une autre version, c'est pointer des adresses décalées : on lit et on modifie des octets qui ne sont pas ce que l'on croit. Avant tout travail, on rapproche donc l'A2L de l'identité logicielle du fichier — les numéros de version que porte le calculateur, voir CAL ID et CVN.
Les outils qui exploitent un A2L sont, côté industrie, ETAS INCA et Vector CANape ; côté ouvert, la bibliothèque pyA2L et le convertisseur a2l2xdf, qui extrait des définitions ciblées vers un XDF de TunerPro.
Voir aussi DAMOS, A2L, mappack, décrire une cartographie avec un DAMOS et lire une cartographie.
Sur ANP Engineering — file service de reprogrammation moteur pour professionnels : file service ECU, correction de checksum, calculateurs pris en charge, tarifs.
