FR 2895557 A1 20070629 FR 0655845 A 20061222 Domaine de l'invention La présente invention concerne un procédé de gestion de données enregistrées dans une mémoire ayant un grand nombre de cellules de mémoire, notamment une mémoire de données non volatiles, en particulier une mémoire EEPROM. Etat de la technique La mémorisation permanente de données dans des appareils de commande s'utilise actuellement très fréquemment. Ces don-nées peuvent avoir des fonctions très différentes par exemple : - Paramètre enregistré à une fin de bande (réduction de TTNR), - Mémorisation de paramètres de fonctionnement pendant le cycle de SG (par exemple mémoire de défaut), - Valeur d'adaptation pour adapter le SG à des conditions d'environnement variables. Les cellules de mémoire utilisées (habituellement des mémoires EEPROM, mémoires Flash) ont une durée de vie limitée. Cette durée de vie dépend des paramètres suivants : - le temps de la conservation minimale des données (temps de rétention des données) - du nombre de cycles d'écriture et d'effacement autorisés, - de la charge en température en fonction du temps. Du fait de ces limitations de la durée de vie, il faut prendre des mesures pour protéger les données par exemple pour répondre aux conditions de durée de vie. Pour garantir la sécurité des données, on enregistre les données de manière redondante c'est-à-dire qu'on enregistre entre 2 et n fois un jeu complet de données (ou des contenus significatifs). Mais cela nécessite une importante capacité de mémoire. Pour augmenter la durée de vie, on réinscrit cycliquement les cellules de mémoire (après plusieurs centaines jusqu'à plusieurs milliers d'heures de fonctionnement). Mais cela se traduit par une sollicitation supplémentaire des différentes cellules de mémoire. Comme le temps entre deux cycles ne peut se déterminer que de manière très imprécise, par exemple parce que la saisie du temps dans le véhicule est arrêtée, l'appareil de commande étant coupé ou parce qu'il y a un fonc- tionnement avec coupure d'alimentation, on ne peut utiliser la lecture du contenu des cellules pour conclure à l'état d'une cellule de mémoire. Exposé et avantages de l'invention L'invention a pour but de remédier à ces inconvénients et concerne à cet effet un procédé du type défini ci-dessus, caractérisé en ce qu' - on détecte les cellules critiques de la mémoire, - on recherche les cellules libres dans la mémoire, et - on modifie une adresse de données d'une cellule critique de la mé- lo moire par une cellule de mémoire libre. Le procédé selon l'invention permet d'allonger la protection des données dans des conditions d'environnement difficiles et de permettre une utilisation optimum des cellules de mémoire disponibles. Le procédé tel que défini ci-dessus, utilise le fait qu'à la lecture des cel- 15 Iules de mémoire, il est possible de déterminer si la mémoire à des cellules de mémoire critiques. On peut supprimer un enregistrement redondant des données notamment d'un jeu complet de données, ce qui réduit les cycles écriture/effacement au minimum ou peut complète-ment les supprimer. 20 Selon un mode de réalisation préférentiel, il est prévu une seconde mémoire par exemple une mémoire vive RAM permettant d'enregistrer les données de la première mémoire dans la seconde mémoire et dans la seconde mémoire, on modifie une adresse des données d'une cellule de mémoire critique de la première mémoire en une cellule 25 de mémoire libre de la première mémoire si on a trouvé des cellules de mémoire critiques dans la première mémoire. Cela permet d'utiliser des mémoires EEPROM comme première mémoire car elles n'ont pas d'interface parallèle ou pas d'interface série rapide. Il est en outre avantageux d'enregistrer en retour des 30 adresses de données modifiées dans des cellules de mémoire correspondantes de la seconde mémoire en tenant compte des positions modifiées dans la première mémoire si l'on a trouvé des cellules de mémoire critiques dans la première mémoire. Il est certes possible de faire une mémorisation en retour permanente mais cela n'est pas nécessaire de sorte qu'on réduit la sollicitation des cellules de mémoire. Il est en outre prévu d'exécuter un programme de rafraîchissement lors-qu'on ne dispose d'aucune cellule de mémoire libre. En variante, on peut également effectuer le programme de rafraîchissement après avoir décelé les cellules de mémoire critiques et après l'exécution de ce pro-gramme on détecte de nouveau les cellules de mémoire critiques, c'est-à-dire que l'exécution du programme de rafraîchissement se fait avant que le transfert de mémoire éventuel ne soit nécessaire. Selon un mode de réalisation préférentiel, pour détecter les cellules de mémoire critiques, on effectue une opération de lecture normale selon laquelle, on compare une charge de mémoire à un niveau de référence et on exécute une opération de lecture plus précise selon laquelle on compare la charge de la mémoire à un niveau modifié. Ce procédé permet de manière simple d'identifier les cellules de mémoire critiques d'une mémoire de données en particulier d'une mémoire non fugitive. Selon un autre mode de réalisation préférentiel, on marque comme défectueuses les cellules de mémoire critiques dans la première mémoire. Lors des opérations suivantes de détection de cellules de mémoire critiques cela permet de renoncer aux cellules de mémoire déjà reconnues comme critiques ce qui raccourcit la durée de l'ensemble de l'opération. Selon un autre mode de réalisation préférentiel, au démarrage du système, on exécute une opération de détection des cellules de mémoire critiques. Cela permet de reconnaître suffisamment à temps si des cellules de mémoire sont critiques. En plus ou en variante, on peut prévoir d'effectuer pendant le fonctionnement par exemple à des intervalles fixes ou prédéterminés et/ou lors de la coupure de l'alimentation, une opération pour détecter des cellules de mémoire cri-tiques. Il est en outre prévu de tenir à disposition une zone de mémoire de réserve dans la première mémoire. Toutefois, la zone de mémoire de réserve ne sera occupée qu'en cas de besoin. Cela permet de prédéfinir la capacité de la mémoire et celle de la zone de mémoire de réserve ou de l'adapter le cas échéant. Enfin, la mémoire peut avoir une interface série ou une interface parallèle et une interface série ou parallèle rapide permet d'éviter une seconde mémoire et les procédés de transfert de mémoire associés. Dessins La présente invention sera décrite ci-après à l'aide d'un exemple de réalisation représenté dans les dessins annexés dans les-quels : - la figure 1 montre un premier segment du déroulement du procédé selon l'invention, - la figure 2 montre un second segment du procédé selon l'invention représenté à la figure 2, - la figure 3 est une vue schématique du procédé de mémorisation en retour. Description de modes de réalisation de l'invention Dans l'exemple suivant on utilisera une mémoire EEPROM comme première mémoire avec une interface série (accès aux données par une interface SPI ou I2C) ainsi qu'une mémoire vive RAM comme seconde mémoire. Dans le cas d'un accès parallèle aux données (ou d'un accès série très rapide) les opérations peuvent varier et les données peuvent alors être utilisées directement dans la mémoire EEPROM ce qui évite tout transfert temporaire dans la mémoire vive RAM. Dans l'exemple de réalisation on subdivise les opérations en trois étapes : 1. Mise en marche (lecture/identification et association de tous les contenus de données) ainsi que détection des cellules de mémoire critiques, 2. Recherche des cellules de mémoire libres et transfert des cellules de mémoire critiques, et 3. Enregistrement en retour des contenus de données modifiés dans les cellules de mémoire correspondantes en tenant compte d'éventuelles modifications ou positions de mémoire dans la mémoire EEPROM. Suivant les temps d'accès et les possibilités d'accès (accès parallèle/accès série), on peut effectuer les différentes étapes pendant le fonctionnement courant SG ou pendant les cycles d'alimentation/coupure d'alimentation. L'ensemble des données nécessaires est réparti en différents jeux de données (non redondant). Ces jeux de données se trouvent dans des unités fermées (conteneur de données). Chaque conteneur de données a une structure de don-nées fixe ; la structure de données du conteneur de données dans la mémoire EEPROM est formée d'un identifiant IDx, d'une somme de contrôle et des données utiles : Identifiant Données utiles 0 Données utiles n Somme de con ID 0 trôle de ID 0 Identifiant Données utiles 0 Données utiles n con- ID 1 Somme de con trôle de ID 1 Identifiant Données utiles 0 Données utiles n Somme de con ID n con- trôle de ID n L'identifiant IDx est un référencement/adressage dans la structure de données de la mémoire vive RAM. L'association des don-nées de la mémoire EEPROM se fait indépendamment de la position d'enregistrement dans une structure de mémoire vive RAM. Le pro-gramme d'application utilise alors la structure de la mémoire RAM. Les données utiles peuvent être quelconques. En outre, chaque conteneurs de données a une somme de contrôle qui termine le conteneur de données. Avec la somme de contrôle on détermine l'intégrité. En option, on peut prévoir une ou plu-sieurs sommes de contrôle pour tous les conteneurs de données. La gestion se fait alors comme décrit ci-dessus, comme un conteneur de données indépendant et ainsi elle est indépendante de la position absolue dans la mémoire EEPROM ; en d'autres termes, à la demande, on peut également chercher une nouvelle position de mémorisation pour la somme totale de contrôle. Cette structure permet d'enregistrer les conteneurs de données à un endroit quelconque de la mémoire EEPROM ; cela signifie que si l'on constate des cellules de mémoire critiques, on peut copier de manière quelconque. Dans les mémoires EEPROM, les conteneurs de données sont enregistrés, associés à des adresses de mémoire RAM (partie du conteneur de données). En revanche les contenus de données sont en-registrés dans les mémoires RAM avec les adresses correspondantes EEPROM. EEPROM RAM Conteneur de données 0 Conteneur de données 1 Conteneur de données 2 Conteneur de données 3 Conteneur de données 4 Conteneur de données 5 Conteneur de données 6 Conteneur de données n Contenu du conteneur 0 Adresse EE Contenu du conteneur 1 Adresse EE Contenu du conteneur 2 Adresse EE Contenu du conteneur 3 Adresse EE Contenu du conteneur 4 Adresse EE Contenu du conteneur 5 Adresse EE Contenu du conteneur 6 Adresse EE Contenu du conteneur n Adresse EE Au cours d'une première étape, on effectue une lecture/identification et association de tous les contenus de données ainsi que détection des cellules de mémoire critiques. La reconnaissance de cellules de mémoire critiques n'a pas à être faite au démarrage du système mais il peut être intéressant de déceler les cellules critiques aussitôt que possible pour éviter d'éventuels dommages. En option, on peut répéter la détection des cellules de mémoire critiques pendant le fonctionnement et/ou pendant la coupure de l'alimentation. Le procédé de détection des cellules de mémoire critiques repose sur l'utilisation d'une mémoire de données non fugitive ayant plusieurs possibilités de lecture du contenu des cellules de mémoire : - lecture normale, selon laquelle on compare une charge de mémoire à un niveau de référence, et - lecture accentuée ou plus précise selon laquelle on compare la charge de la mémoire à un niveau modifié. Si les deux résultats diffèrent des opérations de lecture ci-dessus, on aura une cellule d'état critique. On lance ensuite les me-25 sures décrites ci-après : Lorsqu'un conteneur de données critique a été trouvé, on transfert le conteneur de données correspondant et on marque comme non valables les contenus des adresses d'origine. Les nouvelles adresses EEPROM sont enregistrées dans une mémoire vive RAM. On examinera ci-après un exemple selon lequel après avoir trouvé deux conteneurs de données 1 et 5 critiques, on les a enregistré sous une nouvelle adresse. Les conteneurs de données 1 et 5 ont été transférés de mémoire ; le contenu des adresses d'origine a été marqué comme non valable. Les nouvelles adresses EEPROM sont enregistrées dans la mémoire vive RAM. EEPROM RAM Conteneur de données 0 Conteneur de données 1 Conteneur de données 2 Conteneur de données 3 Conteneur de données 4 Conteneur de données 6 Conteneur de données n Conteneur de données 1 Conteneur de données 5 Contenu du conteneur 0 Adresse EE Contenu du conteneur 1 Adresse EE Contenu du conteneur 2 Adresse EE Contenu du conteneur 3 Adresse EE Contenu du conteneur 4 Adresse EE Contenu du conteneur 5 Adresse EE Contenu du conteneur 6 Adresse EE Contenu du conteneur n Adresse EE Lors d'une coupure d'alimentation ou à la demande, on enregistre en retour les adresses de données modifiées dans la mémoire EEPROM. Une mémorisation en retour permanente serait également 15 possible mais cela engendrerait des contraintes supplémentaires pour la cellule EEPROM. Le procédé lui-même sera décrit ci-après de manière explicite à l'aide des figures 1 et 2. Après le départ 1 et dans l'étape 2, on lit un conteneur de 20 données selon un niveau normal. Dans une autre étape 3, on vérifie si l'intégrité du jeu de données est valable. Dans la négative, on vérifie dans une autre étape 5, si la mémoire a été examinée complètement. Si cela n'est pas le cas, alors dans une autre étape 5.1 on augmente l'adressage et on poursuit le 25 procédé par l'étape 2. Si dans l'étape 3, on constate que l'intégrité du jeu de données est valable, on enregistre dans une autre étape 4.1 la dernière adresse valable comme index. Dans une autre étape 4.2, on enregistre le conteneur de données dans la mémoire RAM à l'adresse IDx et l'adresse correspondante EEPROM. Dans l'étape suivante 4.3, on lit une nouvelle fois le conteneur de données avec un niveau de lecture plus précis. Dans l'étape 4.4 suivante, on vérifie si le conteneur de données est identique (comparaison du niveau normal et du niveau plus précis). Si cela est le cas, on poursuit le procédé par l'étape 5. Si cela n'est pas le cas, on indexe le jeu de données dans l'étape 4.5. En-suite, on poursuit le procédé également par l'étape 5. Si la mémoire est complètement examinée dans l'étape 5, on vérifie au cours d'une nouvelle étape 6 si le nombre de conteneurs de données trouvés est vrai. Si cela est le cas, on a trouvé tous les conteneurs de données et on les a examiné quant aux cellules de mémoire critiques. Dans l'étape suivante 6.1 (figure 2), on examine les conteneurs de don-nées trouvés pour déterminer les repères de modification. Si dans l'étape 7, on trouve un jeu de données avec un index de modification, alors dans une autre étape 8, on calcule une nouvelle adresse EEPROM libre à l'aide de l'index. Dans l'étape 9 suivante, on vérifie si l'adresse est disponible. Si cela est le cas, alors dans une étape suivante 10.1, on enregis- tre le conteneur de données à la nouvelle adresse et on protège la nouvelle position de la mémoire EEPROM dans la mémoire RAM. Dans une autre étape 10.2, on invalide l'ancienne position de mémoire dans la mémoire EEPROM (on détériore l'intégrité). Dans une autre étape 12, on vérifie si toutes les modifi- cations ont déjà été traitées. Si cela n'est pas le cas, on poursuit le pro-cédé par l'étape 6. Si toutefois à l'étape 9 l'adresse n'est pas disponible, on effectue dans l'étape 11 un programme de rafraîchissement c'est-à-dire que l'on transfert par programme le conteneur de données à l'adresse trouvée. Ensuite, on poursuit le procédé par l'étape 12. Une fois que toutes les modifications ont été traitées, on dispose dans ce cas des données pour l'application 13. Mais si dans l'étape 6 (voir figure 1) le nombre de conteneurs de données trouvés n'est pas correct, on constate un défaut dans l'étape 6.2 et on lance un programme de défaut (mémoire RAM ou mémoire EEPROM). Ensuite, également dans ce cas, on disposera des données pour l'application. En variante, on peut effectuer les opérations également en commençant par le programme de rafraîchissement et ensuite en effectuant un transfert de mémoire (non représenté à la figure 2). Dans ce cas, la détection de cellules de mémoire critiques est suivie par le programme de rafraîchissement. Ensuite, on répète la détection des cellules de mémoire critiques. Si la cellule de mémoire correspondante est toujours critique, on commence l'opération de recherche de cellules de mémoire libres. Dans le cas contraire, il n'y a pas d'autre action. Le procédé d'enregistrement en mémoire en retour sera décrit de manière explicite à l'aide de la figure 3. Lors de l'enregistrement en retour, on examine par un procédé cyclique tous les conteneurs de données pour déterminer les modifications. Après le départ 20, dans l'étape 21, on extrait un conteneur de donnes à l'aide de l'adresse mémorisée dans la mémoire RAM. Dans l'étape 22 on vérifie si le contenu du conteneur de données est identique à la valeur de la mémoire RAM. Si le contenu du conteneur de données est identique à la valeur de la mémoire RAM, il n'y a pas de modification de l'adresse de données/contenu des données et le procédé se poursuit par l'étape 25. Si toutefois le contenu du conteneur de données n'est pas identique à la valeur de la mémoire RAM, dans l'étape 23, on calcule l'intégrité du conteneur de données modifié et dans l'étape 24, on mémorise le conteneur de données dans la mémoire EEPROM. Dans l'étape 25 suivante, on vérifie si l'on a déjà examiné les modifications de tous les conteneurs de données. Si cela est le cas, la mémorisation en retour 26 est terminée. Dans le cas contraire, avec 2895557 io le conteneur de données suivant, on répète le procédé décrit ci-dessus à partir de l'étape 21. 5 REVENDICATIONS 1 ) Procédé de gestion de données enregistrées dans une mémoire ayant un grand nombre de cellules de mémoire, notamment une mémoire de données non volatiles, en particulier une mémoire EEPROM, caractérisé en ce qu' - on détecte les cellules critiques de la mémoire, - on recherche les cellules libres dans la mémoire, et - on modifie une adresse de données d'une cellule critique de la mémoire par une cellule de mémoire libre. 2 ) Procédé selon la revendication 1, caractérisé par une seconde mémoire dans laquelle on peut enregistrer les données de la première mémoire et dans la seconde mémoire, on modifie une adresse de données correspondant à une cellule de mémoire critique de la première mémoire par une cellule libre de la première mémoire. 3 ) Procédé selon la revendication 1, caractérisé en ce qu' on mémorise en retour les adresses de données modifiées dans les cellules de mémoire correspondantes de la seconde mémoire en tenant compte des positions modifiées dans la première mémoire. 4 ) Procédé selon la revendication 1, caractérisé en ce qu' on exécute un programme de rafraîchissement si l'on ne dispose d'aucune cellule de mémoire libre. 5 ) Procédé selon la revendication 1, caractérisé en ce qu' après avoir détecté des cellules de mémoire critiques, on effectue un programme de rafraîchissement, et après ce programme de rafraîchissement, on détecte de nouveau les cellules critiques de la mémoire.356 ) Procédé selon la revendication 1, caractérisé en ce que pour détecter des cellules de mémoire critiques on effectue une opération de lecture normale selon laquelle on compare une charge de cellule à un niveau de référence et on effectue une opération de mémoire plus précise par laquelle on compare la charge de la mémoire à un niveau modifié. 7 ) Procédé selon la revendication 1, caractérisé en ce qu' on repère comme défectueuses les cellules critiques de la première mémoire. 8 ) Procédé selon la revendication 1, caractérisé en ce qu' on effectue une opération de détection des cellules de mémoire critiques lors d'un démarrage du système. 9 ) Procédé selon la revendication 1, caractérisé en ce qu' on effectue une opération de détection des cellules de mémoire critiques pendant le fonctionnement et/ ou pendant la coupure de l'alimentation. 10 ) Procédé selon la revendication 1, caractérisé en ce qu' on tient disponible une zone de mémoire de réserve dans la première mémoire. 11 ) Procédé selon la revendication 1, caractérisé en ce que la mémoire a une interface série ou parallèle.35