Procédé d'effacement d'informations mémorisées dans une mémoire réinscriptible non volatile, support de mémorisation et calculateur de véhicule automobile
La présente invention appartient au domaine des calculateurs électroniques, et concerne plus particulièrement un procédé d'effacement d'informations mémorisées dans une mémoire réinscriptible non volatile, un support de mémorisation d'informations, ainsi qu'un calculateur électronique comportant un tel support de mémorisation.
La présente invention trouve une application préférée, bien que nullement limitative, dans le cas de calculateurs de véhicules automobiles.
Les calculateurs électroniques de véhicules automobiles se présentent de manière connue sous la forme d'un microcontrôleur comportant, outre un ou plusieurs microprocesseurs, des mémoires électroniques (flash, EEPROM [« Electrically-Erasable Programmable Read-Only Memory »], RAM [« Random Access Memory »], etc.), des périphériques d'interface, etc.
Dans des mémoires non volatiles du calculateur sont mémorisés des programmes d'ordinateur, ou « logiciels », constitués d'un ensemble d'instructions de code de programme à exécuter par un microprocesseur afin de réaliser les différentes tâches dudit calculateur. Généralement, trois principaux types de logiciels sont mémorisés dans des mémoires non volatiles du calculateur :
· un logiciel d'amorçage, à exécuter notamment au démarrage du calculateur électronique pour initialiser celui-ci, connu dans la littérature anglo-saxonne sous le nom de « Boot Software »,
• un logiciel applicatif, à exécuter pour réaliser les tâches spécifiques du calculateur électronique, connu dans la littérature anglo-saxonne sous le nom de « Application Software »,
• un logiciel de reprogrammation permettant de modifier tout ou partie des informations (notamment les logiciels et/ou les données de calibration) mémorisées dans des mémoires réinscriptibles non volatiles du calculateur électronique, connu dans la littérature anglo-saxonne sous le nom de « Loader Software ».
Les logiciels d'amorçage et de reprogrammation peuvent être également un même logiciel, connu alors sous le nom de « Boot Loader ».
De nos jours, certains calculateurs électroniques de véhicules automobiles sont équipés de mémoires réinscriptibles non volatiles du type « mémoire flash ». De manière connue, une mémoire flash est généralement organisée en plusieurs segments sur lesquels des opérations peuvent s'effectuer en parallèle. Chaque segment est lui- même organisé en plusieurs secteurs, un secteur correspondant à la plus petite unité de
mémoire pouvant faire l'objet d'une opération d'effacement. En outre, chaque secteur est généralement organisé en plusieurs pages, une page correspondant à la plus petite unité de mémoire pouvant faire l'objet d'une opération d'écriture.
Pour effectuer une reprogrammation d'une mémoire flash, il faut en principe effacer le contenu des secteurs des pages dans lesquelles de nouvelles informations doivent être écrites, puis écrire lesdites nouvelles informations dans les pages prévues.
Lorsque le contenu d'un secteur est effacé, il n'est plus possible de récupérer les informations qui étaient auparavant mémorisées dans ce secteur. On comprend donc que les opérations d'effacement doivent être effectuées avec précaution, afin d'assurer que le contenu d'un ou plusieurs secteurs ne soit pas effacé par mégarde.
La figure 1 représente schématiquement l'organisation d'une mémoire flash comportant deux secteurs Sa et Sb dont les adresses mémoire physiques sont entrelacées.
En effet, on constate que les deux secteurs Sa et Sb se décomposent en plusieurs éléments. Les éléments desdits secteurs Sa et Sb sont agencés de sorte que la mémoire flash comporte tout d'abord le premier élément du secteur Sa, puis le premier élément du secteur Sb, puis le second élément du secteur Sa, puis le second élément du secteur Sb, etc.
Traditionnellement, les requêtes d'effacement indiquent l'adresse mémoire physique du début de la zone mémoire à effacer, ainsi que la taille de la zone mémoire à effacer à partir de cette adresse mémoire physique.
On comprend qu'une telle approche mise en œuvre pour effacer le contenu du secteur Sa entraînerait un risque d'effacer également le contenu du secteur Sb, du fait que ces secteurs sont entrelacés.
La présente invention vise à proposer une solution qui permette de diminuer les risques d'effacement par érreur de secteurs, dans le cas d'une mémoire réinscriptible non volatile dont au moins deux secteurs comportent des adresses mémoire physiques entrelacées.
La présente invention vise également à proposer une solution qui permette, dans certains cas, de faciliter la parallélisation des opérations d'effacement et par conséquent diminuer la durée d'effacement de la mémoire réinscriptible non volatile dont le contenu doit être effacé.
En outre, la présente invention vise à proposer une solution qui permette d'avoir un module esclave, qui interagit directement avec la mémoire réinscriptible non volatile et doit par conséquent en connaître l'organisation et le type, offrant une interface à un module maître, qui lui envoie des requêtes d'effacement, qui soit la même quel que
soit l'organisation et le type de la mémoire réinscriptible non volatile dont le contenu doit être effacé.
Selon un premier aspect, l'invention concerne un procédé d'effacement d'informations mémorisées dans une mémoire réinscriptible non volatile d'un calculateur électronique, dans lequel un module maître envoie des requêtes d'effacement à un module esclave dudit calculateur électronique, ladite mémoire réinscriptible non volatile étant organisée en secteurs correspondant à la plus petite unité mémoire pouvant faire l'objet d'une opération d'effacement, au moins deux secteurs comportant des adresses mémoire physiques entrelacées. En outre, le procédé d'effacement comporte les étapes préalables suivantes :
• détermination d'un espace d'adressage mémoire virtuel associé à la mémoire réinscriptible non volatile, dans lequel chaque secteur s'étend sur une plage spécifique d'adresses mémoire virtuelles consécutives,
• établissement d'une première fonction de correspondance permettant de déterminer, pour chaque plage d'adresses mémoires virtuelles de l'espace d'adressage mémoire virtuel, le ou les secteurs associés à une plage d'adresses mémoire virtuelles,
Ensuite, le procédé d'effacement selon l'invention comporte, pour chaque requête d'effacement reçue par le module esclave indiquant une plage d'adresses mémoire virtuelles, une étape de détermination, d'après la première fonction de correspondance et de la plage d'adresses mémoires virtuelles indiquée, du ou des secteurs dont le contenu doit être effacé par le module esclave.
En outre, selon le procédé d'effacement suivant l'invention, la mémoire réinscriptible non volatile comporte plusieurs segments, lesdits segments étant tels que des opérations d'effacement sur un segment peuvent être effectuées simultanément à des opérations d'effacement sur un autre segment, chaque segment se décomposant en plusieurs secteurs et au moins deux segments comportant des adresses mémoire physiques entrelacées. Chaque requête d'effacement envoyée par le module maître est en outre envoyée en indiquant une plage d'adresses mémoire virtuelles ne correspondant qu'à un seul segment de la mémoire réinscriptible non volatile.
En outre, selon le procédé d'effacement suivant l'invention, deux requêtes d'effacement consécutives envoyées par le module maître indiquent respectivement des plages d'adresses mémoire virtuelles correspondant à des segments différents de la mémoire réinscriptible non volatile, ces deux requêtes d'effacement consécutives visant respectivement un premier segment et un second segment, les opérations d'effacement correspondantes étant effectuées en parallèle.
Suivant des modes particuliers de mise en uvre, le procédé d'effacement comporte l'une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles.
De préférence, la plage d'adresses mémoire virtuelles est sans recouvrement avec la plage d'adresses mémoire physiques réinscriptibles de la mémoire réinscriptible non volatile, et le procédé d'effacement comporte une étape de détection d'utilisation d'une plage d'adresses mémoire virtuelles, l'étape de détermination de secteur n'étant exécutée que si une plage d'adresses mémoire virtuelles a été détectée.
De préférence, lorsque plusieurs composants logiciels sont mémorisés dans la mémoire réinscriptible non volatile, le procédé d'effacement comporte :
• une étape préalable d'établissement d'une seconde fonction de correspondance permettant de déterminer, pour chaque composant logiciel pouvant être effacé, la ou les plages d'adresses mémoire virtuelles associées à un composant logiciel,
• une étape d'envoi, par un outil de reprogrammation connecté au calculateur électronique, d'une requête d'effacement d'un composant logiciel au module maître,
• une étape de conversion, par le module maître et d'après la seconde fonction de correspondance, de la requête d'effacement de composant logiciel en requête d'effacement de plage d'adresses mémoire virtuelles.
Selon un second aspect, l'invention concerne un support de mémorisation d'informations d'un calculateur électronique, mémorisant un module esclave adapté à effectuer des opérations d'effacement du contenu d'adresses mémoire physiques d'une mémoire réinscriptible non volatile organisée en secteurs correspondant à la plus petite unité mémoire pouvant faire l'objet d'une opération d'effacement. En outre, le support de mémorisation mémorise une première fonction de correspondance permettant de déterminer, pour chaque plage d'adresses mémoires virtuelles d'un espace d'adressage mémoire virtuel prédéfini, le ou les secteurs associés à une plage d'adresses mémoire virtuelles, et le module esclave comporte des instructions qui, lorsqu'elles sont exécutées par ledit calculateur électronique, déterminent, à partir de la première fonction de correspondance et d'une plage d'adresses mémoire virtuelle indiquée dans une requête d'effacement reçue par ledit module esclave, le ou les secteurs dont le contenu doit être effacé, la plage d'adresses mémoire virtuelles étant sans recouvrement avec la plage d'adresses mémoire physiques réinscriptibles de la mémoire réinscriptible non volatile, et le module esclave étant configuré pour n'exécuter les instructions de détermination de secteur d'après la première fonction de correspondance que si une plage d'adresses mémoire virtuelles a été détectée.
Suivant des modes particuliers de réalisation, le support de mémorisation comporte l'une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles.
De préférence, le support de mémorisation mémorise un module maître configuré pour envoyer des requêtes d'effacement au module esclave, et une seconde fonction de correspondance permettant de déterminer, pour chaque composant logiciel mémorisé dans la mémoire réinscriptible non volatile, la ou les plages d'adresses mémoire virtuelles associées à un composant logiciel. En outre, le module maître comporte des instructions qui, lorsqu'elles sont exécutées par le calculateur électronique, convertissent, d'après la seconde fonction de correspondance, une requête d'effacement de composant logiciel reçue par ledit module maître en une requête d'effacement de plage d'adresses mémoire virtuelles.
Selon un troisième aspect, l'invention concerne un calculateur électronique qui comporte un support de mémorisation d'informations selon l'un quelconque des modes de réalisation de l'invention.
L'invention sera mieux comprise à la lecture de la description suivante, donnée à titre d'exemple nullement limitatif, et faite en se référant aux figures qui représentent :
- Figure 1 : déjà citée, une représentation schématique de deux secteurs entrelacés d'une mémoire flash,
- Figure 2 : une représentation schématique d'un calculateur électronique de véhicule automobile,
- Figures 3a et 3b : un exemple illustrant l'élaboration d'un espace d'adressage virtuel selon l'invention,
- Figure 4 : un diagramme représentant les principales étapes d'un mode préféré de mise en œuvre d'un procédé d'effacement selon l'invention,
- Figure 5 : un diagramme représentant les principales étapes d'une variante préférée du procédé d'effacement de la figure 4.
La figure 2 représente de façon très schématique un calculateur 10 électronique de véhicule automobile.
De manière plus générale, il est à noter que l'invention est applicable à tout type de calculateur électronique devant être reprogrammé au moyen d'un outil 20 de reprogrammation externe.
De manière connue, le calculateur 10 électronique comporte un microprocesseur 101 relié à des mémoires électroniques 102, 103, 104 par un bus de données 105.
Le calculateur 10 électronique comporte une mémoire réinscriptible non volatile 104, dans laquelle sont mémorisées des informations pouvant être reprogrammées. Ces informations peuvent être des instructions de code de programme, dites « logiciels », à exécuter pour effectuer les différentes tâches affectées audit calculateur électronique, et/ou des données utilisées par lesdits différents logiciels, telles que des données de calibration.
Le calculateur 10 électronique comporte également une mémoire non volatile 103 dans laquelle est mémorisé un logiciel de reprogrammation qui, lorsqu'il est exécuté par le microprocesseur 101 , permet de reprogrammer le contenu de la mémoire réinscriptible non volatile 102.
La reprogrammation de la mémoire réinscriptible non volatile 102 comprend en principe l'effacement d'une zone mémoire de ladite mémoire réinscriptible non volatile, puis l'écriture de nouvelles informations dans cette zone mémoire. Dans la suite de l'exposé, on s'intéresse principalement aux opérations d'effacement, les opérations d'écriture sortant du cadre de la présente invention.
Suivant d'autres modes de réalisation du calculateur 10 électronique, la mémoire réinscriptible non volatile 102 et la mémoire non volatile 103 sont confondues, le logiciel de reprogrammation étant alors mis en œuvre pour reprogrammer le contenu de la mémoire électronique dans laquelle il est lui-même mémorisé.
Le calculateur 10 électronique utilise également la mémoire volatile 104 (mémoire dite « RAM », acronyme anglais de « Random Access Memory » désignant une mémoire à accès direct), dans laquelle des informations sont copiées temporairement lors du fonctionnement du calculateur 10 électronique, en vue d'être exécutées par le microprocesseur 101. La mémoire réinscriptible non volatile 102 est du type organisé en plusieurs secteurs. La mémoire réinscriptible non volatile 102 comporte au moins deux secteurs entrelacés. Dans la suite de la description, on se place de manière non limitative dans le cas où la mémoire réinscriptible non volatile 102 est une mémoire flash.
La présente invention concerne un procédé 50 (cf. Figures 4 et 5) d'effacement d'informations mémorisées dans la mémoire flash 102, dont la mise en oeuvre est assurée notamment, dans le présent exemple, par :
• un module maître Mm, pouvant être intégré dans le logiciel de reprogrammation ou dans un outil 20 de reprogrammation externe,
• un module esclave Me intégré dans le logiciel de reprogrammation.
Le module maître Mm et le module esclave Me sont des logiciels mémorisés par exemple dans la mémoire non volatile 103, comportant des instructions de code de
programme destinées à être exécutées par le microprocesseur 101 du calculateur 10 électronique.
Dans son principe, le procédé 50 d'effacement repose sur l'élaboration d'un espace d'adressage mémoire virtuel, associant une adresse mémoire virtuelle spécifique à chaque adresse mémoire physique de la mémoire flash.
Les adresses mémoires virtuelles sont associées aux adresses mémoire physiques de sorte que, dans l'espace d'adressage mémoire virtuel, chaque secteur de la mémoire flash 102 s'étend sur une plage spécifique d'adresses mémoire virtuelles consécutives.
Lorsque deux secteurs sont entrelacés, c'est-à-dire lorsque ces secteurs comportent des adresses mémoire physiques entrelacées, il n'existe pas de plage d'adresses mémoire physiques consécutives telle que :
• tous les éléments d'un de ces secteurs sont compris dans cette plage d'adresses mémoire physiques consécutives,
· aucun élément d'un autre secteur n'est compris dans cette plage d'adresses mémoire physiques consécutives.
Dans l'espace d'adressage mémoire virtuel, il existe au contraire, par construction, une plage spécifique d'adresses mémoire virtuelles consécutives pour chaque secteur de la mémoire flash 102 telle que :
· tous les éléments de ce secteur sont compris dans cette plage d'adresses mémoire virtuelles consécutives,
• aucun élément d'un autre secteur n'est compris dans cette plage d'adresses mémoire virtuelles consécutives.
On comprend donc qu'il est possible, dans l'espace d'adressage mémoire virtuel, d'identifier de manière non ambiguë un secteur dont le contenu doit être effacé par une plage d'adresses mémoire virtuelles consécutives. En outre, l'utilisation de l'espace d'adressage mémoire virtuel permet d'émettre des requêtes d'effacement en supposant que les secteurs de la mémoire flash 102 ne sont pas entrelacés.
A cet effet le procédé 50 d'effacement d'informations mémorisées dans la mémoire flash 102 comporte les étapes préalables suivantes :
• 500 : détermination d'un espace d'adressage mémoire virtuel dans lequel chaque secteur s'étend sur une plage spécifique d'adresses mémoire virtuelles consécutives,
• 501 : établissement d'une première fonction de correspondance permettant de déterminer, pour chaque plage d'adresses mémoire virtuelles de l'espace d'adressage mémoire virtuel, le ou les secteurs associés à une plage d'adresses mémoire virtuelles donnée. Pour effacer le contenu d'un ou de plusieurs
secteurs, le module maître Mm enverra au module esclave Me des requêtes d'effacement se référant à des plages d'adresses mémoire virtuelles de la mémoire flash 102.
Le procédé 50 d'effacement comporte alors, pour chaque requête d'effacement reçue indiquant une plage d'adresses mémoire virtuelles, une étape 522 de détermination du ou des secteurs dont le contenu doit être effacé. Au cours de cette étape, le module esclave Me utilise la première fonction de correspondance, préalablement mémorisée par exemple dans la mémoire non volatile 103, pour déterminer le ou les secteurs associés à la plage d'adresses mémoire virtuelles indiquée dans la requête d'effacement reçue.
Dans un mode particulier de mise en œuvre, l'espace d'adressage mémoire virtuel est tel que chaque segment de la mémoire flash 102 s'étend sur une plage spécifique d'adresses mémoire virtuelles consécutives.
Tel que décrit précédemment, les segments d'une mémoire flash 102 sont tels que des opérations d'effacement effectuées sur un segment peuvent être effectuées simultanément à des opérations d'effacement sur un autre segment de la mémoire flash 102.
Avantageusement, le module maître Mm est configuré de sorte que chaque requête d'effacement qu'il émet indique une ou éventuellement plusieurs plages d'adresses mémoire virtuelles qui correspondent toutes à un même segment de la mémoire flash 102. En d'autres termes, chaque requête d'effacement émise par le module maître Mm ne vise qu'un segment de la mémoire flash 102. En outre, le module maître Mm est configuré de sorte que, lorsque que des opérations d'effacement doivent être effectuées sur au moins deux segments de la mémoire flash 102, des requêtes d'effacement envoyées consécutivement par le module maître Mm visent deux segments différents.
De telles dispositions permettent de paralléliser les opérations d'effacement relatives à deux requêtes d'effacement consécutives, puisque lesdites requêtes d'effacement consécutives visent deux segments différents. La durée d'effacement sera avantageusement réduite du fait que de nombreuses opérations d'effacement pourront être effectuées sensiblement simultanément là où, selon l'art antérieur, ces opérations d'effacement étaient effectuées les unes à la suite des autres car effectuées d'abord pour tout un premier segment, puis pour tout un second segment, etc.
De préférence, les adresses mémoire virtuelles n'ont pas de signification physique pour la mémoire flash 102. En d'autres termes, la plage d'adresses mémoire virtuelles ne présente pas de recouvrement avec la plage d'adresses mémoire physiques réinscriptibles de la mémoire flash 102. Ainsi, une adresse mémoire virtuelle, si elle est
interprétée comme étant une adresse mémoire physique de la mémoire flash 102, ne correspond pas à une adresse mémoire à laquelle des informations peuvent être écrites.
L'utilisation d'une plage d'adresses mémoire virtuelles distincte de la plage d'adresses mémoire physiques réinscriptibles de la mémoire flash 102 présente l'avantage que, au niveau du module esclave Me, il sera possible de détecter si une plage d'adresses mémoire virtuelles est utilisée ou non, et par conséquent si la première fonction de correspondance doit être utilisée ou non pour déterminer le ou les secteurs dont le contenu doit être effacé.
Par exemple, si la mémoire flash 102 comporte également des secteurs non entrelacés, l'effacement de ces secteurs peut éventuellement se faire en envoyant des requêtes d'effacement indiquant directement les plages d'adresses mémoire physiques de ces secteurs.
Les figures 3a et 3b représentent un exemple de détermination d'espace d'adressage mémoire virtuel associé à une mémoire flash 102.
La figure 3a représente schématiquement deux segments de la mémoire flash 102, désignés respectivement par S1 et S2. Le segment S1 comporte un secteur Sa et le segment S2 comporte un secteur Sb.
Les secteurs Sa et Sb sont en outre entrelacés. De manière non limitative, on considère que les secteurs Sa et Sb sont chacun de taille mémoire 64 octets.
Tel qu'illustré par la figure 3a, chaque secteur Sa, Sb se décompose en quatre éléments de taille mémoire 16 octets (16 o). L'adresse mémoire physique 0x00000000 correspond au premier élément du premier secteur Sa, l'adresse mémoire physique 0x00000010 correspond au premier élément du second secteur Sb, l'adresse mémoire physique 0x00000020 correspond au second élément du premier secteur Sa, l'adresse mémoire physique 0x00000030 correspond au second élément du second secteur Sb, etc.
La figure 3b représente schématiquement un exemple d'espace d'adressage mémoire virtuel pouvant être associé à la mémoire flash 102.
Dans cet exemple, la plage d'adresses mémoire virtuelles, associée à la plage d'adresses mémoire physique 0x00000000 à 0x0000007F, est comprise entre l'adresse mémoire virtuelle OxAOOOOOOO et l'adresse mémoire virtuelle 0xA000007F. Cette plage d'adresses mémoire virtuelles ne présente préférentiellement pas de recouvrement avec la plage d'adresses mémoire physique réinscriptibles de la mémoire flash 102, afin de pouvoir être facilement détectée au niveau du module esclave Me.
Dans l'exemple illustré par la figure 3b :
• l'adresse mémoire virtuelle OxAOOOOOOO est associée à l'adresse mémoire physique 0x00000000, soit au premier élément du premier secteur Sa,
• l'adresse mémoire virtuelle 0xA0000010 est associée à l'adresse mémoire physique 0x00000020, soit au second élément du premier secteur Sa,
• l'adresse mémoire virtuelle 0xA0000020 est associée à l'adresse mémoire physique 0x00000040, soit au troisième élément du premier secteur Sa,
· l'adresse mémoire virtuelle 0xA0000030 est associée à l'adresse mémoire physique 0x00000060, soit au quatrième élément du premier secteur Sa.
Ainsi les adresses mémoire virtuelles de la plage d'adresses mémoire virtuelles s'étendant de OxAOOOOOOO à 0xA000003F (adresse mémoire virtuelle de début OxAOOOOOOO et taille mémoire 64 octets) identifient chacune des adresses mémoire physiques dudit premier secteur Sa. On comprend donc qu'une requête d'effacement de la plage d'adresses mémoire virtuelles OxAOOOOOOO à 0xA000003F peut être interprétée sans ambiguïté comme visant à effacer uniquement le contenu du premier secteur Sa. Dans ce cas, le module esclave Me efface le contenu des éléments de taille 16 octets d'adresses mémoire physiques 0x00000000, 0x00000020, 0x00000040, et 0x00000060.
De manière analogue :
• l'adresse mémoire virtuelle 0xA0000040 est associée à l'adresse mémoire physique 0x00000010, soit au premier élément du second secteur Sb,
• l'adresse mémoire virtuelle 0xA0000050 est associée à l'adresse mémoire physique 0x00000030, soit au second élément du second secteur Sb,
· l'adresse mémoire virtuelle 0xA0000060 est associée à l'adresse mémoire physique 0x00000050, soit au troisième élément du second secteur Sb,
• l'adresse mémoire virtuelle 0xA0000070 est associée à l'adresse mémoire physique 0x00000070, soit au quatrième élément du second secteur Sb.
Ainsi les adresses mémoire virtuelles de la plage d'adresses mémoire virtuelles s'étendant de 0xA0000040 à 0xA000007F (adresse mémoire virtuelle de début 0xA0000040 et taille mémoire 64 octets) identifient chacune des adresses mémoire physiques du second secteur Sb. On comprend donc qu'une requête d'effacement de la plage d'adresses mémoire virtuelles 0xA0000040 à 0xA000007F peut être interprétée sans ambiguïté comme visant à effacer uniquement le contenu du second secteur Sb. Dans ce cas, le module esclave Me efface le contenu des éléments de taille 16 octets d'adresses mémoire physiques 0x00000010, 0x00000030, 0x00000050 et 0x00000070.
Pour effacer le contenu à la fois du premier secteur Sa et du second secteur Sb, une première requête d'effacement pourra indiquer la plage d'adresses mémoire virtuelles OxAOOOOOOO à 0xA000003F tandis qu'une seconde requête d'effacement pourra indiquer la plage d'adresses mémoire virtuelles 0xA0000040 à 0xA000007F. Ces deux requêtes d'effacement visant respectivement le premier
segment S1 et le second segment S2, les opérations d'effacement correspondantes pourront être effectuées en parallèle.
Il est à noter que, dans l'exemple illustré par les figures 3a et 3b, si les opérations d'effacement ne doivent pas nécessairement être effectuées en parallèle, rien n'exclut, pour effacer le contenu du premier secteur Sa et du second secteur Sb, d'envoyer une seule requête d'effacement indiquant la plage d'adresses mémoire virtuelles OxAOOOOOOO à OxAOOOOOTF.
La première fonction de correspondance qui sera utilisée par le module esclave Me peut par exemple être mémorisée sous la forme d'une table de correspondance qui peut alors s'exprimer comme suit :
On comprend que d'autres formats sont possibles pour la première table de correspondance, et qu'un choix particulier de format ne constitue qu'une variante de mise en œuvre du procédé 50 d'effacement.
La figure 4 représente schématiquement les principales étapes d'un mode préféré de mise en œuvre du procédé 50 d'effacement.
Les étapes 500, 501 préalables du procédé 50 d'effacement sont représentées dans la partie supérieure de la figure 4.
Pour effacer le contenu d'un ou de plusieurs secteurs de la mémoire flash 102, le procédé 50 d'effacement comporte plusieurs étapes. Les étapes représentées dans la partie gauche de la figure 4 sont exécutées par le module maître Mm, tandis que les étapes représentées dans la partie droite de la figure 4 sont exécutées par le module esclave Me.
Le procédé 50 d'effacement comporte tout d'abord une étape 512 d'envoi, par le module maître Mm, d'une requête d'effacement. La requête d'effacement indique une ou plusieurs plages d'adresses mémoire virtuelles.
Le procédé 50 d'effacement comporte ensuite une étape 520 de réception, par le module esclave Me, de la requête d'effacement.
De préférence, le module esclave Me exécute ensuite une étape 521 de détection d'utilisation de plage d'adresse mémoire virtuelle.
La requête d'effacement ayant été envoyée en indiquant plage d'adresses mémoire virtuelles, le module esclave Me détecte (référence 521 a sur la figure 4) que la
première fonction de correspondance doit être utilisée pour déterminer le ou les secteurs dont le contenu doit être effacé.
Le procédé 50 d'effacement comporte ensuite l'étape 522 de détermination du ou des secteurs associés à chacune des plages d'adresses mémoire virtuelles indiquées dans la requête d'effacement, d'après la première fonction de correspondance.
Le procédé 50 de reprogrammation comporte ensuite une étape 523 d'effacement du contenu du ou des secteurs déterminés d'après la première fonction de correspondance.
De préférence, si la plage d'adresses mémoire virtuelles indiquée est erronée en ce qu'elle n'englobe pas un ou plusieurs secteurs complets, le module esclave Me pourra le détecter d'après la première fonction de correspondance et rejeter la requête d'effacement (éventuellement en le notifiant au module maître Mm). Cette étape de détermination si la plage d'adresses mémoire virtuelles est correcte et, le cas échéant, cette étape de rejet de la requête d'effacement ne sont pas représentées sur les figures.
Si la requête d'effacement avait été envoyée par le module maître en indiquant une plage d'adresses mémoire physiques, l'étape 521 de détection aurait déterminé que la plage d'adresses mémoire utilisée n'était pas une plage d'adresses mémoire virtuelles (référence 521 b sur la figure 4), conduisant directement à l'exécution de l'étape 523 d'effacement du contenu du ou des secteurs associés à la plage d'adresses mémoire physiques indiquée (par exemple dans le cas de secteurs non entrelacés).
Suite à l'envoi d'une requête d'effacement, le procédé 50 d'effacement comporte une étape 513, exécutée par le module maître Mm, de détermination si d'autres requêtes d'effacement doivent être envoyées. Si aucune autre requête d'effacement ne doit être envoyée (référence 513a sur la figure 4), l'exécution du procédé 50 d'effacement prend fin.
Si d'autres requêtes d'effacement doivent être envoyées (référence 513b sur la figure 4), l'étape 512 d'envoi est à nouveau exécutée pour l'envoi de la requête d'effacement suivante. Les étapes suivantes du procédé, côté module esclave Me, sont alors à nouveau exécutées pour la nouvelle requête d'effacement.
Il est à noter que le module esclave Me est intégré dans le calculateur 10 électronique. Le module maître Mm peut être soit intégré dans le calculateur 10 électronique, soit intégré dans un outil 20 de reprogrammation externe au calculateur 10 électronique et connecté à celui-ci par l'intermédiaire d'un bus de communication (CAN, Ethernet, etc.).
La figure 5 représente schématiquement les principales étapes d'une variante préférée de mise en œuvre du procédé 50 d'effacement de la figure 4, dans le cas où un
outil 20 de reprogrammation externe envoie des requêtes d'effacement au module maître Mm intégré dans le calculateur 10 électronique.
Dans cette variante de mise en œuvre, on considère que la mémoire flash 102 mémorise plusieurs composants logiciels qui peuvent éventuellement être effacés, et l'outil 20 de reprogrammation envoie des requêtes d'effacement indiquant des composants logiciels à effacer.
Ceci est avantageux car, de la sorte, l'outil 20 de reprogrammation n'a besoin de connaître que les différents composants logiciels qui peuvent être effacés, et n'a besoin de connaître ni l'espace d'adressage mémoire virtuel ni l'organisation des secteurs de la mémoire flash 102.
A cet effet, outre toutes les étapes décrites en référence à la figure 4, le procédé 50 d'effacement illustré par la figure 5 comporte une étape 502 préalable d'établissement d'une seconde fonction de correspondance permettant de déterminer, pour chaque composant logiciel pouvant être effacé, la ou les plages d'adresses virtuelles associées à un composant logiciel donné.
Le procédé 50 d'effacement comporte également une étape 530 d'envoi, par l'outil 20 de reprogrammation, d'une requête d'effacement d'un composant logiciel au module maître Mm.
Le procédé 50 d'effacement comporte également une étape 510 de réception, par le module maître Mm, de la requête d'effacement envoyée par l'outil 20 de reprogrammation.
Le procédé 50 d'effacement comporte ensuite une étape 51 1 de conversion, par le module maître Mm et d'après la seconde fonction de correspondance, de la requête d'effacement du composant logiciel en une requête d'effacement de plage d'adresses mémoire virtuelles associée à ce composant logiciel, qui est ensuite envoyée au module esclave Me au cours de l'étape 512 d'envoi.
Il est à noter que, au cours de l'étape 51 1 de conversion, le module maître Mm peut convertir la requête d'effacement de composant logiciel en une ou plusieurs requêtes d'effacement indiquant chacune une ou plusieurs plages d'adresses mémoire virtuelles.
La présente invention concerne également un support de mémorisation d'informations, en l'occurrence la mémoire non volatile 103, dans lequel est mémorisé un logiciel de reprogrammation comportant un module esclave Me adapté à mettre en œuvre des étapes du procédé 50 d'effacement.
Ainsi le module esclave Me comporte des instructions de code de programme qui, lorsqu'elles sont exécutées par le microprocesseur 101 , mettent en œuvre notamment les étapes 520 de réception, 522 de détermination de secteur à effacer et 523
d'effacement. Le cas échéant, le module esclave Me comporte également des instructions dont l'exécution permet de mettre en œuvre l'étape 521 de détection.
Le cas échéant, le logiciel de reprogrammation, mémorisé dans le support de mémorisation, comporte également un module maître Mm adapté à mettre en œuvre des étapes du procédé 50 d'effacement.
Ainsi le module maître Mm comporte des instructions de code de programme qui, lorsqu'elles sont exécutées par le microprocesseur 101 , mettent en œuvre les étapes 512 d'envoi de requête d'effacement et 513 de détermination si d'autres requêtes d'effacement doivent être envoyées. Le cas échéant, le module maître Mm comporte également des instructions dont l'exécution permet de mettre en œuvre les étapes 510 de réception et 51 1 de conversion.
Le support de mémorisation mémorise également la première fonction de correspondance et, le cas échéant, la seconde fonction de correspondance.
La présente invention concerne également un calculateur 10 électronique de véhicule automobile comportant un support de mémorisation tel que décrit ci-avant.
De manière plus générale, la portée de la présente invention ne se limite pas aux modes de mise en œuvre et de réalisation décrits ci-dessus à titre d'exemples non limitatifs, mais s'étend au contraire à toutes les modifications à la portée de l'homme de l'art.
Notamment, on comprend que d'autres formats sont possibles pour chacune des première et seconde fonctions de correspondance qu'une table de correspondance, et qu'un choix particulier de format ne constitue qu'une variante de mise en œuvre du procédé 50 d'effacement. La première fonction de correspondance peut notamment se présenter sous la forme d'instructions de code de programme à exécuter pour déterminer le ou les secteurs associés à une plage d'adresses mémoire virtuelles indiquée dans une requête d'effacement. De même, la seconde fonction de correspondance peut se présenter sous la forme d'instructions de code de programme à exécuter pour déterminer la ou les plages d'adresses mémoire virtuelles associées à un composant logiciel indiqué dans une requête d'effacement.
La description ci-avant illustre clairement que par ses différentes caractéristiques et leurs avantages, la présente invention atteint les objectifs qu'elle s'était fixés.
En particulier, du fait de l'utilisation d'un espace d'adressage mémoire virtuel dans lequel les secteurs de la mémoire flash 102 ne sont pas entrelacés, les secteurs à effacer peuvent être identifiés de manière non ambiguë, limitant les risques d'effacer un ou plusieurs secteurs par erreur.