La carte mémoire d'un calculateur : Flash, EEPROM, RAM et adresses
La fiche Mémoire interne ou externe pose la distinction de principe, et EPROM, EEPROM, Flash définit les technologies. Cette fiche va plus loin : la carte des adresses réelle et ce qu'elle implique pour la lecture.
Les quatre mémoires d'un ECU moderne
| Mémoire | Contenu | Particularité |
|---|---|---|
| iFlash (interne au µC) | bootloader fournisseur (SBOOT), bootloader client (CBOOT, personnalisé par l'OEM), programme applicatif (ASW), calibration | peut contenir des zones OTP jamais modifiables (paramètres d'usine) |
| eFlash (externe, soudée) | suite de l'ASW ou de la calibration quand l'interne ne suffit pas | présence variable selon la variante |
| EEPROM | codes d'accès sécurité, protection composant, codes défaut persistants, codage injecteurs | petite, lente, modifiable octet par octet, non volatile ; Continental l'emploie beaucoup (PCR2.1) |
| dFlash (data flash) | émule une EEPROM : VIN, codes immobiliseur, données de programmation de clés | modifier le dFlash à tort peut rendre le calculateur muet |
Le CBOOT mérite une mention : c'est le bootloader personnalisé par le constructeur (BMW, VW…) qui gère les mises à jour. Il se distingue du SBOOT, posé par le fournisseur du silicium. Certaines zones OTP (programmables une seule fois) portent des paramètres d'usine que rien ne peut réécrire. Voir Bootloader et BSL.
La carte des adresses TriCore
Sur un TriCore, chaque région a une adresse de départ fixe :
| Région | Adresse | Contenu | Taille |
|---|---|---|---|
| PFLASH | 0x80000000 (cache) / 0xA0000000 (non-cache) | code + calibration | 2 à 4 Mo |
| DFLASH | 0xAF000000 | EEPROM émulée : adaptatifs, DTC, kilométrage, immo | 64 à 128 Ko |
| Boot ROM (BSL) | 0xAFFFC000 | ROM figée en usine, chargeur d'amorçage série | — |
| SRAM | 0xD0000000 | mémoire volatile de travail | 56 à 136 Ko |
| Registres | 0xF0000000 | CAN, ADC, timers, GPIO, DMA | — |
Le PFLASH n'est pas découpé uniformément : de petits secteurs (16 Ko) en bas accueillent le bootloader, de gros secteurs (256 Ko) en haut l'applicatif. Le vecteur de reset se trouve à 0x80000020, précédé d'un en-tête de démarrage en tête de PFLASH qui indique le point d'entrée. Cette organisation explique pourquoi le bootloader peut être protégé indépendamment de l'applicatif.
Où vit l'identité du véhicule
Point capital : le codage des injecteurs — que Bosch nomme IMA ou IQA, un code de sept caractères généré à partir d'écarts de débit mesurés sur plusieurs points de fonctionnement — ainsi que le VIN et les codes immobiliseur ne résident pas dans la calibration, mais dans l'EEPROM ou le dFlash. C'est pourquoi une intervention qui néglige ces zones peut aboutir à un non-démarrage, un déséquilibre cylindre ou une perte d'appairage. Voir le VIN dans le calculateur et l'EEPROM : rôle et précautions.
Ce que ça implique pour la lecture
C'est ici que la carte mémoire devient concrète. Une lecture en OBD ne renvoie souvent que la zone de calibration ; une lecture en bench ou en boot crée une sauvegarde complète — iFlash, eFlash, dFlash et EEPROM. L'ordre de grandeur est parlant : sur un calculateur de 4 Mo de flash plus 64 Ko d'EEPROM, si l'OBD n'expose que 512 Ko, une lecture bas niveau expose environ 4 Mo, soit près de huit fois plus de données. Ces modes sont comparés dans OBD, bench, boot et Virtual Read.
La conséquence est double. D'une part, l'identité du véhicule vit dans le dFlash et l'EEPROM, pas dans la calibration. D'autre part, sans une sauvegarde complète du fichier d'origine, il peut être impossible de restaurer le calculateur dans son état antérieur. C'est la raison pour laquelle la lecture intégrale, puis l'archivage de l'original, précèdent toute modification.
Les zones qui ne se réécrivent pas
Toutes les régions ne sont pas modifiables. Certaines zones OTP (One-Time Programmable), programmées une seule fois en fabrication, portent des paramètres d'usine que rien ne peut réécrire : elles font partie intégrante de l'identité matérielle du calculateur. À l'autre extrémité, le bloc d'amorçage figé en ROM (le BSL, à son adresse fixe) ne s'efface jamais : c'est lui qui permet de programmer une puce vierge en usine et de récupérer un calculateur dont le logiciel est mort. La zone des registres périphériques, à 0xF0000000, n'est quant à elle pas de la mémoire de stockage mais l'interface vers le CAN, les convertisseurs et les timers.
Reconstituer ce que l'OBD ne donne pas
Comprendre la carte mémoire éclaire une pratique courante : quand l'OBD ne renvoie que la calibration, il est parfois possible de reconstituer une image plus complète en combinant la partie lue avec une base de référence de la même version — la logique de la lecture virtuelle, décrite dans Virtual Read. Mais cette reconstitution a ses limites : elle ne restitue jamais les zones d'identité propres au véhicule (VIN, immo, codage injecteurs), qui ne peuvent venir que d'une lecture complète du calculateur concerné. C'est la raison de fond pour laquelle la sauvegarde intégrale préalable n'est pas une précaution parmi d'autres, mais le socle de tout travail sérieux.
Voir aussi Mémoire interne ou externe, la flash NOR parallèle et l'EEPROM : rôle et précautions.
Sur ANP Engineering — file service de reprogrammation moteur pour professionnels : file service ECU, correction de checksum, calculateurs pris en charge, tarifs.
