Brevet FR2845175A1 — publié le 20040402

DOMAINE DE L'INVENTION La présente invention concerne le domaine des progiciels qui sont enregistrés dans un, et contrôlent 5 le fonctionnement d'un, dispositif hôte. La présente invention concerne plus particulièrement le domaine de la commutation entre deux images ou plus d'un progiciel sur un dispositif hôte. CONTEXTE DE L'INVENTION Un progiciel est le code informatique ou logiciel enregistré dans un dispositif électronique pour contrôler le fonctionnement de ce dispositif. Un grand nombre de dispositifs électroniques fonctionnent en 15 utilisant un élément de progiciel, par exemple, des téléphones sans fil, des boîtiers externes, des lecteurs de musique numérique, etc. Le dispositif sur lequel le progiciel est enregistré et exécuté est souvent appelé hôte ou dispositif hôte. Le progiciel est typiquement enregistré dans un module de mémoire non volatile du dispositif hôte, par exemple, un module de mémoire flash. Un module de mémoire non volatile conserve les données mêmes lorsque l'alimentation du module de mémoire est interrompue. En 25 conséquence, le progiciel est disponible lorsque l'hôte est activé. Lorsque le dispositif démarre, le progiciel est typiquement chargé dans une mémoire volatile, par exemple, une mémoire à accès aléatoire (RAM) et exécuté 30 par le processeur du dispositif hôte. L'exécution du progiciel par le processeur provoque l'actionnement du dispositif et fournit la fonction ou les fonctions pour lesquelles le dispositif hôte était prévu. Outre la fourniture de la fonctionnalité du dispositif, le 35 progiciel peut également comporter une interface utilisateur permettant à l'utilisateur de contrôler le fonctionnement du dispositif hôte. Il devient souvent nécessaire ou souhaitable de modifier ou de mettre à niveau le progiciel dans un 5 dispositif hôte. Par exemple, une nouvelle version de progiciel peut fonctionner de façon plus robuste qu'une version plus ancienne. Une nouvelle version de progiciel peut également fournir des fonctionnalités supplémentaires ou étendre la fonctionnalité du 10 dispositif hôte. Malheureusement, comme avec toutes les mises au point de logiciels, l'introduction d'une nouvelle version de progiciel peut produire des problèmes inattendus dans le dispositif hôte. De plus, un 15 dispositif hôte quelconque peut présenter une configuration particulière de périphériques et d'applications supplémentaires ou logiciels s'exécutant sur cet hôte. Ainsi, les conditions de fonctionnement sur chaque hôte peuvent être légèrement différentes, 20 même si les dispositifs hôtes sont identiques. En conséquence, une nouvelle version de progiciel peut rencontrer des problèmes sur un dispositif hôte, que l'on ne rencontre pas sur un autre dispositif hôte. Lorsqu'un progiciel est mis à niveau, la 25 procédure de mise à niveau typique est la suivante. La nouvelle image du progiciel est téléchargée vers le dispositif hôte. L'image antérieure du progiciel est effacée avant téléchargement de la nouvelle version ou est écrasée par la nouvelle image du progiciel 30 téléchargée. Le dispositif est ensuite redémarré avec la nouvelle image du progiciel automatiquement chargée et exécutée en conséquence du redémarrage du dispositif. On espère que le dispositif hôte fonctionne comme attendu, 35 probablement avec une fonctionnalité supplémentaire ou améliorée, lorsqu'il exécute la nouvelle image du progiciel. Si l'on rencontre un quelconque problème, il est nécessaire de déterminer si le problème a été 5 provoqué par le nouveau progiciel ou a une certaine autre cause. Pour diagnostiquer ceci ou simplement pour refaire fonctionner le dispositif, il peut être nécessaire de réinstaller la version antérieure du progiciel. Ceci entraîne typiquement le téléchargement 10 de l'ancienne image du progiciel vers le dispositif hâte. Comme auparavant, la nouvelle image du progiciel est effacée avant le téléchargement de l'ancienne version ou est écrasée par le téléchargement de l'ancienne image du progiciel. Le dispositif est alors 15 redémarré en utilisant l'ancien progiciel pour vérifier quel impact ceci peut avoir sur les problèmes rencontrés avec la nouvelle version du progiciel. Comme pourront le comprendront les hommes de l'art, pour dépanner et corriger les problèmes avec le 20 nouveau progiciel, il peut être nécessaire d'effectuer plusieurs fois une commutation entre l'ancienne et la nouvelle version du progiciel, et d'observer l'effet résultant sur le dispositif hâte. Ce processus est rendu extrêmement pénible par la nécessité de télécharger et 25 d'installer la version désirée du progiciel à chaque fois qu'une commutation entre versions est nécessaire. R SUM DE L'INVENTION Dans un mode de réalisation préféré, la 30 présente invention fournit un procédé de commutation entre deux images ou plus d'un progiciel sur un dispositif hôte, en mémorisant deux images du progiciel ou plus dans une mémoire non volatile du dispositif hâte et en chargeant l'une des images au démarrage en réponse 35 à un indicateur pouvant être contrôlé par l'utilisateur. Dans un autre mode de réalisation préféré, la présente invention fournit un dispositif hôte qui exécute un progiciel pendant le fonctionnement, le dispositif hôte comprenant un module de mémoire non 5 volatile qui contient un module de code d'amorçage et est configuré pour contenir deux images ou plus d'un progiciel, un processeur pour exécuter le module de code d'amorçage et le progiciel, le processeur étant en communication avec la mémoire non volatile et un 10 commutateur en communication avec le processeur, le module de code d'amorçage étant configuré pour faire exécuter par le processeur une image particulière du progiciel en réponse à une position du commutateur. Dans encore un autre mode de réalisation 15 préféré, la présente invention fournit un dispositif hôte qui exécute un progiciel pendant le fonctionnement, le dispositif hôte comprenant un module de mémoire non volatile qui contient un module de code d'amorçage et au moins une image du progiciel, un processeur pour 20 exécuter le progiciel qui communique avec le module de mémoire non volatile et un indicateur numérique associé à chaque image du progiciel dans le module de mémoire non volatile, le module de code d'amorçage étant configuré pour exécuter une image particulière du 25 progiciel en réponse aux indicateurs numériques. BR VE DESCRIPTION DES DESSINS Les dessins annexés illustrent des modes de réalisation préférés de la présente invention et font 30 partie de la spécification. Avec la description qui suit, les dessins présentent et expliquent les principes de la présente invention. Le mode de réalisation illustrée est constitué d'exemples de la présente invention et ne limite pas la portée de l'invention. La figure 1 est un schéma par blocs d'un exemple de mode de réalisation d'un dispositif hôte avec une commutation disponible entre deux images du progiciel selon les principes de la présente invention. La figure 2 est un organigramme illustrant un mode de réalisation d'un procédé de commutation entre 5 plusieurs images du progiciel selon les principes de la présente invention, mis en oeuvre par exemple, dans le dispositif de la figure 1. La figure 3 est un schéma par blocs d'un second exemple de mode de réalisation d'un dispositif 10 hôte avec une commutation disponible entre deux images du progiciel selon les principes de la présente invention. La figure 4 est un organigramme illustrant un mode de réalisation d'un procédé de commutation entre 15 plusieurs images du progiciel selon les principes de la présente invention, mis en oeuvre, par exemple, dans le dispositif de la figure 3. Dans l'ensemble des dessins, des numéros de référence identiques désignent des éléments identiques. 20 DESCRIPTION D TAILL E DES MODES DE R ALISATION PR F R S La présente invention fournit un moyen et un procédé pour commuter facilement entre deux images du progiciel dans un dispositif hôte, de telle sorte par 25 exemple, que le dépannage d'une nouvelle version du progiciel puisse être facilement et rapidement effectué. Deux images du progiciel, par exemple, une ancienne image et une nouvelle image, sont toutes deux enregistrées dans la mémoire du dispositif hôte. Dans un 30 mode de réalisation, un commutateur physique informe le code d'amorçage de l'image du progiciel à charger. Ainsi, en faisant basculer le commutateur, l'utilisateur peut rapidement commuter entre les deux images du progiciel. Dans un autre mode de réalisation, des 35 indicateurs électroniques sont utilisés pour informer le code d'amorçage de l'image du progiciel à charger, permettant ainsi une commutation aisée entre les deux images du progiciel. La figure 1 est un schéma par blocs d'un exemple de mode de réalisation d'un dispositif hôte, 5 selon les principes de la présente invention, avec une commutation disponible entre deux images du progiciel. Comme représenté sur la figure 1, le dispositif hôte 108 comporte un module de mémoire non volatile, par exemple, un module de mémoire flash 101. Ce module de mémoire non 10 volatile 101, de préférence un module de mémoire flash, peut être un simple dispositif mémoire non volatile ou peut être constitué d'une pluralité de dispositifs mémoire non volatile. Le module de mémoire 101 peut contenir deux 15 images du progiciel ou plus. Sur la figure 1, deux images du progiciel 100a, 1Ob, sont illustrées. Si le module de mémoire 101 est constitué de deux dispositifs mémoire ou plus, chaque image du progiciel 100a, 1OOb peut être enregistrée dans un dispositif mémoire 20 différent. Toutefois, les deux images du progiciel lOOa, boOb peuvent également être enregistrées à des emplacements différents à l'intérieur d'un dispositif mémoire unique, de préférence, un module de mémoire flash. Un module de code d'amorçage 102 est également 25 enregistré dans le module de mémoire non volatile 101 et sera expliqué en détail ci-dessous. Le dispositif hôte 108 comporte également, de préférence, un processeur 107 et une mémoire à accès aléatoire (RAM) 104. Typiquement, le processeur 107 30 charge le progiciel à partir de la mémoire non volatile 101 dans la RAM 104 et exécute ensuite le progiciel. Il est toutefois possible que le processeur 107 puisse exécuter directement le progiciel à partir du module de mémoire non volatile sans copier d'abord le progiciel 35 vers une mémoire volatile, à savoir, la RAM 104. De préférence, le processeur 107, la RAM 104 (si elle est utilisée) et le module de mémoire non volatile 101 sont tous interconnectés par un bus de données 103. Le bus de données 103 permet de transmettre 5 les données entre les divers constituants du dispositif hôte 108. Un connecteur ou émetteur-récepteur 105 est un canal à travers lequel des données, telles qu'une nouvelle image du progiciel, peuvent être téléchargées 10 vers le dispositif hôte 108. Le connecteur/émetteurrécepteur 105 est également connecté au bus 103 et, en conséquence, peut fournir des données aux divers constituants du dispositif hôte 108 qui sont connectés au bus 103. Si le connecteur/émetteur-récepteur 105 est un connecteur, il peut être utilisé pour connecter le dispositif hôte 108 à un réseau ou à un autre dispositif tel qu'un ordinateur pouvant fournir des données au dispositif hôte 108. Par exemple, le connecteur 105 peut 20 être une connexion à l'Internet, un réseau local (LAN) ou un réseau étendu (WAN). titre de variante, le connecteur peut être utilisé pour connecter le dispositif hôte 108 à un ordinateur, un serveur, une unité de disque ou un autre dispositif fournissant des 25 données, telles qu'une image du progiciel, au dispositif hôte 108. Le connecteur 105 peut être, par exemple, une connexion série, une connexion de bus série universel (USB), une connexion "Institute of Electrical and Electronics Engineers" (IEEE) 1394, etc. Si le connecteur/émetteur-récepteur 105 est un émetteur-récepteur, l'émetteur-récepteur peut être utilisé, par exemple, pour recevoir sans fil des données dans le dispositif hôte 108. L'émetteur-récepteur 105 peut être un émetteur-récepteur optique, infrarouge, à 35 fréquences radio ou d'un autre type. Un quelconque moyen de téléchargement de données, par exemple, d'une image du progiciel dans le dispositif hôte 108 peut être utilisé selon les principes de la présente invention. Lorsque le dispositif hôte 108 est initialement mis sous tension, le processeur 107 charge 5 automatiquement le module du code d'amorçage 102 à partir de la mémoire flash 101 dans la RAM 104 et exécute le code d'amorçage 102 à partir de la RAM, ou le processeur 107 peut exécuter directement le module de code d'amorçage 102 à partir de la mémoire flash 101. Le 10 code d'amorçage 102 fournit les instructions initiales permettant au dispositif hôte 108 de commencer à fonctionner, comportant des instructions pour charger et exécuter le progiciel disponible. Ainsi, c'est le code d'amorçage 102 qui surveille le chargement du progiciel 15 depuis la mémoire flash 101 dans la RAM 104. Dans le dispositif hôte 108 de la présente invention, deux images du progiciel ou plus (par exemple, lOOa, 1Ob), peuvent être prévues. Une image lOOa peut être une image plus ancienne, tandis que 20 l'autre image 1OOb est une image du progiciel mise à jour, plus récente. Une seule des deux images du progiciel lOOa, 1oOb est chargée et exécutée par le code d'amorçage 102 lorsque le dispositif hôte démarre. L'autre image du progiciel reste inutilisée dans la 25 mémoire non volatile. Le module de code d'amorçage 102 détermine laquelle des deux images du progiciel lOOa, 1oOb doit être chargée dans la RAM 104 et exécutée par le processeur 107 lorsque le dispositif hôte 108 démarre. 30 cet effet, selon les principes de la présente invention, un commutateur 106 peut être prévu et connecté au processeur 107. Le commutateur 106 peut être, par exemple, un commutateur physique bipolaire qui se déplace entre une première et une seconde position. 35 L'une des positions, par exemple, la première position, est considérée comme une position par défaut. Lorsque le code d'amorçage 102 s'exécute sur le processeur 107 et doit déterminer quelle image du progiciel 100a, 100b doit être chargée dans la RAM 104, le code d'amorçage 102 demande la position du 5 commutateur 106. Le commutateur peut être configuré pour envoyer un "1" ou un "0" au processeur, indiquant sa position. Si le commutateur 106 est dans la position par défaut, le code d'amorçage 102 identifie, de préférence, l'image du progiciel la plus récente 100a et charge 10 cette image dans la RAM 104. On suppose que l'image du progiciel la plus récente disponible doit être l'image chargée. Chaque image du progiciel 100 peut avoir un numéro de version ajouté à l'en-tête ou au nom de 15 fichier, que le code d'amorçage 102 peut lire pour identifier quelle image est l'image la plus récente. titre de variante, le module de mémoire 101 peut enregistrer le moment o, ou dans quel ordre, les images du progiciel ont été reçues, de façon que l'image la 20 plus récente du progiciel puisse être identifiée par le code d'amorçage 102. Toutefois, si le commutateur 106 est dans une seconde position, qui n'est pas la position par défaut, le code d'amorçage 102 charge l'image plus ancienne du 25 progiciel 100b telle qu'elle est identifiée par le numéro de version, la date ou l'ordre de téléchargement, etc. En conséquence, en faisant basculer le commutateur 106, un utilisateur ou un technicien peut rapidement commuter la version du progiciel 100 chargée et exécutée 30 par le dispositif hôte 108. chaque fois que la position du commutateur 106 est modifiée est que le dispositif hôte 108 est redémarré, le code d'amorçage 102 charge une image différente du progiciel 100a, 100b associée à la 35 position du commutateur 106. Par exemple, dans une opération de dépannage, un technicien peut rapidement commuter entre deux images du progiciel et observer le comportement différent du dispositif hôte 108, en fonction de l'image du progiciel utilisée. Pour un accès plus facile, le commutateur 106 5 peut être accessible par l'intermédiaire d'un boîtier externe du dispositif hôte 108. titre de variante, le commutateur 106 peut nécessiter le retrait du boîtier du dispositif hôte pour y accéder. Comme le comprendront les hommes de l'art, la 10 présente invention peut également englober un mode de réalisation dans lequel trois images du progiciel ou plus sont enregistrées dans le dispositif hôte. Le commutateur peut alors avoir deux ou trois positions, chacune d'entre elles correspondant à une image 15 particulière du progiciel qui sera chargée si le dispositif hôte est amorcé avec le commutateur dans cette position. La figure 2 est un organigramme illustrant un procédé de commutation entre diverses images du 20 progiciel selon les principes de la présente invention. Le procédé illustré sur la figure 2 peut être mis en oeuvre, par exemple, dans le dispositif de la figure 1. Comme représenté sur la figure 2, le procédé commence lorsque le dispositif hôte est mis sous tension ou 25 activé. Le module de code d'amorçage est alors chargé et exécuté (étape 120). Le module de code d'amorçage peut alors contrôler la mémoire non volatile pour identifier les diverses images du progiciel dans le module de mémoire. 30 ce moment, le code d'amorçage peut également déterminer laquelle des images du progiciel est la plus récente (étape 121). Le module de code d'amorçage vérifie ensuite le commutateur de progiciel pour déterminer sa position 35 (étape 122), par exemple si le commutateur est dans la position par défaut (décision 123). Si le commutateur est dans la position par défaut, l'image en mémoire la plus récente du progiciel est chargée et exécutée (étape 124). Si le commutateur n'est pas dans la position par défaut, l'image plus ancienne ou l'autre image du 5 progiciel est chargée (étape 125). Comme le comprendront les hommes de l'art, les étapes de ce procédé peuvent être exécutées dans un ordre différent. Par exemple, à titre de variante, le code d'amorçage peut demander la position du commutateur avant d'identifier les âges 10 relatifs des images du progiciel en mémoire. La figure 3 est un schéma par blocs d'un second exemple de mode de réalisation d'un dispositif hôte avec une commutation disponible entre deux images du progiciel, selon les principes de la présente 15 invention. Comme représenté sur la figure 3, le dispositif hôte 108a comporte un module de mémoire non volatile 101, de préférence, un module de mémoire flash. Comme auparavant, ce module de mémoire non volatile (101) peut être un simple dispositif mémoire non 20 volatile ou peut être constitué d'une pluralité de dispositifs mémoire non volatile. Le module de mémoire non volatile 101 contient au moins deux images du progiciel lOOa, 1Ob. Un indicateur numérique de progiciel 130a, 130b, est 25 associé à chaque image du progiciel lOOa, 1Ob. Le but et le fonctionnement de l'indicateur de progiciel 130 vont être décrits plus en détail ci-dessous. Si le module de mémoire non volatile 101 est constitué de deux dispositifs mémoire non volatile ou 30 plus, chaque image du progiciel lOOa, 1OOb et son indicateur associé 130a, 130b peut être enregistrée dans un dispositif mémoire non volatile différent. Toutefois, les deux images du progiciel lOQa, 1OOb et les indicateurs associés 130a, 130b peuvent être enregistrés 35 à des emplacements différents à l'intérieur d'un dispositif mémoire non volatile unique, comme représenté sur la figure 3. Un module de code d'amorçage 102a est également, de préférence, enregistré dans le module 5 mémoire non volatile 101, bien qu'il puisse être enregistré dans un module mémoire non volatile différent. Comme auparavant, le module de code d'amorçage 102a contient les instructions initiales pour amener le dispositif hôte 108a en fonctionnement, 10 comportant l'identification et le chargement d'une image appropriée du progiciel (par exemple, lOOa, 1Ob). Le dispositif hôte 108a comporte également un processeur 107 et peut comporter un module de RAM 104. Comme auparavant, le processeur 107 charge typiquement 15 le progiciel dans la RAM 104 et exécute ensuite le progiciel. Un bus de données 103 interconnecte le processeur 107, la RAM 104 et le module de mémoire flash 101, de façon que des données puissent être transmises entre les divers constituants du dispositif hôte 108a. 20 Comme auparavant, le connecteur/émetteur-récepteur 105 peut être connecté à une diversité de réseaux ou dispositifs avec une liaison de données câblée ou sans fil. Comme auparavant, une image lOOa peut être une 25 image plus ancienne, tandis que l'autre image 1oOb est une image plus récente du progiciel, mise à jour 1Ob. Une seule des deux images du progiciel lOQa, boOb est typiquement chargée et exécutée en même temps par le code d'amorçage 102a. Toutefois, les deux images 30 résidant dans le dispositif hôte 108 en même temps, la commutation entre les deux, comme nécessaire, est fortement simplifiée. Le module de code d'amorçage 102a détermine laquelle des deux images du progiciel lOOa, 1OOb doit 35 être utilisée, par exemple, chargée dans la RAM 104 et exécutée par le processeur 107. Initialement, le module de code d'amorçage 102a peut chercher à déterminer laquelle des deux images du progiciel 100a, 100b est la plus récente. Comme indiqué ci-dessus, ceci peut être basé sur le numéro de version, la date ou l'ordre de s téléchargement, etc. L'hypothèse est que la version la plus récente du logiciel doit être utilisée. Toutefois, avant de charger la version la plus récente du progiciel, le code d'amorçage 102a lit également les indicateurs de progiciel 130a, 130b pour 10 les deux images du progiciel 100a, 100b. Les indicateurs a, 130b indiquent si une version du progiciel autre que la version la plus récente doit être chargée. Chaque indicateur 130a, 130b est initialement mis à une valeur hexadécimale de OxFFFF. En nombres 15 binaires, cette valeur est représentée par 16 "1" consécutifs, c'est-à-dire, 1111111111111111. La mémoire flash a la propriété de permettre de faire passer un bit de 1 à 0, mais pas de 0 à 1. Lorsqu'un "0" est écrit à un emplacement dans la mémoire 20 flash, la totalité de ce bloc de mémoire doit être effacée pour remplacer le "0" par un "1". tant donnée cette caractéristique de la mémoire flash, les 1 des indicateurs 130a, 130b, peuvent être remplacés par des 0 sans effacer les données dans la mémoire environnante, 25 c'est-à-dire dans le bloc mémoire qui contient l'indicateur 130a, 130b. Lorsqu'une nouvelle version du progiciel 100b est téléchargée, l'un des bits de l'indicateur 130a associé à l'ancienne version 100a peut être remplacé par 30 un 0. Par exemple, lorsque la nouvelle version du progiciel 100b est téléchargée, l'ancienne version 100a s'exécute alors sur le dispositif hôte 108a. L'ancienne version 100Oa comporte, de préférence, dans son code, un sous-programme qui note la réception d'une nouvelle 35 image du progiciel 100b. Lors de la réception de la nouvelle image 100b, l'ancienne image 100a qui s'exécute alors remplace l'un des bits de l'indicateur de progiciel 130a associé à l'ancienne image lOOa à "1" par un 'oi'. Lorsque le dispositif hôte 108a est amorcé par 5 la suite, le code d'amorçage 102a peut, comme indiqué ci-dessus, identifier la version la plus récente du progiciel. Ceci peut être réalisé en examinant les indicateurs de progiciel 130a, 130b. Si l'un des indicateurs contient un "0" à un emplacement particulier 10 ou si l'un contient un 11011 et que l'autre est constitué entièrement de 1, le code d'amorçage reconnaît que le progiciel 1OOa associé à l'indicateur 130a contenant le "10" est, par convention, la version plus ancienne du progiciel. En conséquence, l'autre image du progiciel 15 130b est chargée par le code d'amorçage 102a. Les autres bits des indicateurs 130a, 130b peuvent être utilisés pour commuter entre les versions du progiciel comme nécessaire. Par exemple, une interface d'utilisateur 131 peut être incluse dans le 20 dispositif hôte 108a. L'interface utilisateur 131 est reliée au bus de données 103 et peut ainsi fournir des données aux autres constituants du dispositif hôte 108a. Les instructions entrées dans l'interface utilisateur 131 sont reçues par le progiciel s'exécutant alors. 25 Toutes les versions du progiciel comportent, de préférence, un codage permettant la réception et la mise en oeuvre d'une commande d'utilisateur, entrée avec l'interface utilisateur 131, pour remplacer l'un des bits d'un indicateur de progiciel 130a, 130b, à "1" par 30 un "0". Un scénario pour basculer entre les images du progiciel peut alors s'exécuter comme suit. L'utilisateur souhaite commuter d'une image du progiciel en cours d'exécution bOOb vers une autre image du 35 progiciel bOa. L'utilisateur entre une commande appropriée par l'intermédiaire de l'interface utilisateur 131. Le progiciel en cours d'exécution lOOb remplace alors un bit à "1" dans un ou dans les deux indicateurs 130a, 130b par un "O". Le changement peut être mis en oeuvre dans l'un ou l'autre des deux indicateurs 130a, 130b. Le dispositif 108a est alors réamorcé. Le module de code d'amorçage 102a est chargé et exécuté. Le code d'amorçage 102a peut déterminer la version la plus récente du progiciel, mais de préférence, lit également 10 les indicateurs 130a, 130b en fonction du motif de O dans les indicateurs 130a, 130b, le code d'amorçage 102a charge l'une des images du progiciel lOOa, 1Ob, pas obligatoirement la plus récente. En modifiant le motif des 1 et des O dans les indicateurs 130a, 130b, 15 l'utilisateur peut commuter entre les deux images du progiciel. L'ensemble des règles exactes pour déterminer quelle image de logiciel doit être chargée en se basant sur les indicateurs fait l'objet de nombreuses 20 variantes. Par exemple, la règle peut consister à charger l'image du logiciel associée à l'indicateur ayant le plus grand nombre de O ou le plus petit nombre de 0. Lorsque tous les bits des indicateurs 130a, 130b ont été remplacés par des 0, l'aptitude à basculer entre 25 les images du progiciel peut être perdue, sauf si les indicateurs et les blocs mémoire correspondants sont effacés et réinitialisés. Toutefois, si un bloc mémoire assez grand est réservé pour l'indicateur, on doit être capable de terminer l'ensemble des tests avant que tous 30 les bits de l'indicateur ne soient effacés. Comme avec le mode de réalisation illustré sur la figure 1, un utilisateur ou un technicien actionnant i l'interface utilisateur 131 peut facilement commuter entre les images du progiciel bOa, bOOb sur le dispositif hôte 108a. Comme le comprendront les hommes i de l'art, cette approche peut également être étendue à X l'inclusion de trois images ou plus du progiciel dans la mémoire flash, chacune comportant un indicateur de progiciel qui indique, après avoir été vérifié et soumis à un ensemble derègles, quelle image du progiciel doit 5 être chargée et exécutée. Comme le comprendront les hommes de l'art, les diverses étapes du procédé illustré sur la figure 3 et des procédés similaires selon les principes de la présente invention, peuvent être exécutés dans un ordre différent de celui indiqué sur la 10 figure 3. La figure 4 est un organigramme illustrant un procédé de commutation entre plusieurs images du progiciel selon les principes de la présente invention. Le procédé illustré sur la figure 4 peut être mis en 15 oeuvre, par exemple, dans le dispositif de la figure 3. Comme représenté sur la figure 4, le procédé commence lorsque le dispositif hôte est mis sous tension ou amorcé (étape 120). ce moment, le module de code d'amorçage est chargé et exécuté (étape 120). Le code d'amorçage vérifie la mémoire non volatile pour déterminer le nombre d'images disponibles du progiciel et laquelle est la plus récente (étape 121). Le code d'amorçage vérifie également l'indicateur du progiciel associé à chaque image du progiciel (étape 25 132). Comme décrit ci-dessus, les indicateurs peuvent indiquer que l'image du progiciel la plus récente ou une autre doit être exécutée en fonction d'une diversité d'ensemble de règles possibles (décision 133). Si les indicateurs indiquent que l'image la 30 plus récente du progiciel doit être exécutée, l'image la plus récente du progiciel est chargée dans la RAM et exécutée (étape 124). titre de variante, les indicateurs peuvent indiquer que l'ancienne image ou une autre image du progiciel doit être chargée et exécutée, 35 auquel cas l'ancienne image ou l'autre image est chargée et exécutée (étape 125). Comme le comprendront les hommes de l'art, les diverses étapes du procédé illustré sur la figure 4 et des procédés similaires selon les principes de la présente invention, peuvent être exécutés dans un ordre différent de celui indiqué sur la figure 4. TRADUCTION DES FIGURES FIGURE 1 Processeur (107) Commutateur (106) Connecteur/émetteur-récepteur (105) RAM (104) Module de mémoire flash (101) 10 Image du progiciel (0l0a) Module d'amorçage (102) Image du progiciel (100Ob) Dispositif hôte (108) FIGURE 2 Début la mise sous tension, chargement et exécution du module d'amorçage (120) Vérification de l'image la plus récente du progiciel dans la mémoire non volatile (121) Vérification de la position du commutateur de progiciel (122) Le commutateur du progiciel est-il dans la position par 25 défaut ? (123) OUI NON Chargement de l'image la plus récente du progiciel (124) Chargement d'une autre image du progiciel (125) 30 Fin FIGURE 3 Processeur (107) Connecteur/émetteur-récepteur (105) RAM (104) Interface utilisateur (131) Module de mémoire flash (101) Indicateur de progiciel (130a) Image du progiciel (100a) Module d'amorçage (102a) Image du progiciel (10Ob) Indicateur de progiciel (130b) Dispositif hôte (108a) FIGURE 4 Début la mise sous tension, chargement et exécution du module d'amorçage (120) Vérification de l'image la plus récente du progiciel dans la mémoire non volatile (121) Vérification des indicateurs (132) Les indicateurs indique-t-il l'exécution du progiciel le plus récent ? (123) OUI NON Chargement de l'image la plus récente du progiciel (124) Chargement d'une autre image du progiciel (125) Fin REVENDICATIONS 1. Procédé de commutation entre deux images ou plus d'un progiciel sur un dispositif hôte, ledit procédé comprenant: la mémorisation de deux images du progiciel (100a, 100b) ou plus dans une mémoire non volatile (101) dudit dispositif hôte (108,108a); et le chargement de l'une desdites images (100Oa, 10 100b) au démarrage en réponse à un indicateur pouvant être contrôlé par l'utilisateur (106, 130a, 130b). 2. Procédé selon la revendication 1, caractérisé en ce que ladite exécution de l'une desdites images (100a, 15 100b) au démarrage comprend, en outre, le contrôle de la position d'un commutateur (106) et l'exécution d'une image particulière du progiciel en fonction de la position dudit commutateur (106). 3. Procédé selon la revendication 2, comprenant en outre, l'actionnement dudit dispositif hôte (108) avec une image différente du progiciel (100a, 100b) en modifiant la position dudit commutateur (106) et en redémarrant ledit dispositif hôte (108). 25 4. Procédé selon la revendication 1, caractérisé en ce que ladite exécution de l'une desdites images (100a, 100b) au démarrage comprend, en outre, la lecture d'un indicateur numérique (130a, 130b) associé à chaque image 30 desdites images du progiciel (100a, 100b) et l'exécution d'une image particulière du progiciel (100a, 100b) conformément auxdits indicateurs numériques (130a, b). 5. Procédé selon la revendication 4, comprenant en outre l'entrée d'une commande par l'intermédiaire d'une interface utilisateur (131) pour effectuer une modification d'au moins l'un desdits indicateurs (130a, b). 6. Procédé selon la revendication 1, comprenant en outre l'exécution d'un module d'amorçage (102, 102a) enregistré dans ladite mémoire non volatile (101), caractérisé en ce que la sélection d'une image du progiciel (100a, 100b) pour exécution est effectuée par 10 ledit module d'amorçage (102, 102a). 7. Dispositif hôte qui exécute un progiciel pendant le fonctionnement, ledit dispositif hôte comprenant: un module de mémoire non volatile (101) qui 15 contient un module de code d'amorçage (102) et est configuré pour contenir deux images ou plus d'un progiciel (100a, 100b); un processeur (107) pour exécuter ledit module de code d'amorçage (102) et le progiciel (100a, 100b), 20 ledit processeur (107) étant en communication avec ladite mémoire non volatile (101); et un commutateur (106) en communication avec ledit processeur (107); caractérisé en ce que ledit module de code 25 d'amorçage (102) est configuré pour faire exécuter par ledit processeur (107) une image particulière du progiciel (100Oa, 100b), en réponse à une position dudit commutateur (106). 8. Dispositif hôte selon la revendication 7, caractérisé en ce que ledit module de mémoire non volatile (101) comprend deux dispositifs mémoire ou plus. 9. Dispositif hôte (108a) qui exécute un progiciel 35 pendant le fonctionnement, ledit dispositif hôte (108a) comprenant: un module de mémoire non volatile (101) qui contient un module de code d'amorçage (102a) et au moins une image du progiciel (10Oa, 100Ob); un processeur (107) pour exécuter le progiciel (100a, 100Ob) qui communique avec ledit module de mémoire non volatile (101); et un indicateur numérique (130a, 130b) associé à chaque image de ladite au moins une image du progiciel (100a, 10Ob) dans le module de mémoire non volatile (101); caractérisé en ce que ledit module de code d'amorçage (102a) est configuré pour exécuter une image particulière du progiciel (10Oa, 100Ob), en réponse auxdits indicateurs numériques (130a, 130b). 10. Dispositif hôte selon la revendication 9, caractérisé en ce que ledit module de mémoire non volatile (101) comprend deux dispositifs mémoires ou plus.