Brevet FR2938674A1 — publié le 20100521

La présente invention concerne un procédé pour restituer le système d'exploitation d'un appareil dans une mémoire de travail, et appareil pour la mise en oeuvre de l'invention. De nos jours, de nombreux appareils permettent la réception et la reproduction d'oeuvres audiovisuelles. Ces appareils sont dotés d'une unité centrale exécutant un système d'exploitation. Le système d'exploitation est un programme permettant à l'appareil de fonctionner au moment de son allumage, il lance les différentes applications logicielles à la demande de l'utilisateur. Le système d'exploitation peut être stocké dans une mémoire non volatile et non réinscriptible, dans ce cas elle est protégée de toutes altérations accidentelles ou malveillantes. Mais, la mémoire ne peut être mise à jour car elle conserve toujours le même contenu. Avec la diminution du prix de la mémoire, il est devenu possible de mémoriser le système d'exploitation dans une mémoire RAM. Par exemple, un ordinateur personnel lit le système d'exploitation dans le disque dur, le duplique dans la mémoire RAM et lance son exécution. La mise à jour peut s'effectuer en remplaçant l'ancien contenu du disque dur par un nouveau. De sorte qu'à la prochaine mise sous tension, c'est ce nouveau contenu qui sera chargé et exécuté. Dans le cas de décodeurs audiovisuels, le système d'exploitation est généralement stocké dans une mémoire Flash. Le système d'exploitation et les données d'utilisation sont reçus via le réseau de diffusion, ou à travers une connexion bidirectionnelle. Ce téléchargement permet de mettre à jour le système. Pour optimiser de la bande passante et minimiser la taille de la mémoire Flash, le système d'exploitation est diffusé et écrit dans la mémoire flash sous une forme compressée. Ainsi, la taille de la mémoire Flash est d'au moins la moitié de celle de la mémoire RAM. L'inconvénient d'un tel mode de stockage est qu'au moment de la mise sous tension, le logiciel résident dans l'appareil doit lire le contenu de la mémoire Flash, décompresser ce contenu et l'écrire dans la mémoire RAM. Cette opération prend un moment assez long, de 40 secondes à une minute avec les décodeurs actuels. Au cours de ce temps, l'utilisateur ne peut disposer de son appareil. La présente invention permet de réduire dans certaines circonstances le temps de mise en route de l'appareil, afin que l'utilisateur puisse plus rapidement l'utiliser. Un des objets de la présente invention est un procédé pour restituer le système d'exploitation d'un appareil dans une mémoire de travail lors de la mise en marche dudit appareil ; caractérisé en ce que, lors de la mise en marche de l'appareil, le téléchargement du système d'exploitation d'une mémoire non-volatile vers la mémoire de travail est conditionné par la valeur d'un code mémorisé dans l'appareil, une commande extérieure reçue par l'appareil initialisant la valeur dudit code. De cette façon, il est possible d'activer ou d'inhiber de l'extérieur la fonction de téléchargement d'un système d'exploitation lors de la mise en marche d'un appareil. Ainsi, en choisissant d'exécuter ou non ce téléchargement, on peut limiter le temps pour rendre opérationnel l'appareil. Selon un premier perfectionnement, si la valeur du code mémorisé dans l'appareil ne déclenche pas le téléchargement du système d'exploitation de la mémoire non-volatile alors la mémoire de travail reste alimentée lors de l'extinction de l'appareil. De cette manière, le système d'exploitation dans la mémoire de travail est exécuté sans téléchargement lors de la mise en marche. Ainsi, à la mise en marche, l'appareil retrouve intégralement le contexte d'exécution qu'il possédait lors de l'extinction. Selon un autre perfectionnement, l'utilisateur introduit manuellement la commande extérieure qui positionne le code permettant de déclencher ou non le téléchargement. Ainsi l'utilisateur peut localement paramétrer son appareil. Selon une variante, la commande extérieure est transmise par un réseau connecté à l'appareil. Ainsi, le fabriquant de l'appareil, son distributeur ou tout autre serveur distant peut paramétrer l'appareil. Selon un autre perfectionnement, l'appareil comptabilise les cycles d'allumage et d'extinction, et quelque soit la valeur du code mémorisé, le contenu à écrire dans la mémoire de travail est téléchargé de la mémoire non-volatile lorsque le nombre de cycles atteint un seuil. Ainsi, au bout d'un certain nombre d'utilisation, une mise à jour du système d'exploitation est effectuée avec la version sauvegardée en mémoire non volatile. Selon un autre perfectionnement, le système d'exploitation est sauvegardé sous forme compressé dans la mémoire non volatile. Lors de la mise en marche de l'appareil et si la valeur du code mémorisé dans l'appareil déclenche le téléchargement du système d'exploitation de la mémoire non-volatile alors le système d'exploitation est d'abord décompressé puis est écrit dans la mémoire de travail. De cette façon, le système d'exploitation occupe moins de place dans la mémoire non volatile. Un autre objet de la présente invention est un appareil électronique doté d'une unité centrale capable d'exécuter un système d'exploitation téléchargé dans une mémoire de travail lors de la mise en marche de l'appareil ; caractérisé en ce qu'il comporte un moyen de téléchargement du système d'exploitation d'une mémoire non volatile vers la mémoire de travail, et un moyen de réception et de mémorisation d'un code extérieur, la valeur d'un code mémorisé dans l'appareil conditionnant l'exécution dudit moyen de téléchargement lors de chaque allumage de l'appareil. D'autres caractéristiques et avantages de la présente invention ressortiront de la description des exemples de réalisation qui vont suivre, pris à titre d'exemples non limitatifs, en référence aux figures annexées dans lesquelles : La figure 1 est un diagramme bloc d'un récepteur audiovisuel pour la mise en oeuvre de l'invention, La figure 2 montre les principales étapes du procédé lors de la mise en marche de l'appareil selon un exemple de réalisation, La figure 3 montre les principales étapes du procédé lors de l'extinction de l'appareil selon un exemple de réalisation, La figure 4 montre les principales étapes du procédé lors de la mise en marche de l'appareil selon une variante de réalisation. On décrira tout d'abord le fonctionnement d'un appareil électronique 1 disposant d'une unité centrale 3 et d'une mémoire de travail 12 contenant un programme exécutable. Selon un exemple préféré de réalisation, l'appareil 1 est un récepteur audiovisuel relié à un dispositif d'affichage 2. L'unité centrale 3 est reliée à une mémoire de travail 12, une interface 5 pour la communication avec un bus numérique à haut débit 6 et un moyen de réception 4 de signaux provenant d'un réseau de diffusion. La mémoire de travail 12 peut être de type SRAM, DRAM, SDRAM ou tout type, sa caractéristique réside dans le fait que mise hors tension, son contenu est perdu. Le réseau numérique 6 permet notamment de transmettre des données audio/vidéo en temps réel. Ce réseau est par exemple un réseau IEEE 1394 ou un bus USB permettant de communiquer avec un ordinateur. Le moyen de réception 4 comporte un syntoniseur (ou � tuner � en langue Anglaise) et un démodulateur pour recevoir des données analogiques et/ou numériques, par exemple des images ou des informations de service, d'un réseau de diffusion à travers une antenne de réception. Le récepteur 1 comprend en outre un récepteur de signaux infrarouges 7 pour recevoir les signaux d'une télécommande 8, une mémoire 9 pour le stockage des données téléchargées, et une logique de décodage audio/vidéo 10 pour la génération des signaux audiovisuels envoyés à l'écran de télévision 2. Selon un exemple préféré de réalisation, la mémoire 9 est un circuit Flash, dont la capacité à la date du dépôt de la présente demande est de 16 Moctets. Selon une variante, la mémoire 9 est un disque dur de grande capacité permettant de sauvegarder des programmes exécutables et des documents audiovisuels. Le récepteur 1 comprend également un circuit 11 d'affichage de données sur l'écran, appelé souvent circuit OSD, de l'Anglais "On Screen Display" (signifiant littéralement "affichage sur l'écran"). Le circuit OSD 11 est un générateur de texte et de graphisme qui, sous le contrôle d'un programme exécutable, affiche à l'écran des menus, des pictogrammes (par exemple, un numéro correspondant à la chaîne visualisée) et qui permet d'afficher les menus de configuration. Le bus numérique 6 et/ou le réseau de diffusion transmettent au récepteur 1 de données telles que des mises à jour logicielles, des commandes et des documents audiovisuels Afin de permettre l'évolution et la mise à jour du système d'exploitation du récepteur 1, il est avantageux de ne pas le sauvegarder dans une mémoire non modifiable (une mémoire ROM par exemple) mais plutôt dans une mémoire réinscriptible. Mais, les programmes enregistrés dans la mémoire 9 ne peuvent s'exécuter directement à cause du temps d'accès aux données stockées dans la mémoire 9, ceci est d'autant plus évident si la mémoire 9 est un disque dur. Un programme de lancement (appelé � Bootstrap �) inscrit dans une mémoire ROM 13 est lancé à la mise sous tension, il lit le contenu d'une zone déterminée du disque dur 9, écrit le contenu dans la mémoire de travail 12 et lance le programme à partir de cette mémoire. De cette façon, le système d'exploitation est téléchargé et implémenté dans la mémoire de travail 12, pour y être exécuté. Le système d'exploitation initialise alors l'ensemble des circuits du récepteur, puis les applications de haut niveau sont chargées et prennent la main. La lecture du système d'exploitation à partir d'une mémoire non volatile telle qu'une mémoire Flash ou un disque dur et son écriture en mémoire de travail peut durer un certain temps, surtout si la taille est importante et si le système d'exploitation est mémorisé sous une forme compressé. Il est donc avantageux de permettre à l'utilisateur de réduire ce temps. La présente invention offre notamment à l'utilisateur la possibilité de choisir entre un chargement traditionnel à partir d'une mémoire non-volatile, ou une exécution plus rapide consistant à lancer le programme à partir de la mémoire de travail 12. Après avoir décrit les différents éléments de l'invention, nous allons maintenant expliquer comment ceux-ci coopèrent, par un exemple de réalisation. Un schéma de principe illustrant un exemple de réalisation du procédé de téléchargement est donné à la figure 2. Dans un premier temps (étape 2.1), le récepteur est mis en marche. Le programme Bootstrap, implémenté dans la mémoire non volatile et non réinscriptible 13 lit, à l'étape 2.2 la valeur d'un drapeau en mémoire non volatile 9. Une valeur de ce drapeau spécifie que le système d'exploitation est directement exécutable dans la mémoire de travail 12. Si le test du drapeau (étape 2.3) montre que le système d'exploitation n'est pas en mémoire de travail, alors à l'étape 2.4, le programme lit le contenu de la mémoire non volatile, typiquement une mémoire Flash. Généralement, le contenu est mis sous forme compressé de façon à pouvoir au moins diviser par deux la taille du composant et ainsi baisser son coût. Dans ce cas, le contenu lu est décompressé avant d'être écrit dans la mémoire de travail 12 (étape 2.5). Si, à l'étape 2.3, le test montre que le système d'exploitation est déjà en mémoire de travail, alors ces dernières opérations ne sont pas effectuées. Dans les deux cas, le programme dans la mémoire de travail 12 est exécutée (étape 2.6). Plus tard, l'utilisateur peut activer un menu permettant d'accéder à des commandes de paramétrage de son appareil. Le menu affiche un message du type � autorisez-vous le maintien du système sous tension lors de l'arrêt de votre appareil, afin de diminuer le temps de réveil �. En fait, si l'utilisateur répond par l'affimative, seule la mémoire de travail est maintenue sous tension, de façon à consommer le moins d'énergie possible. A l'étape 2.7, l'utilisateur introduit une commande à l'aide de sa télécommande 8 qui a pour effet d'initialiser le code en mémoire non volatile à une certaine valeur (étape 2.8). Typiquement, ce code peut prendre deux valeurs � 0 � ou � 1 �. Si la valeur est � 1 �, alors à chaque mise en marche, l'appareil n'a pas besoin de recharger le système d'exploitation de la mémoire Flash, car celui-ci est déjà pleinement opérationnel en mémoire de travail 12. Si plus tard, l'utilisateur rappelle ce menu, le message affiché dépendra de la valeur du code mémorisé et proposera de le mettre à � 0 � pour qu'à chaque mise en marche, le système d'exploitation soit rechargé à partir de la mémoire non volatile. L'introduction d'une nouvelle commande validera ce choix. De même que pour sa mise en marche, le comportement de l'appareil 1 dépend de la valeur du code lors de son extinction. La figure 3 présente un ordinogramme des principales étapes concernées par la gestion du système d'exploitation lors de l'extinction de l'appareil. L'utilisateur décide d'éteindre son appareil (étape 3.1). A l'étape 3.2, le programme exécutable teste la valeur du code mémorisé. Si le code est à � 1 �, alors l'alimentation de la mémoire de travail est maintenue tout au long de l'arrêt de l'appareil (étape 3.3). Cette action est nécessaire de façon que lors de la prochaine mise en marche, la mémoire de travail ait conservé le système d'exploitation sans aucune altération. Si en revanche, le code lu à l'étape 3.2 est à � 0 �, il n'est pas nécessaire de maintenir l'alimentatiion de la mémoire de travail pendant l'arrêt de l'appareil. Selon un perfectionnement, lorsque le code est à � 1 �, un test d'intégrité est effectué sur le système d'exploitation en mémoire de travail de manière à s'assurer qu'il est toujours fonctionnel. Si le test s'avère négatif, alors un téléchargement du système d'exploitation à partir de la mémoire Flash est lancé. Eventuellement, un message est affiché momentanément afin d'informer l'utilisateur qu'il y a eu une défaillance dans le fonctionnement de la mémoire de travail. Au cours du fonctionnement de l'appareil 1, le système d'exploitation peut subir des fragmentations qui vont diminuer ses performances. Selon un autre perfectionnement, illustré par la figure 4, les cycles d'allumage et d'extinction de l'appareil sont comptabilisés et lorsque le nombre de cycles atteint une certaine valeur de seuil, le système d'exploitation est lu de la mémoire non-volatile 9 afin d'être de nouveau stocké dans la mémoire de travail 12. L'ordinogramme de la figure 2 est modifié pour faire apparaître, à l'étape 4.1, un test consistant à comparer la valeur d'un compteur de mise en marche avec une valeur de seuil. En effet, l'expérience montre qu'au bout de 10 cycles d'allumage et d'extinction, le système d'exploitation en mémoire de travail s'est éparpillé, ce qui allonge le temps de certains calculs. Dans ce cas, (étape 4.2) le compteur est mis à zéro et les étapes 2.4 et 2.5 de lecture de la mémoire Flash et d'écriture de son contenu en mémoire de travail, sont effectuées. Sinon, le compteur est incrémenté (étape 4.3) et le système d'exploitation est directement lancé de la mémoire de travail. De cette façon, on peut s'assurer qu'au bout d'un certain nombre d'allumages, le système d'exploitation tel que le constructeur l'a prévu en mémoire non volatile est bien implémenté dans l'appareil. Une variante de fonctionnement consiste à forcer le téléchargement de la mémoire Flash lors d'intervalle de temps régulier, tous les quinze jours par exemple. Il suffit alors de mémoriser la date du dernier téléchargement en mémoire non volatile, et de tester si l'intervalle temporel entre ce moment et celui présent donné par exemple, à l'aide d'une horloge interne, ne dépasse pas quinze jours. Il est écrit précédemment que l'utilisateur dispose d'une interface utilisateur pour changer la valeur du code en mémoire non volatile. Selon une variante, une commande pour initialiser la valeur du code est reçue via le réseau, en provenance d'un serveur de commande contrôlé par exemple, par le diffuseur de programmes, ou le distributeur des appareils. Le réseau peut être soit le réseau de diffusion, et dans ce cas la commande est reçu à travers le syntoniseur 4, soit le bus numérique 6 et dans ce cas, la commande est transmise au cours d'une communication bidirectionnelle avec un serveur. Lorsque la valeur du code est initialisée à distance, un message est affiché afin d'informer l'utilisateur de sa mise à jour et d'indiquer son état. Des personnes versées dans l'art pourront adapter la présente invention sous de nombreuses autres formes spécifiques sans l'éloigner du domaine d'application de l'invention comme revendiqué. En particulier, l'appareil électronique peut être tout appareil disposant d'une mémoire de travail dans lequel un programme exécutable est téléchargé. Par conséquent, les présents modes de réalisation doivent être considérés à titre d'illustration mais peuvent être modifiés dans le domaine défini par la portée des revendications jointes. Revendications1. Procédé pour restituer le système d'exploitation d'un appareil (1) dans une mémoire de travail lors de la mise en marche dudit appareil ; caractérisé en ce que, lors de la mise en marche de l'appareil (2.1), le téléchargement (2.4, 2.5) du système d'exploitation d'une mémoire non-volatile (9) vers la mémoire de travail (12) est conditionné par la valeur d'un code mémorisé dans l'appareil, une commande extérieure reçue par l'appareil (2.7, 2.8) initialisant la valeur dudit code. 2. Procédé pour restituer le système d'exploitation d'un appareil selon la revendication 1 ; caractérisé en ce que si la valeur du code mémorisé dans l'appareil ne déclenche pas le téléchargement du système d'exploitation de la mémoire non-volatile (9) alors la mémoire de travail (12) reste alimentée lors de l'extinction de l'appareil, le système d'exploitation dans la mémoire de travail étant exécuté sans téléchargement à la mise en marche de l'appareil. 3. Procédé pour restituer le système d'exploitation d'un appareil selon la revendication 1 ou 2; caractérisé en ce que la réception de la commande extérieure s'effectue par une action manuelle de l'utilisateur de l'appareil (1). 4. Procédé pour restituer le système d'exploitation d'un appareil selon la revendication 1 ou 2; caractérisé en ce que la commande extérieure est transmise par un réseau connecté à l'appareil. 5. Procédé pour restituer le système d'exploitation d'un appareil selon l'une quelconque des revendications précédentes; caractérisé en ce qu'il comporte une étape de comptabilisation des cycles d'allumage et d'extinction de l'appareil (1), quelque soit la valeur du code mémorisé, le contenu à écrire dans la mémoire de travail (12) est téléchargé de la mémoire non-volatile (9) lorsque le nombre de cycles atteint une valeur de seuil. 6. Procédé pour restituer le système d'exploitation d'un appareil selon l'une quelconque des revendications précédentes; caractérisé en ce que le système d'exploitation est sous forme compressé dans la mémoire non volatile (9) ; lors de la mise en marche de l'appareil et si la valeur du code mémorisé dans l'appareil déclenche le téléchargement du système d'exploitation de la mémoire non-volatile (9) alors le système d'exploitation est d'abord décompressé (2.5) puis est écrit dans la mémoire de travail (12). 7. Appareil électronique doté d'une unité centrale (3) capable d'exécuter un système d'exploitation téléchargé dans une mémoire de travail (12) lors de la mise en marche de l'appareil ; caractérisé en ce qu'il comporte un moyen de téléchargement (3, 13) du système d'exploitation d'une mémoire non volatile (9) vers la mémoire de travail (12), et un moyen de réception (3, 12, 4 ; 3, 12, 7, 8) et de mémorisation d'un code extérieur, la valeur d'un code mémorisé dans l'appareil conditionnant l'exécution dudit moyen de téléchargement (3, 13) lors de chaque allumage de l'appareil (1).20