FR 2950171 A1 20110318 FR 1050940 A 20100210 L'invention concerne un dispositif et un procédé de sauvegarde de l'intégrité de données. L'invention concerne plus particulièrement un dispositif et une méthode permettant de préserver l'intégrité de données dans un dispositif électronique. Il arrive parfois que certains dispositifs électroniques en mode de fonctionnement normal, subissent des corruptions de données enregistrées dans des zones mémoires. Ceci peut parfois être transparent pour l'utilisateur et l'appareil peut récupérer les données sans que l'utilisateur soit obligé de rapporter l'appareil à un service après vente. Dans certains cas, il est par contre impossible de retrouver un mode de fonctionnement normal et l'appareil ne peut plus fonctionner. L'utilisateur est alors obligé de recourir au service après vente, ce qui est très gênant pour l'utilisateur et pour le vendeur. La corruption des données est plus particulièrement due au fait que le logiciel de contrôle de l'appareil écrase par inadvertance certaines zones mémoires contenant des données de fonctionnement de l'appareil qui sont par exemple chargées à l'initialisation ou lors de la conception de l'appareil et qui sont par exemple des identifiants de l'appareil ou tout du moins des valeurs fixes, qui ne seront pas modifiées lors du fonctionnement de l'appareil. Ces valeurs peuvent par exemple être des adresses, de type MAC par exemple, qui permettent l'accès à l'appareil par des appareils distants. Par exemple, un décodeur numérique comprenant un modem câble, est doté d'une adresse MAC pour pouvoir communiquer avec le distant. Si cette adresse MAC vient à être corrompue, le décodeur ne peut plus communiquer avec le serveur distant et il est impossible de le remettre en mode de fonctionnement normal pour l'utilisateur, qui doit alors contacter le revendeur ou le constructeur ou un service de maintenance. L'invention permet avantageusement de résoudre ce problème de corruption de données. A cet effet, l'invention concerne un procédé de sauvegarde de données dans une mémoire unique d'un dispositif électronique comprenant les étapes suivantes : Chargement de paramètres, dans une première zone, configuration de ladite première zone de manière à la verrouiller en écriture, chargement desdits paramètres de ladite première zone dans une au moins deuxième zone de ladite mémoire lors d'une mise en fonctionnement dudit dispositif électronique. Avantageusement, le procédé comprend, préalablement à ladite étape de chargement des paramètres dans ladite première zone, les étapes de - calcul de la taille occupée en mémoire desdits paramètres, - Calcul d'au moins un code correcteur d'erreur sur lesdits paramètres. Préférentiellement, ledit code correcteur d'erreur est chargé dans ladite première zone lors de l'étape de chargement. Avantageusement, le procédé comporte une étape de - Calcul d'un second code correcteur d'erreur sur les paramètres courants dans ladite deuxième zone, - Lecture du code d'erreur dans ladite première zone, - Comparaison des deux codes correcteur d'erreur, - Si les deux codes correcteurs d'erreur ne sont pas identiques, écrasement des paramètres courants de ladite deuxième zone par les paramètres de ladite première zone. Avantageusement, lors d'un disfonctionnement dudit dispositif électronique, le procédé comporte une étape de - Calcul d'un second code correcteur d'erreur sur les paramètres courants dans ladite deuxième zone, - Lecture du code d'erreur dans ladite première zone, - Comparaison des deux codes correcteur d'erreur, - Si les deux codes correcteurs d'erreur ne sont pas identiques, écrasement des paramètres courants de ladite deuxième zone par les paramètres de ladite première zone. Selon un mode de réalisation, les paramètres sont organisés en sous-ensembles, certains au moins étant modifiables lors du fonctionnement dudit dispositif électronique, un code d'erreur est calculé pour les données non modifiables uniquement. Préférentiellement, seuls les paramètres non modifiables de ladite première zone viennent écraser les paramètres courants non modifiables de ladite deuxième zone. Selon le mode de réalisation préféré, l'un au moins desdits paramètres est une adresse MAC. L'invention concerne également un dispositif de sauvegarde de 15 données comprenant une mémoire prévue pour enregistrer des données caractérisé en ce qu'il comprend des moyens de: - Chargement de paramètres, dans une première zone, - configuration de ladite première zone de manière à la verrouiller en 20 écriture, - chargement desdits paramètres de ladite première zone dans une au moins deuxième zone de ladite mémoire lors d'une mise en fonctionnement dudit dispositif électronique. 25 L'invention sera mieux comprise et illustrée au moyen d'exemples de modes de réalisation et de mise en oeuvre avantageux, nullement limitatifs, en référence aux figures annexées sur lesquelles : 30 - la figure 1 représente une vue d'ensemble d'un dispositif électronique selon un mode préféré de réalisation de l'invention, - la figure 2 représente un organigramme de fonctionnement de la configuration usine d'un dispositif selon un mode de réalisation préféré de l'invention10 - la figure 3 représente un mode de réalisation préféré de l'invention lors d'un fonctionnement. L'invention est décrite en référence à des décodeurs de type modem câble mais est transposable à d'autres dispositifs électroniques nécessitant des données de fonctionnement stables qui ne peuvent pas être récupérées sans intervention d'un service de maintenance et qui une fois corrompues ne permettent plus un fonctionnement normal de l'appareil. Dans le passé, les décodeurs étaient munis de mémoires de type EEPROM qui contenaient des données de type « constante » par exemple représentatives de paramètres d'identification de l'appareil, tels des adresses MAC. L'adresse MAC n'est pas le seul élément nécessaire à l'identification et surtout au fonctionnement de la partie modem cable du décodeur ; il arrive très souvent que le logiciel ait besoin de l'adresse MAC et/ou du certificat et en même temps d'un élément qui peut bouger (comme par exemple la dernière fréquence sur laquelle le Cable Modem s'est accroché) donc qui devra ne pas être en zone OPT. L'invention permet donc de ne pas éparpiller les données en enregistrant certaines dans des zones verrouillées et d'autres dans des zones non verrouillées et donc d'améliorer les performances des logiciels . En fait les EEPROM étaient encore plus facilement corruptibles, car pour y accéder on utilisait un BUS 12C externe qui pouvaient être perturbé électriquement ; de plus l'accès par 12C est plus lent que sur les mémoires Flash, et d'un point vu coût ce n'était pas avantageux car cela nécessitait un composant supplémentaire et des liaisons électriques externes entre le microprocesseur et I'EEPROM. Dorénavant, de telles EEPROM ne sont plus utilisées et les données mentionnées ci-dessus, de type paramètres, doivent être enregistrées dans d'autres types de mémoire et par exemple dans des mémoires de type flash, communément répandues. Le problème de ces mémoires est qu'elles sont utilisées également pour enregistrer du code utilisé lors du fonctionnement de l'appareil et accessibles en lecture mais aussi en écriture. Selon le mode de réalisation préféré décrit en référence aux figures 1 et 2, on enregistre les données constantes dans la mémoire flash lors de la fabrication du modem câble en usine et on les recopie dans une zone de la mémoire flash qui n'est programmable qu'une seule fois, appelée OTP ou première zone dans la suite de ce document, c'est-à-dire qui n'est pas réinscriptible. Les données enregistrées dans la zone OTP sont également copiées dans la zone de travail de la mémoire flash, lors de la conception usine. Ainsi, les données sont sauvegardées et peuvent être récupérées si les données correspondantes dans la zone de travail de la mémoire flash, ou encore appelée deuxième zone dans la suite du document, sont corrompues lors du fonctionnement. De manière avantageuse on calcule également un code de correction d'erreur (CRC) sur les données qui sont transférées dans cette zone OTP. De cette manière, en comparant les CRCs des données en zone OTP et des données correspondantes dans la zone de travail de la mémoire flash, on peut vérifier si la corruption est bien effective et si le problème de fonctionnement du modem câble ne provient pas d'un autre problème que la corruption des données. La figure 1 illustre un exemple d'appareil dans lequel l'invention peut être mise en oeuvre. Ici l'appareil représenté est un décodeur numérique 1 comprenant un modem câble 5 fonctionnant selon le protocole DOCSIS. DOCSIS est une norme spécifique, définissant les conditions d'interface de communications et de soutien d'opération pour un système de données utilisant le système de télévision par câble. Il permet l'addition du transfert de données à vitesse élevé à un système existant de télévision par câble. Il est utilisé par beaucoup d'opérateurs de télévision par câble pour fournir l'accès à Internet sur leur infrastructure coaxial et fibre hybride existante (HFC). Le décodeur 1 comprend plusieurs composants électroniques non représentés sur la figure 1 mais comprend notamment, un composant 4 ST7141 de la société ST Microelectronics. Ce composant comprend notamment deux contrôleurs, le contrôleur 6 apte à contrôler toutes les fonctionnalités de type décodeur et un contrôleur 5 apte à contrôler toutes les fonctionnalités de type câble modem. Le décodeur 1 comprend également une mémoire flash 7 organisée sous forme de secteurs. Ce type de mémoire est architecturé en secteurs qui peuvent être rendus non réinscriptibles. Lors de la fabrication du décodeur 1, certains secteurs sont ainsi rendus OTPs, selon les spécifications du décodeur. Ceci est fait par voie logicielle. Ainsi, la mémoire flash 7 est paramétrée pour comprendre une zone 72 OTP (constituée d'un certain nombre de secteurs), une zone de travail 71 et d'autres zones non représentées sur la figure 1 (le reste des secteurs). La taille de la zone OTP dépend notamment de la quantité de données à y enregistrer. La zone de travail 71 est ici considérée comme la zone miroir de la zone OTP, c'est-à-dire contenant une copie des paramètres enregistrés dans la zone OTP, mais non protégée en écriture. Le modem câble 5 est connecté à un dispositif distant 2 de type CMTS. Le CMTS (Cable Modem Termination System), l'équipement de tête de ligne utilisé par les compagnies de câblodistribution, est équivalent DSLAM (Digital Subscriber Line Access Multiplexer) en technologie DSL (Digital Subscriber Line). Le modem câble 5, est relié par un réseau de fibre optique au CMTS. Le CMTS conduit le trafic entre le réseau de câbles et l'Internet. Les opérateurs de câble ont la pleine commande de la configuration du modem câble par un serveur DHCP (Dynamic Hast Configuration Protocol) qui pourvoit le modem câble et l'ordinateur du client leur configuration respective. Le DHCP (qui permet l'attribution de l'adresse IP grâce à l'adresse MAC) permet le contrôle du distant avec l'aide d'un dispositif appelé SNMP (Simple Network Management Protocole) et aussi par l'intermédiaire d'un fichier de configuration stocké et maitrisé par le CMTS et qui sera chargé à chaque accrochage du Modem par ce dernier (on pourra grâce à ce ficher de configuration par exemple lui demande de changer de fréquence d'accrochage pour y trouver des données pour réparation ; ce n'est qu'un exemple) La figure 2 illustre le procédé mis en oeuvre lors de la fabrication du décodeur 1. Lors d'une première étape E1, les données sont préparées pour être téléchargées. Par exemple, lors de cette étape, une adresse MAC est attribuée au décodeur 1. Lors d'une seconde étape E2, la taille des données à enregistrer est calculée, ceci afin de savoir sur quelles données le code correcteur d'erreur sera calculé. Lors d'une troisième étape E3, le code correcteur d'erreur CRC est également calculé. Le calcul de ce code correcteur d'erreur est calculé selon des méthodes bien connues de l'homme du métier. Lors d'une quatrième étape E4, les données, leur taille et le code correcteur d'erreur correspondant, sont enregistrées en zone OTP 72 dans la mémoire. Elles sont également copiées dans la zone de travail 71. Les données sont ainsi dans une zone sauvegardée et leur intégrité est assurée. Le CRC peut aider à vérifier l'intégrité de données de la flash par comparaison de CRC. La figure 3 illustre le fonctionnement du décodeur 1 relatif à la mise en oeuvre d'un mode de réalisation de l'invention. Lors d'une étape de démarrage, le décodeur 1 est mis en route, il passe par exemple du mode veille au mode actif, dit en fonctionnement, par l'intermédiaire d'un utilisateur par exemple. Lors d'une étape S2, les données présentes en mémoire OTP 72 sont recopiées dans une zone de la mémoire flash 7 qui est réservée à cet effet, non illustrée sur la figure 1. Cette zone peut d'ailleurs être située dans une autre mémoire de type RAM par exemple. Lors d'une étape S3, un calcul du CRC est effectué sur les données courantes de la zone de travail 71 correspondant aux données de la zone 30 OTP 72. Lors d'une étape S4, on compare le CRC obtenu lors de l'étape S3, CRC_flash, avec le CRC enregistré dans la zone OTP, CRC_OTP. Lors d'une étape S5, si les deux CRC sont égaux, alors le décodeur peut fonctionner normalement. Lors d'une étape S5, si les deux CRCs sont différents, alors, les données dans la zone de travail sont corrompues et les données de la zone OTP sont de nouveau recopiées dans la zone de travail de la mémoire flash 71 et on revient à l'étape S3. Cet organigramme est relatif à une phase de démarrage du décodeur. Cependant, lors d'un fonctionnement normal, comme cité précédemment, certaines données de la zone de travail, comme l'adresse MAC par exemple mais également des certificats ou d'autres données, peuvent être corrompues lors d'une malencontreuse écriture dans la zone de travail. Dans ce cas, le décodeur rentre dans une procédure de récupération des données comme décrite dans la figure 3 mais il est à noter, dans ce cas de disfonctionnement, que lors de l'étape S2 on peut télécharger uniquement le CRC puisque dans un premier temps, seul le CRC est utilisé pour la comparaison effectuée lors de l'étape S4. Si la comparaison des CRCs faite à l'étape S5 est négative, alors on fait l'écrasement, sinon on revient en fonctionnement normal et d'autres mécanismes, en dehors de la portée de ce brevet sont mis en oeuvre pour trouver d'autres causes de disfonctionnement. Supposons par exemple que ce soit l'adresse MAC qui soit corrompue, le modem câble va alors décrocher et chercher une nouvelle fréquence pour se raccrocher. Lorsqu'il trouve une fréquence, il demande alors une adresse IP en utilisant le protocole DHCP. Comme son adresse MAC est corrompue, il y a un décrochage du modem câble qui demande un reset au décodeur. Dans ce cas, suite au reset, on se retrouve à l'étape S2, les données de la zone OTP sont recopiées de la zone OTP vers la zone de travail de la mémoire flash et le modem câble et le décodeur peuvent redémarrer sans avoir à faire appel à un service de maintenance. Le mode de fonctionnement envisagé peut être par ailleurs plutôt préventif que curatif comme décrit précédemment. Il peut notamment être envisagé que l'organigramme de la figure 2 soit mis en oeuvre de manière récurrente dans le décodeur. Cela permet de vérifier de manière régulière l'intégrité des données mais est relativement couteux en terme de temps de traitement. On peut envisager ainsi de déclencher les étapes S3 à S7 toutes les 2 heures par exemple, ce procédé étant alors complètement transparent. Les données enregistrées dans la zone OTP comprennent notamment, et non limitativement, les informations suivantes : - Une adresse MAC, - un numéro de série, - un nom de vendeur (ou fabricant) - un identifiant du vendeur (connu sous l'identifiant « OUI »), - un identifiant du numéro de boot, - additional MAC addresses, for instance for diagnostic purpose but not only, - Les certificats et clés de cryptage liés à la sécurité DOCSIS Le CRC est notamment calculé sur ces données. Dans d'autres modes de réalisation, il peut être envisagé de calculer une pluralité de CRCs, ou au moins deux CRCs. En effet, selon l'exemple de réalisation décrit ci-dessus, lorsque l'on s'perçoit lors de l'étape S5 en référence à la figure 3 que les données chargées de la zone OTP dans la zone de travail sont corrompues, on vient recopier toutes les données de la zone OTP dans la zone de travail. On constate cependant qu'il est possible que certaines données telles par exemple des certificats aient été mises à jour dans la zone de travail par le CMTS. Ainsi, lorsque l'on va recopier toutes les données de la zone OTP dans la zone de travail, on vient écraser cette nouvelle version de certificat avec cette enregistrée dans la zone OTP, ceci n'est pas souhaitable pour le certificat. Ainsi, on peut envisager de calculer plusieurs CRCs et donc plusieurs tailles de données (selon l'étape E2 en référence à la figure 2) de manière à comparer les CRCs enregistrés dans la zone OTP et les CRCs enregistrés dans la zone de travail, et relatifs aux mêmes données, et à recopier uniquement les données corrompues dans la zone de travail en fonction de la comparaison des CRCs. Par exemple, si le CRC relatif aux données suivantes est corrompu, - Une adresse MAC, - un numéro de série, - un nom de vendeur (ou fabricant) - un identifiant du vendeur (connu sous l'identifiant « OUI »), - un identifiant du numéro de boot, - additional MAC addresses, for instance for diagnostic purpose but not only, - un certificat, et si le CRC relatif aux données suivantes n'est pas corrompu: - un numéro de série, - un nom de vendeur (ou fabricant) - un identifiant du vendeur (connu sous l'identifiant « OUI »), - un identifiant du numéro de boot, - additional MAC addresses, for instance for diagnostic purpose but not only, - un certificat, alors on va récupérer en zone OTP l'adresse MAC uniquement. On peut notamment calculer un CRC pour les paramètres non modifiables et un autre CRC global, qui permet notamment de retrouver la configuration usine du décodeur.25 Revendications1. Procédé de sauvegarde de l'intégrité de données dans une mémoire unique d'un dispositif électronique caractérisé en ce qu'il comprend les étapes suivantes : Chargement de paramètres, dans une première zone, configuration de ladite première zone de manière à la verrouiller en écriture, chargement desdits paramètres de ladite première zone dans une au moins deuxième zone de ladite mémoire lors d'une mise en fonctionnement dudit dispositif électronique. 2. Procédé selon la revendication 1 caractérisé en ce qu'il comprend, préalablement à ladite étape de chargement des paramètres dans ladite première zone, les étapes de calcul de la taille occupée en mémoire desdits paramètres, - Calcul d'au moins un code correcteur d'erreur sur lesdits paramètres. 3. Procédé selon la revendication 2 caractérisé en ce ledit code correcteur d'erreur est chargé dans ladite première zone lors de l'étape de chargement. 25 4. Procédé selon la revendication 3 caractérisé en ce qu'il comporte une étape de - Calcul d'un second code correcteur d'erreur sur les paramètres courants dans ladite deuxième zone, 30 - Lecture du code d'erreur dans ladite première zone, - Comparaison des deux codes correcteur d'erreur, - Si les deux codes correcteurs d'erreur ne sont pas identiques, écrasement des paramètres courants de ladite deuxième zone par les paramètres de ladite première zone.20 5. Procédé selon la revendication 3 caractérisé en ce que lors d'un disfonctionnement dudit dispositif électronique, il comporte une étape de - Calcul d'un second code correcteur d'erreur sur les paramètres courants dans ladite deuxième zone, - Lecture du code d'erreur dans ladite première zone, - Comparaison des deux codes correcteur d'erreur, - Si les deux codes correcteurs d'erreur ne sont pas identiques, écrasement des paramètres courants de ladite deuxième zone par les paramètres de ladite première zone. 6. Procédé selon l'une des revendications précédentes caractérisé en ce que les paramètres sont organisés en sous-ensembles, certains au moins étant modifiables lors du fonctionnement dudit dispositif électronique, un code d'erreur est calculé pour les données non modifiables uniquement. 7. Procédé selon les revendications 4 à 6 caractérisé en ce que seuls les paramètres non modifiables de ladite première zone viennent écraser les paramètres courants non modifiables de ladite deuxième zone. 8. Procédé selon l'une des revendications précédentes caractérisé en ce 25 que l'un au moins desdits paramètres est une adresse MAC. 9. Dispositif de sauvegarde de données comprenant une mémoire prévue pour enregistrer des données caractérisé en ce qu'il comprend des moyens de: - Chargement de paramètres, dans une première zone, configuration de ladite première zone de manière à la verrouiller en écriture, 30chargement desdits paramètres de ladite première zone dans une au moins deuxième zone de ladite mémoire lors d'une mise en fonctionnement dudit dispositif électronique.