Brevet FR2793327A1 — publié le 20001110

/t 2793327 La présente invention est relative au domaine de la maintenance logicielle et concerne plus particulièrement la récupération d'informations de fonctionnement ou d'erreur de modules logiciels d'un logiciel embarqué dans un appareil numérique, plus particulièrement un décodeur numérique, un récepteur de télévision, un lecteur/enregistreur de disques. Les appareils numériques comprennent de plus en plus une plate- forme comportant des sous-ensembles (ou cartes) à base de microprocesseurs gérés par un système d'exploitation et permettent ainsi la mise en oeuvre de logiciel embarqué dont la complexité va en croissant. Lors de la phase de développement du logiciel embarqué dans l'appareil numérique encore physiquement ouvert, les développeurs disposent de moyens techniques pour la mise au point et le débogage des cartes, appelés couramment environnement de développement (réseau éthernet de chargement, débogueur intégré permettant de simuler pas à pas le fonctionnement du logiciel). Une fois les tests de mise au point et de débogage effectués, la plateforme matérielle est fabriquée en usine et après intégration du logiciel, l'appareil est fermé. Les appareils numériques existants comportent des ports externes de communication (série, parallèle, modem). La surveillance du comportement du logiciel embarqué peut s'effectuer par la lecture d'un flux d'informations écrit sur l'un de ces ports et testant le fonctionnement d'un ensemble de modules logiciels. Il faut comprendre ici par module logiciel un ensemble d'instructions et de code source dédié au fonctionnement d'un matériel. La lecture de ce flux d'informations se réalise en connectant par exemple un micro-ordinateur muni d'un moniteur sur ce dernier port, permettant ainsi la visualisation du comportement du logiciel. Cette écriture sur le port sélectionné est subordonnée jusqu'à présent à la version du logiciel. En effet, seules des directives de compilation durant l'élaboration du logiciel permettent de déterminer le ou les sous- groupes de modules logiciels dont on veut connaître le comportement. Cependant, si l'on désire obtenir une information dans le flux d'informations cité renseignant sur le fonctionnement d'un ou de plusieurs modules logiciel donnés, le logiciel complet doit être rebâti pour inclure la nouvelle information et ensuite rechargé dans l'appareil. Ce rechargement du logiciel se fait par exemple par l'écriture, par l'utilisateur, des tests des modules logiciels voulus dans le code source. Ces mises à jour régulières sont fastidieuses, coûteuses et longues (durée d'écriture des tests) et imposent à l'utilisateur de procéder à une manipulation particulière pour introduire la nouvelle version du logiciel. En outre, la nouvelle information nouvellement introduite peut être intrusive et peut changer le comportement du logiciel. L'invention a pour but de s'affranchir des inconvénients précités en proposant un procédé de récupération d'informations de fonctionnement provenant de modules logiciels d'un logiciel embarqué dans un appareil numérique, qui puisse être exécuté en cours de fonctionnement de l'appareil lorsque l'utilisateur veut se renseigner sur le fonctionnement d'au moins un module logiciel, et qui n'impose pas le rechargement du logiciel complet. L'invention a donc pour objet un procédé de récupération d'informations de fonctionnement ou d'erreur de modules logiciels d'un logiciel embarqué dans un appareil numérique, chaque information étant déduite de l'exécution d'une fonction de test du module logiciel qui lui est associé, caractérisé en ce qu'une pluralité d'éléments binaires est regroupée dans une bibliothèque d'éléments conservée dans une mémoire non volatile de l'appareil, chaque élément étant propre à un module logiciel, et en ce que, selon l'une des valeurs de l'élément binaire, la fonction de test associée au module logiciel est exécutée pour fournir l'information de fonctionnement ou d'erreur. De cette sorte, l'utilisateur n'a plus qu'à valider à la valeur active, par exemple 1, les éléments binaires dans la bibliothèque correspondant aux modules logiciels dont il veut connaître le fonctionnement. Cette validation permet la possibilité d'exécution des fonctions de test associés aux modules logiciels désirés. Ainsi, le procédé selon l'invention évite les modifications du code source du logiciel (compilation, édition de liens) par l'utilisateur et le rechargement du logiciel dans l'appareil numérique. L'invention permet d'obtenir un procédé dynamique car pouvant être exécutée en cours de fonctionnement, et sélectif car pouvant récupérer l'information de fonctionnement voulue par l'utilisateur. Selon un mode de réalisation, l'accession par un utilisateur à ladite bibliothèque pour sélectionner les éléments binaires dont les fonctions de test doivent être activées est réalisée en reliant ledit appareil numérique à un micro-ordinateur via des moyens de transfert de données reliés à un port d'entrée/sortie de l'appareil du type série, parallèle ou port 1284, et en visualisant ladite bibliothèque sur des moyens d'affichage. Selon un mode de réalisation, ladite bibliothèque est visualisable via un menu caché interne à l'appareil. L'invention a également pour objet un appareil numérique comprenant un logiciel embarqué comportant des modules logiciels, chacun d'eux ayant une fonction de test propre dont l'exécution permet la récupération d'informations de fonctionnement ou d'erreur dudit module logiciel, caractérisé en ce qu'une pluralité d'éléments binaires est regroupée dans une bibliothèque d'éléments conservée dans une mémoire non volatile de l'appareil, chaque élément étant propre à un module logiciel, et en ce que, selon l'une des valeurs de l'élément binaire, la fonction de test associée au module logiciel est exécutée pour fournir une information de fonctionnement ou d'erreur. Ainsi, l'appareil selon l'invention est remarquable par l'évolutivité de la mémoire non volatile qu'il comporte. Cette mémoire dynamique et sélective, comme précédemment expliquée, permet de moduler les renseignements que l'utilisateur désire obtenir sur les modules logiciels du logiciel embarque. Selon un mode de réalisation, ladite bibliothèque comporte en outre une information d'indication du port de sortie de l'appareil numérique sur lequel est disponible la bibliothèque. Selon un mode de réalisation, le nombre de couches logicielles fonctionnelles composant le logiciel est égal au nombre de bibliothèques, chacune des bibliothèques étant paramétrée à une adresse propre dans la mémoire non volatile. Selon un mode de réalisation, l'appareil dispose d'une fonction de réinitialisation d'au moins une partie des éléments de la bibliothèque lors d'un évènement spécifique, du type de l'extinction de l'appareil. Ainsi, cette caractéristique permet de remettre l'appareil dans un état standard à chaque coupure de courant par exemple. Selon un mode de réalisation, la mémoire non volatile est du type EEPROM ou FLASH. Selon un mode de réalisation, I'appareil appartient au groupe comprenant un décodeur numérique, un récepteur de télévision numérique, un lecteur et/ou enregistreur de disques numérique. D'autres caractéristiques et avantages de la présente invention ressortiront de la description de l'exemple de réalisation qui va suivre, pris à titre d'exemple non limitatif, en référence aux figures annexées dans lesquelles: - la figure 1 représente un environnement de développement mettant en jeu une station de travail et un décodeur, - la figure 2 représente une bibliothèque ou chaîne d'éléments binaires selon l'invention sous forme de bits. Pour simplifier la description, les mêmes références seront utilisées pour désigner les éléments remplissant des fonctions identiques. Sur la figure 1, une station de travail d'un utilisateur, sous forme d'un ordinateur 1 muni d'un moniteur 2 est reliée par une ligne série 10 à un décodeur numérique 3. En l'occurrence, la connexion de l'ordinateur 1 avec le décodeur 3 se réalise par le biais d'un protocole d'échange de données sur la ligne série. Le décodeur détecte la présence de l'ordinateur 1 et se configure en mode esclave. A ce moment, I'utilisateur peut paramétrer dans une mémoire non volatile de type EEPROM les modules logiciels dont il veut connaître le fonctionnement selon le mode de fonctionnement décrit dans la suite. La figure 2 représente une chaîne 4 de n bits pouvant prendre les valeurs 0 et de 1, L'utilisateur accède à cette chaîne se trouvant par exemple dans la mémoire EEPROM par le biais du lien série relié à l'ordinateur et d'un protocole de communication compris par les deux parties et connu en soi. Selon une variante, I'utilisateur y accède par un menu caché interne au décodeur. Le logiciel embarqué dans le décodeur est réalisé en couches logicielles; c'est pourquoi le découpage des informations à recevoir par l'utilisateur peut se faire par groupe logiciel, par exemple le groupe des logiciels pilotes ("driver" en langue anglaise), des logiciels d'interface utilisateur ("user interface" en langue anglaise) et autres logiciels dits" middleware" en langue anglaise. Il y aura donc autant de chaînes 4 que de groupes logiciels. Chaque chaîne 4 est paramétrée dans la mémoire EEPROM à une adresse spécifique et comporte les éléments suivants: - un champ de n bits. Le bit d'indice j correspond à la fonction de test j du groupe considéré. S'il est à 0, le test est inactif, ce qui veut dire que la fonction de test n'appellera aucune fonction dans le module logiciel associé lors de l'exécution du logiciel. Dans le cas contraire, si le bit est à 1, le test est actif, ce qui veut dire que la fonction de test (fonction usuellement appelée 'Trace" connue de l'homme du métier) appellera les fonctions du module (Ex: fonctions Connect, Disconnect du module modem) dont I'exécution rendra une information de fonctionnement ou d'erreur. Ces bits ont été entrés par l'utilisateur de manière à pouvoir sélectionner les fonctions de test désirées et ainsi obtenir les informations sur les modules logiciels. - un octet précisant le type de sortie sur laquelle seront disponibles les informations voulues par l'utilisateur et relatives au groupe logiciel concerné. On peut imaginer que les valeurs respectives de cet octet font correspondre une sortie en voie série, une sortie sur le port parallèle et aucune sortie. Ainsi, I'ensemble des tests activés du groupe enverront le résultat de leurs tests respectifs sur le port spécifié. Si aucune sortie n'a été demandée, il y aura inhibition du résultat des tests. Par exemple, le groupe "logiciels pilotes" est défini comme possédant cinq modules logiciels à surveiller qui sont les suivants: le modem, le lecteur de la carte à puce, le retour câble, la vidéo et l'audio. Il est choisi d'activer uniquement la fonction test du modem en positionnant le bit d'indice 1 de la chaîne à la valeur 1, de désactiver les autres fonctions test des autres modules logiciels en attribuant aux autres bits de la chaîne la valeur 0, et d'acheminer les informations résultantes des tests activés sur le module modem vers le port série en positionnant le premier octet a la valeur 01. Ces informations pourront être alors acquises par l'ordinateur 1 via la ligne série. Ces informations seront délivrées sur l'écran de l'ordinateur soit sous la forme d'une chaîne de caractères du type: "modem connecté", "erreur: perte porteuse", "problème de ligne",... On remarquera qu'une même fonction test, telle que définie dans la présente demande, pourra fournir plusieurs résultats. Selon une variante, les résultats des tests pourront être affichés sous un autre format interprétable par l'utilisateur. Par exemple, deux octets affichés sur l'écran comme résultat d'un test fourniront respectivement le type de requête et son résultat. Ainsi, selon cet exemple de codification des résultats, l'affichage de "101 00" pourra être interprété comme un succès dans la connexion du modem (01: connexion modem; 00: succès). Cette variante permet de réduire la quantité d'informations échangées. Une fois que les fonctions test et le type de sortie désirés sont entrés dans la chaîne 4, l'utilisateur peut voir s'afficher d'autres résultats provenant de l'exécution d'autres tests. En effet, outre les fonctions de test activées qui sont constamment générées lors de l'exécution du logiciel affichant des résultats correspondants, la fonction de diagnostic du système, connue en soi, qui ne s'effectue qu'une seule fois après la phase de programmation du logiciel, peut également émettre un résultat sur l'écran. De même, des fonctions de test peuvent être régulièrement lancées pour fournir un diagnostic textuel par exemple périodiquement. L'invention n'est bien sûr pas limitée aux modes de réalisation décrits dans la présente demande. Par exemple, à la place d'un décodeur numérique, on aurait pu imaginer tout autre appareil numérique comportant un logiciel embarqué comprenant des modules logiciels, tel que notamment un récepteur de télévision numérique, un lecteur et/ou enregistreur de disques numérique. De même, la mémoire non volatile peut être également une mémoire FLASH. REVENDICATIONS 1. Procédé de récupération d'informations de fonctionnement ou d'erreur de modules logiciels d'un logiciel embarqué dans un appareil s numérique, chaque information étant déduite de l'exécution d'une fonction de test du module logiciel qui lui est associé, caractérisé en ce qu'une pluralité d'éléments binaires est regroupée dans une bibliothèque d'éléments conservée dans une mémoire non volatile de l'appareil, chaque élément étant propre à un module logiciel, et en ce que, selon l'une des valeurs de o0 l'élément binaire, la fonction de test associée au module logiciel est exécutée pour fournir l'informnation de fonctionnement ou d'erreur. 2. Procédé selon la revendication 1, caractérisé en ce que l'accession par un utilisateur à ladite bibliothèque pour sélectionner les éléments binaires-dont les fonctions de test doivent être activées est réalisée en reliant ledit appareil numérique à un micro-ordinateur via des moyens de transfert de donrnées reliés à un port d'entrée/sortie de l'appareil du type série, parallèle ou port 1284, et en visualisant ladite bibliothèque sur des moyens d'affichage. 3. Procédé selon la revendication 1, caractérisé en ce que ladite bibliothèque est visualisée via un menu caché interne à l'appareil. 4. Appareil numérique comprenant un logiciel embarqué comportant des modules logiciels, chacun d'eux ayant une fonction de test propre dont l'exécution permet la récupération d'informations de fonctionnement pU d'erreur dudit module logiciel, caractérisé en ce qu'une pluralité d'éléments binaires est regroupée dans une bibliothèque d'éléments conservée dans une mémoire non volatile de l'appareil, chaque élément étant propre à un module logiciel, et en ce que, selon l'une des valeurs de l'élément binaire, la fonction de test associée au module logiciel est exécutée pour fournir une information de fonctionnement ou d'erreur. 5. Appareil selon la revendication 4, caractérisé en ce que ladite bibliothèque comporte en outre une information d'indication du port de sortie de l'appareil numérique sur lequel est disponible la bibliothèque. 6. Appareil selon l'une des revendications 4 ou 5, caractérisé en ce que le nombre de couches logicielles fonctionnelles composant le logiciel est égal au nombre de bibliothèques, chacune des bibliothèques étant paramétrée à unî adresse propre dans la mémoire non volatile. 7. Appareil selon l'une des revendications 4 à 6, caractérisé en ce que l'appareil dispose d'une fonction de réinitialisation d'au moins une partie des éléments de la bibliothèque lors d'un événement spécifique, du type de l'extinction de l'appareil. 8. Appareil selon l'une des revendications 4 à 7, caractérisé en ce que la mémoire non volatile est du type EEPROM ou FLASH. 9. Appareil selon l'une des revendications 4 à 8, caractérisé en ce que l'appareil appartient au groupe comprenant un décodeur numérique, un récepteur de télévision numérique, un lecteur et/ou enregistreur de disques numérique.