Brevet FR2772949A1 — publié le 19990625

PARTAGE DE L'ADRESSAGE INDIRECT DES REGISTRES D'UN PÉRIPHÉRIQUE DÉDIÉ A L'ÉMULATION. La présente invention a pour objet un microcontrôleur muni d'une batterie de registres cachés. Elle présente un moyen d'accès en écriture et en lecture à cette batterie de registres supplémentaires cachés. C'est essentiellement dans le cadre de l'émulation que cette batterie de registres supplémentaires est utilisée, afin de surveiller le fonctionnement du microcontrôleur. Cette surveillance est rendue nécessaire lors des étapes de mise au point du microcontrôleur. Elle pourrait néanmoins concerner toute phase classique d'utilisation du microcontrôleur. Un microcontrôleur est un circuit comportant essentiellement sur un même circuit intégré, d'une part un microprocesseur également appelé unité centrale de traitement, et d'autre part une mémoire de programmes. Cette mémoire de programmes est spécifique à chaque microprocesseur. Elle contient un jeu d'instructions qui est adapté à un programme déterminé, à une application que le microcontrôleur doit exécuter. Ces jeux d'instructions peuvent être plus ou moins performants. Par conséquent les programmes sont plus ou moins importants selon l'application à laquelle ils sont destinés. De plus ces applications sont nombreuses et variées. On les trouve dans des micro-ordinateurs de type compatible, par exemple pour le contrôle de disques durs. On peut également les rencontrer dans des applications liées à la commande d'un organe quelconque, par exemple un feu de clignotement dans le domaine de l'automobile. Lors de la phase de réglage du programme d'utilisation, le microcontrôleur est en relation avec un circuit hôte. Cette relation entre dans le cadre de la surveillance du fonctionnement du microcontrôleur. Dans ce contexte, il faut pouvoir lire les états électriques du microcontrôleur à certaines étapes et notamment celles où un défaut de fonctionnement est constaté. I1 faut également pouvoir forcer le fonctionnement du microcontrôleur et dans ce cas le circuit hôte va écrire des états dans certains registres du microcontrôleur. Ces opérations de lecture et d'écriture entre les registres du microcontrôleur et le circuit hôte se font par l'intermédiaire d'une interface. D'une façon plus générale, cette interface sert à échanger des informations avec le monde extérieur, ces informations étant essentiellement les données à recevoir et des ordres à renvoyer correspondant à l'utilisation future du microcontrôleur. Dans ce but, l'interface comporte un bus de commande et le plus généralement deux registres d'échange de données et d'adresses. En effet, le nombre de registres d'échange est généralement peu élevé car, pour des raisons de coût on admet de réduire la structure d'échange avec le monde extérieur à son strict minimum. Ceci a pour conséquence une utilisation du microcontrôleur plus fastidieuse, notamment lors de la phase de réglage du programme d'utilisation. Les endroits de la mémoire du microcontrôleur où il faut écrire ou lire sont variés. Cette appellation de "mémoire" du microcontrôleur peut désigner la mémoire proprement dite mais également des registres de fonctionnement du microcontrôleur. Cette mémoire peut ainsi être une mémoire programme, là où sont stockées les instructions à exécuter dans le microprocesseur. Elle peut également être une mémoire de données où sont stockées des données mesurées des paramètres de commande du microcontrôleur. Enfin, cette mémoire peut représenter un lot de registres de paramétrisation ou de fonctionnement du microcontrôleur, notamment un lot de registres de paramétrisation de ses périphériques. Ces registres sont appelés des registres SFR (ce qui, dans la littérature anglaise, signifie Special Function Register). Ce sont des registres de contrôle de périphériques qui sont indispensables à leur paramétrisation. L'interface elle-même, du fait de différents protocoles qu'elle est susceptible d'accepter, doit être paramétrée par des états mémorisés dans ces registres. D'autres périphériques, comme des compteurs internes ou des registres de fréquence d'horloge, sont contrôlés par de tels registres. Dans le cadre de l'émulation, un certain nombre de registres permettent de programmer les différentes parties d'un périphérique dédié à l'émulation, dit "On Chip Emulator" dans la littérature anglaise. Ce périphérique sera désigné par l'abréviation OCE. Afin de contrôler le fonctionnement du microcontrôleur, un circuit hôte externe au microcontrôleur doit pouvoir accéder à ces registres, permettant de programmer les différentes parties de l'OCE. L'unité centrale du microcontrôleur doit elle aussi pouvoir avoir accès à ces registres. Il faut donc que ces registres aient une adresse dans l'espace mémoire du microprocesseur. L'espace d'adressage du microcontrôleur est représenté par la longueur d'un mot d'adresse transportable sur le bus d'adresse du microcontrôleur. Cet espace d'adressage est, d'après sa définition, limité. Cependant, dans le cadre de l'émulation, le nombre d'opérations à contrôler est de plus en plus important. Ces contrôles se font par l'intermédiaire de registres. Dans ces registres, on recopie certains états électriques du microcontrôleur, ou on compare leur contenu avec d'autres états électriques du microcontrôleur. Par conséquent le nombre de registres de surveillance nécessaires, notamment au cours de l'émulation, devient important. Certains de ces registres, et même nombre d'entre eux, ne peuvent par conséquent pas être adressés directement. En effet, on ne peut pas associer à chacun d'entre eux une adresse correspondant à un registre SFR, registre de contrôle de périphériques, qui permettrait d'accéder directement à ces registres supplémentaires. L'invention a pour objet de résoudre ce problème d'accès à ces registres cachés. On a prévu dans l'invention un adressage indirect. Un bus d'adresse, un bus de données et un bus de commande issus soit du circuit hôte soit de l'unité centrale du microcontrôleur, commute vers les registres de surveillance d'émulation supplémentaires ou vers la mémoire normale, selon le cas. La solution proposée consiste à partager le mécanisme d'adressage indirect développé pour les accès du circuit hôte avec l'unité centrale du microcontrôleur. Pour ce faire, l'invention propose d'allouer deux adresses de registre SFR aux registres accessibles par le circuit hôte. Ces deux registres SFR sont évidemment également accessibles par l'unité centrale de traitement. Une priorité entre ces deux accès possibles est envisagée. Un des deux registres SFR alloué contiendra l'adresse du registre supplémentaire auquel on veut accéder. L'autre registre SFR alloué contiendra la donnée lue dans un des registres supplémentaires si on est en mode lecture; si on est en mode écriture, il contiendra la donnée à écrire dans le registre supplémentaire dont l'adresse sera lue dans le premier registre SFR réservé. Cette batterie de registres supplémentaires essentiellement dédiés à l'émulation permet ainsi de libérer des registres SFR qui étaient auparavant occupés. Aussi certains registres SFR sont à présent vides. L'invention propose de recopier dans ces registres vides le contenu des registres supplémentaires dédiés à l'émulation qui sont le plus souvent sollicités par le circuit hôte ou par l'unité centrale du microcontrôleur. L'invention a donc pour objet un microcontrôleur comportant une unité centrale de traitement, des registres initiaux de contrôle de périphériques limités en nombre du fait de leurs moyens d'adressage, caractérisé en ce qu'il comporte des registres supplémentaires cachés, ces registres supplémentaires étant accessibles au moyen d'un premier et d'un deuxième registre de contrôle de périphérique, le premier registre d'accès étant destiné à un adressage indirect de l'adresse d'un quelconque registre supplémentaire caché, le second registre d'accès étant destiné à un adressage indirect d'une donnée à inscrire ou à lire dans ce registre supplémentaire caché. Ces registres supplémentaires sont destinés à être utilisés essentiellement dans le cadre de l'émulation. Dans une application préférée de l'invention, ils régissent un périphérique destiné à l'émulation L'invention sera mieux comprise à la lecture de la description qui suit et à l'examen des figures qui l'accompagnent. Celles-ci ne sont données qu'à titre indicatif et nullement limitatif de l'invention. La figure 1 montre une représentation schématique du mécanisme d'accès par l'unité centrale du microcontrôleur ou par un circuit hôte externe à ce microcontrôleur, aux registres supplémentaires cachés, cet accès étant réalisé par l'intermédiaire de deux registres SFR réservés accessibles par l'unité centrale du microprocesseur et par le circuit hôte externe. La figure 2 présente une amélioration de l'exploitation des registres de contrôle de périphériques. La figure 1 montre un microcontrôleur 1 comportant une unité centrale 2, une batterie de registres de contrôle de périphérique 3 qui seront par la suite désignés sous l'appellation de registres SFR, une seconde batterie de registres supplémentaires 4 qui seront désignés par l'appellation de registres cachés. Le microcontrôleur comporte également un module de contrôle et de décodage 5 et à l'extérieur de ce microcontrôleur on trouve un circuit hôte 6. Par souci de simplification et de clarté, l'interface entre le circuit hôte et le microcontrôleur qui a été mentionné précédemment n'a pas été représentée. Pour les mêmes raisons, l'ensemble des mémoires du microcontrôleur se résume sur la figure 1 aux seuls registres SFR. Le circuit hôte est relié au module de décodage par l'intermédiaire de trois bus qui sont un premier bus d'adresse 81, un premier bus de données 82 et un premier bus de commande 83. Le module de contrôle reçoit également trois autres bus issus de l'unité centrale de traitement du microcontrôleur qui sont un second bus d'adresse 71, un second bus de données 72 et un second bus de commande 73. On trouve à la sortie de ce module de décodage six bus: un troisième bus d'adresse 91, un troisième bus de données 92 et un troisième bus de commande 93 qui permettent d'accéder en lecture et en écriture aux premiers registres SFR. Les trois autres bus en sortie de module de décodage sont un quatrième bus d'adresse 101, un quatrième bus de données 102 et un quatrième bus de commande 103 qui permettent d'accéder en lecture et en écriture à la batterie supplémentaire de registres cachés 4. Le circuit de contrôle et de décodage 5 est un circuit à base de portes logiques élémentaires et de multiplexeurs. Il permet, comme on le verra par la suite, de commander le basculement vers la batterie de registres SFR 3 ou vers la batterie de registres supplémentaires 4. Il permet également la sélection des signaux à considérer, à savoir si ce sont ceux issus du circuit hôte 6 ou ceux issus de l'unité centrale de traitement 2 qui doivent être pris en compte. L'accès en mode lecture à un des registres supplémentaires cachés se déroule de la façon suivante: imaginons que l'on veuille lire le contenu d'un des registres cachés supplémentaires d'adresse an à partir du circuit hôte. Dans cet hypothèse le premier bus d'adresses 81 véhicule l'adresse d'un premier registre SFR réservé, typiquement le registre 241. Sur le premier bus de données 82 on véhicule la donnée an qui n'est autre que l'adresse du registre caché que l'on désire lire. Le premier bus de commande 83 véhicule un signal de commande qui permet d'écrire dans le registre SFR réservé 241 la donnée an. Ces informations sont véhiculées vers le module de contrôle et de décodage 5. Elles peuvent également être véhiculées par les seconds bus d'adresse de données et de commandes respectivement 71, 72 et 73, issus de l'unité centrale de traitement 2. Si l'acces en lecture a été effectué par l'unité centrale de traitement 2. Le module de contrôle et de décodage 5 reçoit par l'intermédiaire d'une liaison 11 issue du circuit hôte un signal de priorité 110. Si ce signal est actif, le module de contrôle et de décodage 5 donne priorité au signaux issus des bus reliés au circuit hôte 6. Si ce signal de priorité 110 est inactif, ce sont les signaux transportés par des bus issus de l'unité centrale de traitement 2 qui sont sélectionnés par le module de contrôle 5. En fonction du signal de priorité 110, on retrouve donc sur le troisième bus d'adresses 91 l'adresse véhiculée par le premier bus d'adresse 81 ou par le second bus d'adresse 71. De même, en fonction de ce signal de priorité 110, le troisième bus de données 92 véhicule la donnée amenée par le premier bus de données 82 ou par le second bus de données 72. Le troisième bus de commande 93 véhicule également, en fonction du signal de priorité 110, la commande portée par le premier bus de commande 83 ou par le second bus de commande 73. Une première étape de mode lecture est donc l'écriture dans un registre SFR réservé 241 d'une donnée an qui est l'adresse du registre caché supplémentaire à lire. On s'intéressera par la suite par souci de clarification des explications à l'unique cas où la lecture de la donnée contenue dans le registre caché supplémentaire an veut être effectuée par le circuit hôte 6. Sous ces conditions, dans une seconde étape du mode lecture, on lit la donnée an qui a été écrite dans le registre SFR 241. Un premier signal de basculement 120 porté par une liaison 12 reliant le circuit hôte 6 et le module de contrôle 5 permet de basculer les informations d'adresses, de données et de commandes reçues par le circuit de décodage et de contrôle 5 vers la batterie de registres supplémentaires cachés 4. Ainsi dans une troisième étape la donnée an qui avait été lue dans le registre d'adresse SFR 241 est à présent véhiculée par le premier bus d'adresse 81 puis par le quatrième bus d'adresse 101 après le passage par le module de contrôle 5. Le premier bus de commandes 83 dont l'instruction se retrouve sur le quatrième bus de commande 103 après le passage par le module de contrôle 5, véhicule une instruction de lecture. La donnée contenue dans le registre an est ainsi lue. Cette donnée dataan est acheminée vers le circuit hôte 6 au moyen des bus de données bi-directionnels 102 et 82. Dans une dernière étape après un nouveau basculement du module de contrôle, la donnée dataan est véhiculée par le bus de données 82 vers un second bus SFR réservé 242 dont l'adresse est véhiculée tout d'abord par le premier bus d'adresses 81 puis par le troisième bus d'adresse 91. Cette donnée est écrite dans le second registre réservé 242 selon l'instruction d'écriture véhiculée par le premier bus de commande 83 puis par le troisième bus de commande 93. Le contenu du registre caché d'adresse an est ainsi disponible dans le second registre SFR réservé 242. Il est ainsi directement disponible soit par le circuit hôte soit par l'unité centrale de traitement. Pour une lecture effectuée par l'unité centrale de traitement 2, la démarche est similaire: le rôle des premiers bus d'adresses, de données et de commandes respectivement 81, 82 et 83 est tenu par les seconds bus d'adresses, de données et de commandes respectivement 91, 92 et 93. Un second signal de basculement 130 porté par une liaison 13 reliant l'unité centrale de traitement et le module de contrôle 5 permet également de basculer les informations d'adresses, de données et de commandes reçues par le circuit de décodage et de contrôle 5 vers la batterie de registres supplémentaires cachés 4. Intéressons-nous à présent au mode écriture. Dans le cas où on veut écrire une donnée dans un registre supplémentaire caché d'adresses an à partir du circuit hôte, les différentes étapes de l'écriture sont les suivantes: dans un premier temps, la donnée an correspondant à l'adresse du registre supplémentaire caché dans lequel on veut écrire est véhiculée par le premier bus de données 82 puis après passage par le module de contrôle 5 par le troisième bus de données 92, à l'adresse 241 véhiculée par le premier bus d'adresses 81 puis par le troisième bus d'adresses 91. Le premier bus de commande 83 puis le troisième bus de commande 93 véhiculent une instruction d'écriture. De la même façon on écrit la donnée dataan à écrire dans le registre caché an dans le second registre SFR réservé 242. Après basculement du circuit de contrôle 5 selon l'instruction véhiculée par le premier signal de basculement 120, la donnée dataan véhiculée par le premier bus de données 82 puis par le quatrième bus de données 102 est inscrite à l'adresse an. Cette adresse est véhiculée par le premier bus d'adresses 81 puis, après passage par le circuit de contrôle 5, par le quatrième bus d'adresse 101, selon l'instruction d'écriture véhiculée par le premier bus de commande 83 puis par le quatrième bus de commande 103. La donnée dataan reste ainsi pour quelque temps disponible directement dans les premiers registres SFR. Une opération d'écriture à partir de l'unité centrale de traitement 2 suivrait exactement les mêmes étapes, les premiers bus d'adresses 81, de données 82 et de commandes 83 ainsi que le signal de basculement 120 étant respectivement remplacés par le second bus d'adresse 71, le second bus de données 72, le second bus de commandes 73 et le second signal de basculement 130. La batterie de registres SFR 3 se compose typiquement de 256 registres. Dans un exemple préféré les 240 premiers registres SFR sont effectivement utilisés pour la gestion des périphériques du microcontrôleur. On a vu le rôle fondamental des registres 241 et 242 pour l'accès aux registres supplémentaires cachés. Il reste donc quatorze registres SFR initialement vides. Sur la figure 2, on propose une amélioration permettant d'optimiser l'utilisation des premiers registres SFR. On y retrouve les éléments présentés lors de la description de la figure 1. Un circuit de décodage et de comptage 14 permet de compter le nombre de fois que chaque adresse de la batterie supplémentaire de registres cachés est sollicitée. Une liaison 15 issue de ce circuit de comptage 14 est connectée au module de contrôle 5. Celui-ci recopie le contenu des registres supplémentaires cachés les plus souvent sollicités dans les registres SFR qui sont initialement vides. REVENDICATIONS 1. Micro-contrôleur (1) comportant - une unité centrale de traitement (2), - des registres initiaux de contrôle de périphérique (3) limités en nombre du fait de leur moyen d'adressage, caractérisé en ce qu'il comporte des registres supplémentaires cachés (4), ces registres supplémentaires étant accessibles au moyen d'un premier et d'un deuxième registre de contrôle de périphérique (241, 242), le premier registre d'accès (241) étant destiné à un adressage indirect de l'adresse d'un quelconque registre supplémentaire caché, le second registre d'accès (242) étant destiné à un adressage indirect d'une donnée à inscrire ou à lire dans ce registre supplémentaire caché. 2. Microcontrôleur (1) selon la revendication 1, caractérisé en ce que les registres supplémentaires cachés (4) sont destinés à être utilisés dans le cadre de l'émulation. 3. Microcontrôleur (1) selon la revendication 1 ou la revendication 2, caractérisé en ce qu'il comporte un module de contrôle (5) permettant l'accès aux registres supplémentaires cachés (4) soit par un circuit hôte (6) extérieur au microcontrôleur soit par l'unité centrale de traitement (2) selon la nature d'un premier et d'un second signal de basculement (120, 130). 4. Microcontrôleur (1) selon la revendication 3, caractérisé en ce que le module de contrôle (5) reçoit un signal de priorité (110) issu du circuit hôte (6) donnant priorité d'accès sur les registres supplémentaires cachés (4) aux signaux issus du circuit hôte (6). 5. Microcontrôleur selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comporte un module de comptage-décodage pour recopier dans des registres initiaux de contrôle (14) de périphérique vides les données contenues dans des registres supplémentaires cachés (4) souvent sollicités.