Brevet FR2880963A1 — publié le 20060721

POINTS D'ARRÊT LOGICIELS UTILISÉS DANS DES CIRCUITS DE MÉMOIRE La présente invention concerne des microcontrôleurs et des circuits de mémoire et plus particulièrement l'utilisation de points d'arrêt logiciels dans des circuits de mémoire pour interrompre l'exécution d'un programme sur des microcontrôleurs. Les développeurs de microprocesseurs et autres microcontrôleurs font appel à un processus étendu pour tester les applications de microcontrôleurs qu'ils développent. Une partie importante de ce processus est le test de routine de microcontrôleurs via l'exécution d'instructions de programmes et l'utilisation d'un programme de débogage. Il est généralement nécessaire d'interrompre un programme en cours d'exécution pour de multiples raisons, lors du débogage ou autre. Par exemple, un développeur peut devoir arrêter le programme pour déterminer les valeurs que les variables ou les emplacements de mémoire ont reçues à un point de l'exécution du programme, à des fins de débogage. Ou bien un événement peut se produire nécessitant l'interruption de l'exécution d'un programme, puis sa reprise au même endroit. L'exécution d'opérations de débogage de code durant le fonctionnement du système est possible grâce à des agents de débogage (programmes) qui ouvrent accès au microprocesseur et à ses ports (tel le port JTAG (norme Joint Test Action Group)). Une façon d'occasionner l'arrêt de l'exécution d'un programme est d'utiliser des points d'arrêt. Les points d'arrêt logiciels sont exécutés en se basant sur des instructions traitées par un microprocesseur pendant l'exécution du programme. Un point d'arrêt logiciel dépend d'une instruction de point d'arrêt ou modèle de point d'arrêt qui est stocké dans la mémoire à laquelle le microprocesseur accède. Lorsque le microprocesseur lit et reconnaît un modèle de point d'arrêt dans la mémoire, le microprocesseur est forcé à l'état de débogage. Le modèle de point d'arrêt peut être stocké dans la mémoire à un emplacement de mémoire particulier, afin que, lorsque le programme provoque l'exécution du modèle à cet emplacement, le point d'arrêt se produise. Un grand nombre de points d'arrêt logiciels peuvent être mis en oeuvre à moindre coût ou avec peu de composants supplémentaires, car ils ne nécessitent qu'une logique supplémentaire limitée. Pour positionner un point d'arrêt logiciel à une adresse de mémoire particulière, l'agent de débogage (ou autre programme effectuant le point d'arrêt) avise le microprocesseur de remplacer l'instruction initiale à une adresse de point d'arrêt désignée dans la mémoire par le modèle de point d'arrêt. L'instruction initiale, remplacée, est stockée dans une autre mémoire. Pendant l'exécution du programme, lorsque le microprocesseur atteint l'adresse du point d'arrêt, le modèle de point d'arrêt est extrait et exécuté, ce qui force le microprocesseur à entrer dans un état de débogage. Dans cet état de débogage, le microprocesseur peut être avisé par l'agent de débogage de revenir en mode sans débogage. L'instruction initiale est rétablie à l'adresse mémoire de point d'arrêt et exécutée (dans certains modes de réalisation, le modèle de point d'arrêt peut ensuite remplacer de nouveau l'instruction initiale à l'adresse de point d'arrêt), et le microprocesseur poursuit l'exécution normale des instructions de programme restantes. Via une connexion vers le microprocesseur, par exemple un port JTAG, chaque agent de débogage fonctionne comme un moniteur de mémoire, afin que, chaque fois qu'un point d'arrêt logiciel est défini, l'instruction correspondante soit remplacée en mémoire par le modèle de point d'arrêt. Chaque fois qu'un point d'arrêt est annulé ou effacé, l'instruction de point d'arrêt est remplacée en mémoire par l'instruction initiale. La mise en place de points d'arrêt logiciels nécessite donc que toutes les mémoires du système soient accessibles en écriture. Les points d'arrêt logiciels ne sont pas souvent utilisés dans certains types de mémoires, notamment dans de nombreuses mémoires non volatiles, car la mise en place d'un point d'arrêt logiciel nécessite qu'un modèle de point d'arrêt soit écrit dans la mémoire, et la plupart des mémoires non volatiles ne peuvent être modifiées par un simple accès en écriture par microprocesseur. Une ROM standard ne convient pas car aucune donnée ne peut y être écrite en cours de fonctionnement. D'autres types de mémoires non volatiles, comme la mémoire flash, ne sont généralement pas utilisées avec des points d'arrêt logiciels car les mémoires non volatiles, généralement de grande capacité, couramment utilisées pour la mémorisation de code ne peuvent être modifiées aussi facilement que les mémoires vives statiques (SRAM). En outre, le nombre de cycles d'effacement autorisés pour les mémoires flash, pendant leur durée de vie, est relativement réduit et il est donc fortement déconseillé d'utiliser des points d'arrêt logiciels dans celles-ci. Par conséquent, déboguer des systèmes sur une puce peut être très difficile si ces systèmes incorporent des mémoires non volatiles, car la mise en place de points d'arrêt logiciels via un agent de débogage n'est pas possible ou n'est pas facilement réalisable. Certaines solutions ont été suggérées. Par exemple, l'activité du bus interne aux sorties du circuit peut être suivie de façon à déterminer le point auquel un programme n'effectuera pas une opération attendue, mais ceci nécessite que de nombreuses sorties de circuit soient disponibles; le nombre supplémentaire de broches pour une telle configuration augmenterait le coût du circuit. Un suivi réduit, se limitant aux accès effectués à des mémoires sur puce cibles, peut être effectué ; toutefois, le nombre de broches doit également être élevé dans ce cas. Ces solutions et d'autres suggérées sont coûteuses à mettre en oeuvre, particulièrement si elles sont utilisées uniquement pour des points d'arrêt et à des fins de débogage. Par conséquent, sont nécessaires un procédé et un système permettant de créer et d'exécuter des points d'arrêt logiciels dans les systèmes dotés de circuits de mémoire non accessibles en écriture par un simple accès en écriture par microprocesseur, et par lesquels une solution simple et peu coûteuse puisse être mise en oeuvre. La présente invention répond à ce besoin. L'invention selon la présente demande concerne la définition de points d'arrêt logiciels utilisés avec des circuits de mémoire. Selon un aspect de l'invention, un système permettant de positionner un point d'arrêt logiciel dans une mémoire comprend un microprocesseur, un circuit de mémoire accessible via un bus de données et un bus d'adresses couplés au microprocesseur, et une logique de traitement couplée au circuit de mémoire et au microprocesseur, cette logique de traitement étant utilisée pour positionner un point d'arrêt logiciel dans le circuit de mémoire en substituant à une valeur à lire dans le circuit de mémoire un modèle de point d'arrêt, ce modèle de point d'arrêt étant transmis au microprocesseur sur le bus de données au lieu de cette valeur. Dans un mode de réalisation, le système comprend un ou plusieurs circuits de mémoire supplémentaires couplés au. microprocesseur, la logique de traitement substituant à la valeur à lire le modèle de point d'arrêt dans l'un quelconque des circuits de mémoire. Dans un autre mode de réalisation, la logique de traitement transmet un signal de sélection à chaque circuit de mémoire couplé à la logique de traitement. Dans un mode de réalisation particulier, le système comprend un multiplexeur couplé à chaque sortie des circuits de mémoire, ce multiplexeur envoyant sur le bus de données des données provenant de l'un quelconque des circuits de mémoire au microprocesseur. Dans un autre mode de réalisation, le système comprend également un décodeur d'adresses système couplé au microprocesseur et transmettant un signal de sélection à la logique de traitement pour chaque circuit de mémoire, la logique de traitement envoyant un signal de sélection à chacun des circuits de mémoire. Dans un mode de réalisation, le circuit de mémoire 25 est un circuit de mémoire non volatile. Dans un autre mode de réalisation, le circuit mémoire non volatile est une mémoire morte (ROM), une mémoire morte programmable électriquement (EPROM), une mémoire morte effaçable électriquement (EEPROM) ou une mémoire flash. Dans un mode de réalisation, la logique de traitement comprend un registre dédié qui stocke le modèle de point d'arrêt. Dans un autre mode de réalisation, la logique de traitement comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du circuit de mémoire dans laquelle le microprocesseur estime que le modèle de point d'arrêt est stocké. Dans un autre mode de réalisation, la logique de traitement comprend un registre d'état de point d'arrêt qui stocke un état indiquant si l'adresse dans le registre d'adresse de point d'arrêt est utilisée comme point d'arrêt logiciel. Dans un autre mode de réalisation, la logique de traitement comprend un jeu de registres dédiés pour chaque point d'arrêt stocké par la logique de traitement, la logique de traitement stockant une pluralité de points d'arrêt logiciels. Selon un autre aspect de l'invention, un procédé permettant d'utiliser un point d'arrêt logiciel avec un circuit de mémoire comprend la réception d'une valeur d'adresse d'un microprocesseur au cours d'un accès en lecture du circuit de mémoire, la substitution à une valeur de données stockée dans le circuit de mémoire d'un modèle de point d'arrêt, et l'envoi de ce modèle de point d'arrêt au microprocesseur. Dans un mode de réalisation, le modèle de point d'arrêt est extrait d'une mémoire cache comprise dans une logique de traitement couplée au microprocesseur et au circuit de mémoire. Dans un autre mode de réalisation, le procédé comprend en outre un ou plusieurs circuits de mémoire supplémentaires couplés au microprocesseur, le modèle de point d'arrêt se substituant à une valeur dans l'un quelconque des circuits de mémoire. Dans un mode de réalisation particulier, l'accès en lecture est demandé par le microprocesseur durant l'exécution d'instructions de programme stockées dans le circuit de mémoire. Dans un mode de réalisation, une exception est forcée après que le modèle de point d'arrêt a été reçu par le microprocesseur afin de provoquer l'interruption de l'exécution des instructions du programme. Dans un autre mode de réalisation, le procédé comprend en outre la comparaison de la valeur d'adresse à au moins une adresse de point d'arrêt stockée dans un registre de la logique de traitement couplée au microprocesseur et au circuit de mémoire, la substitution à la valeur de données s'opérant seulement quand la valeur d'adresse correspond à au moins une adresse de point d'arrêt. Dans un mode de réalisation, la valeur de données issue du circuit de mémoire est transmise au microprocesseur si la valeur d'adresse ne correspond à aucune des adresses de points d'arrêt, la valeur de données étant stockée à l'adresse dans le circuit de mémoire correspondant à la valeur d'adresse. Dans un mode de réalisation particulier, le circuit de mémoire est un circuit de mémoire non volatile. Dans un mode de réalisation, le circuit de mémoire non volatile est une mémoire morte (ROM), une mémoire morte programmable effaçable (EPROM), une mémoire morte électriquement effaçable (EEPROM) ou une mémoire flash. Dans un mode de réalisation, la logique de traitement comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du modèle de point d'arrêt transmis au microprocesseur. Dans un autre mode de réalisation, la logique de traitement comprend un registre d'état de point d'arrêt qui stocke un état indiquant si l'adresse présente dans le registre d'adresse de point d'arrêt est utilisée comme point d'arrêt logiciel. Selon un autre aspect de l'invention, un procédé pour transférer des points d'arrêt logiciels dans un circuit de mémoire comprend la réception d'une adresse et de données durant un accès en écriture par un microprocesseur dans le circuit de mémoire, le stockage de cette adresse dans une mémoire cache de point d'arrêt dans une unité de gestion de point d'arrêt si les données correspondent à un modèle de point d'arrêt, et l'effacement de l'adresse stockée dans la mémoire cache de point d'arrêt de l'unité de gestion de point d'arrêt si les données ne correspondent pas au modèle de point d'arrêt. Dans un mode de réalisation, le stockage de l'adresse dans la mémoire cache de point d'arrêt comprend le stockage de l'adresse dans une mémoire disponible parmi une pluralité de mémoires caches de points d'arrêt, la mémoire cache de point d'arrêt disponible ne stockant pas une adresse de point d'arrêt logiciel différente. Dans un autre mode de réalisation, l'effacement de l'adresse stockée comprend l'effacement d'un registre d'état de point d'arrêt dans l'unité de gestion de point d'arrêt. Dans un mode de réalisation, l'effacement de l'adresse stockée comprend un effacement de la pluralité de registres d'état de point d'arrêt, le registre d'état de point d'arrêt effacé étant associé à l'adresse reçue. Dans un mode de réalisation particulier, le circuit de mémoire est l'un d'une pluralité de circuits de mémoire couplés au microprocesseur, chaque circuit de mémoire étant accessible par le microprocesseur. Dans un autre mode de réalisation, le procédé comprend en outre la réception d'une adresse durant un accès en lecture par le microprocesseur dans le circuit de mémoire et le transfert du modèle de point d'arrêt au microprocesseur, au lieu des données dans le circuit de mémoire, si l'adresse reçue durant l'accès en lecture correspond à une adresse stockée dans la mémoire cache de point d'arrêt de l'unité de gestion de point d'arrêt. Dans un mode de réalisation, le modèle de point d'arrêt est extrait d'un registre contenu dans l'unité de gestion de point d'arrêt. Dans un autre mode de réalisation, le circuit de 15 mémoire est un circuit de mémoire non volatile. Dans un mode de réalisation particulier, le circuit de mémoire non volatile est une mémoire morte (ROM), une mémoire morte électriquement programmable (EPROM), une mémoire morte électriquement effaçable (EEPROM), ou une mémoire flash. Dans un mode de réalisation, l'unité de gestion de point d'arrêt comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du modèle de point d'arrêt transmise au microprocesseur. Dans un autre mode de réalisation, un programme de débogage fournit l'adresse et les données reçues durant l'accès en écriture, afin de positionner ou d'effacer un point d'arrêt logiciel dans le circuit de mémoire. Dans un mode de réalisation, lorsque le programme de débogage souhaite effacer le point d'arrêt logiciel, les données transférées durant l'accès en écriture représentent l'instruction initiale à laquelle avait été substitué le modèle de point d'arrêt. Selon un autre aspect de l'invention, un système destiné à insérer un point d'arrêt logiciel dans une mémoire comprend un circuit de mémoire accessible par un microprocesseur via un bus de données et un bus d'adresses, ainsi qu'une logique de traitement couplée au circuit de mémoire, au bus de données et au bus d'adresses, cette logique de traitement permettant de positionner le point d'arrêt logiciel dans le circuit de mémoire en substituant à une valeur à lire dans le circuit de mémoire un modèle de point d'arrêt, le modèle de point d'arrêt étant transmis au microprocesseur sur le bus de données au lieu de cette valeur. Dans un mode de réalisation, le système comprend en outre un ou plusieurs circuits de mémoire supplémentaires couplés au microprocesseur, la logique de traitement substituant à une valeur à lire un modèle de point d'arrêt, dans l'un quelconque des circuits de mémoire. Dans un autre mode de réalisation, le système comprend en outre un décodeur d'adresses système couplé au microprocesseur et envoyant un signal de sélection à la logique de traitement pour chaque circuit de mémoire, la logique de traitement transférant ce signal de sélection à chacun des circuits de mémoire. Dans un mode de réalisation particulier, le circuit de mémoire est un circuit de mémoire non volatile. Dans un autre mode de réalisation, la logique de traitement comprend un jeu de registres dédiés à chaque point d'arrêt qui est stocké par la logique de traitement, la logique de traitement stockant une pluralité de points d'arrêt logiciels. La présente invention propose une architecture qui permet d'utiliser des points d'arrêt logiciels avec des circuits de mémoire dans lesquels des données ne peuvent être écrites par un simple accès en écriture depuis un microprocesseur, comme c'est le cas pour la plupart des circuits de mémoire non volatiles. La présente invention permet à de multiples circuits de mémoire de ce type de recevoir des points d'arrêt logiciels avec un minimum de logique et de registres supplémentaires, ce qui réduit ainsi sensiblement le coût du système. La figure 1 est un schéma synoptique illustrant un système de l'art antérieur comprenant un microprocesseur 10 et des circuits de mémoire; la figure 2 est un schéma synoptique illustrant un système selon la présente invention destiné à insérer des points d'arrêt logiciels dans des circuits de mémoire non volatile; la figure 3 est un schéma illustrant un exemple de logique utilisé dans l'unité de gestion de point d'arrêt logiciel de la figure 2 pour effacer et stocker des points d'arrêt logiciels; la figure 4 est un schéma illustrant un exemple de logique utilisé dans une unité de gestion de point d'arrêt logiciel de la figure 2 pour insérer des points d'arrêt logiciels; la figure 5 est un organigramme illustrant un procédé selon la présente invention destiné à positionner ou à effacer des points d'arrêt logiciels dans une mémoire non volatile; et la figure 6 est un organigramme illustrant un procédé selon la présente invention pour lire des points d'arrêt logiciels dans une mémoire non volatile. La présente invention concerne l'utilisation de points d'arrêt logiciels dans des circuits de mémoire pour interrompre l'exécution d'un programme sur des microcontrôleurs. La description qui suit est destinée à permettre à un homme du métier détenant des compétences ordinaires de réaliser et d'utiliser l'invention et elle s'inscrit dans le contexte d'une demande de brevet et de ses spécifications. Diverses modifications du mode de réalisation préféré, des principes génériques et des caractéristiques décrits dans le présent document apparaîtront aisément à l'homme du métier. La présente invention n'est donc pas limitée au mode de réalisation illustré, mais peut avoir la plus grande portée possible tout en restant conforme aux principes et aux caractéristiques décrits ici. La présente invention est décrite principalement en termes de systèmes particuliers proposés dans des configurations particulières. Cependant, un homme du métier détenant des compétences ordinaires reconnaîtra aisément que le procédé et le système peuvent fonctionner efficacement dans d'autres configurations. La présente invention est également décrite dans le contexte de procédés particuliers constitués de certaines étapes. Cependant, le procédé et le système fonctionnent efficacement dans le cadre d'autres procédés comportant des étapes différentes et/ou des étapes supplémentaires, tout en respectant les principes de la présente invention. Pour une description plus précise des caractéristiques de la présente invention, reportez-vous aux figures 1 à 6 associées à la description cidessous. La figure 1 est un schéma synoptique d'un système de l'art antérieur 10 intégrant un microprocesseur et des circuits de mémoire sur une puce. Le système 10 intègre le microprocesseur 12, le circuit de mémoire vive (RAM) 14, le circuit de mémoire non volatile (NVM) 16, le décodeur d'adresses système 18 et le multiplexeur de données binaires 20. Le microprocesseur 12 génère des signaux de commande en effectuant des accès en lecture ou en écriture à des circuits esclaves (tels les circuits de mémoire 14 et 16). Le circuit de RAM 14 est capable de stocker des données pouvant être réécrites ou effacées par la suite. Le circuit de NVM 16 stocke des données, mais ne peut généralement pas stocker un modèle de point d'arrêt logiciel, du fait que ce modèle ne peut être écrit dans la mémoire lors d'un simple accès en écriture par le microprocesseur. Par exemple, des circuits de mémoire non volatiles tels une ROM (mémoire morte), une EEFROM (mémoire morte effaçable électriquement) ou une mémoire flash ne conviennent pas à l'utilisation avec des modèles de point d'arrêt logiciel, au moins pour cette raison. Les signaux de commande du microprocesseur 12 comprennent un signal de commande de lecture/écriture 30, un bus de commande de taille d'accès 32, un bus d'adresses 34 et un bus d'écriture de données 36. Le signal de commande de lecture/écriture 30 sélectionne l'opération de lecture ou d'écriture d'un circuit de mémoire 14 ou 16. Le bus d'adresses 34 est couplé au décodeur d'adresses système 18; le bus de commande de taille d'accès 32 peut aussi être couplé au décodeur 18 si un désalignement des adresses doit être corrigé. Le décodeur d'adresses système 18 génère des signaux de sélection d'esclave vers chaque circuit esclave pour indiquer aux circuits esclaves d'effectuer un transfert demandé par le maître (le microcontrôleur 12), telle une opération de lecture ou d'écriture. Le signal de sélection d'esclave 38 est transmis au circuit de RAM 14 et le signal de sélection d'esclave 40 est transmis au circuit de ROM 16. Le bus de données d'écriture 36 couple le microprocesseur 12 aux circuits de mémoire 14 et 16 et transfère les données, issues du microprocesseur 12, qui doivent être écrites dans le circuit de RAM 14. Pour les accès en lecture, les bus de sortie 42 et 44 des circuits de mémoire 14 et 16, respectivement, sont couplés au multiplexeur de données binaires 20, qui multiplexe les bus de sortie 42 et 44 et transfère les données de sortie sur un bus de données de lecture 46 qui est re-couplé au microprocesseur 12. Le système de l'art antérieur 10 peut insérer des points d'arrêt logiciels dans le circuit de RAM 14 mais ne peut facilement utiliser des points d'arrêt logiciels dans le circuit de NVM 16 ou dans d'autres circuits de mémoire non volatiles associés, et présente de ce fait des limitations importantes dans un environnement de débogage et de test. La figure 2 est un schéma synoptique d'un mode de réalisation d'un système 100 selon la présente invention permettant d'insérer des points d'arrêt logiciels dans un système comprenant des circuits de mémoire volatiles et non volatiles. Le système 100 comprend le microprocesseur 102, le circuit de RAM 104, le circuit de mémoire non volatile (NVM) 106, le décodeur d'adresses système 108, l'unité de gestion de point d'arrêt logiciel (SBMU) 110 et le multiplexeur de données binaires 112. Le microprocesseur 102 génère des signaux de commande en effectuant des accès en lecture ou en écriture aux circuits esclaves (tels les circuits de mémoire 104 et 106). Dans le mode de réalisation décrit, le microprocesseur 102 est intégré à la même puce ou circuit intégré que les autres composants du système 100. Dans d'autres modes de réalisation, le microprocesseur 102 peut être présent séparément des autres composants. Le microprocesseur 102 peut être n'importe quel type de microcontrôleur approprié. Le circuit de RAM 104 permet de stocker des données qui peuvent ensuite être réécrites ou effacées, et il peut ainsi facilement stocker des points d'arrêt logiciels en provenance d'un agent de débogage exécuté à l'extérieur et fonctionnant via le microprocesseur 102. Le circuit de RAM 104 peut être l'un d'une variété de circuits de mémoire programmables existants, généralement une mémoire volatile telle une mémoire vive statique (SRAM). Le circuit de NVM 106 est un circuit de mémoire non volatile qui stocke des données pouvant être lues par le microprocesseur 102. Cependant, ces données ne peuvent facilement être écrites ou modifiées par un simple accès en écriture par le microprocesseur. Le terme circuit de mémoire non volatile , tel qu'utilisé ici, désigne une mémoire morte standard (programmable uniquement une fois), une mémoire morte programmable électriquement (EPROM), une mémoire morte effaçable électriquement (EEFROM) et une mémoire flash, ainsi que tous les autres types similaires de mémoire non volatile. Tous les types de mémoires mentionnés ne peuvent facilement être utilisés avec des points d'arrêt logiciels, car ils ne peuvent être programmés avec la même flexibilité qu'une mémoire volatile, telle la RAM 104, et que des données ne peuvent y être écrites par un simple accès en écriture par le microprocesseur. Les signaux de commande générés par le microprocesseur 102 comprennent un signal de commande de lecture/écriture 120, un bus de commande de taille d'accès 122, un bus d'adresses 124 et un bus d'écriture de données 126. Le signal de commande de lecture/écriture 120 sélectionne une opération de lecture ou d'écriture afin d'activer cette opération dans un circuit de mémoire 104 ou 106. Le bus d'adresses 124 est couplé au décodeur d'adresses système 108 pour transférer les adresses du circuit de mémoire 104 ou 106 au décodeur 108. Le bus de commande de taille d'accès 122 peut également être couplé au décodeur 108 si un désalignement d'adresses doit être corrigé. Le décodeur d'adresses système 108 génère des signaux de sélection d'esclave vers les circuits esclaves pour indiquer au circuit esclave approprié d'effectuer le transfert demandé par le maître (le microprocesseur 102), comme une opération de lecture ou d'écriture. Le signal de sélection d'esclave 128 est transmis au circuit de RAM 104 et le signal de sélection d'esclave 130 destiné au circuit de NVM 106 est transmis à l'unité de gestion de point d'arrêt logiciel (SBMU) 110. Le bus d'écriture de données 126 couple le microprocesseur 102 aux circuits de mémoire 104 et 106 et à la SBMU 110 et transfère les données du microprocesseur devant être écrites dans le circuit de mémoire 104 ou 106 à l'emplacement indiqué par la valeur d'adresse sur le bus d'adresses 124 (un bus d'écriture de données peut être utilisé pour le circuit de NVM 106 s'il s'agit d'une EEPROM ou une mémoire flash, par exemple). Un modèle de point d'arrêt logiciel peut être transmis sur le bus d'écriture de données 126 par un agent de débogage, qui est généralement utilisé pour le débogage d'une application. L'agent de débogage peut aussi transférer l'instruction initiale, qui a été remplacée par le modèle de point d'arrêt, sur le bus d'écriture 126, afin de remplacer le modèle de point d'arrêt. Lors d'un fonctionnement normal, lorsque le microprocesseur 102 exécute un programme qui extrait et exécute des instructions stockées dans la mémoire 104 ou 106 et extrait le modèle de point d'arrêt, il se produit une exception de façon à interrompre l'exécution du programme et un gestionnaire d'exceptions prend momentanément le contrôle du processeur,envoie des informations au programme de débogage, etc. La SBMU 110 gère les points d'arrêt logiciels positionnés dans le circuit de NVM 106. LA SBMU 110 filtre le signal entrant de sélection d'esclave 130 en direction circuit de NVM 106, en le remplaçant par un nouveau signal de sélection d'esclave 140 en direction du circuit de NVM 106. Le signal de sélection 140 est transmis au circuit de NVM 106 pour exécuter une opération de lecture normale si l'accès en lecture par le microprocesseur ne correspond pas à un point d'arrêt, c'est-à-dire quand l'accès en lecture se produit à une adresse qui n'est pas une adresse de point d'arrêt. Si l'accès en lecture est à une adresse de point d'arrêt, la SBMU 110 ne génère pas de signal de sélection 140 mais lui substitue le modèle de point d'arrêt via le bus de données de sortie SBMU 142. La SBMU 110 passe donc outre la réponse du circuit de NVM 106 transmise via le bus de sortie NVM 134 en filtrant le signal de sélection NVM 140 quand l'instruction extraite correspond à un point d'arrêt. Pour un accès en écriture au circuit de NVM 106, la SBMU 110 détecte et vérifie les opérations d'écriture. Si la SBMU 110 détecte l'écriture d'un modèle de point d'arrêt, l'adresse associée est stockée dans une mémoire cache d'adresse comme adresse de point d'arrêt, ce qui stocke en réalité le point d'arrêt logiciel dans le circuit de NVM 106. Si la SBMU 110 détecte l'écriture de l'instruction initiale à restaurer (données ne constituant pas le modèle de point d'arrêt), la mémoire cache d'adresses de points d'arrêt associée est alors libérée (vidée). Cette opération est décrite plus en détails ci-dessous et sur les figures 3-6. Le bus de sortie 132 du circuit de RAM 104, le bus de sortie 134 du circuit de NVM 106 et le bus de sortie 142 de la SBMU 110 sont couplés au multiplexeur de données binaires 112, qui multiplexe les bus de sortie 132, 134 et 140 et transfère des données sur ces bus vers le microprocesseur 102 via un bus de données de lecture 136. Le multiplexeur 112 reçoit également les signaux de sélection de mémoire 128 et 140, ainsi qu'un signal de sélection de SBMU 143, qui indique au multiplexeur de transférer les données sur le bus de données SBMU 142 via le bus de données de lecture 136 (quand un accès en lecture à une adresse de point d'arrêt est effectué), ou de transférer les données sur le bus de sortie NVM 134. À noter que des circuits de mémoire non volatile supplémentaires peuvent être couplés à l'unité de gestion de point d'arrêt logiciel (SBMU) 110, dans laquelle la SBMU peut insérer des points d'arrêt logiciels dans toutes les mémoires non volatiles connectées. Le décodeur d'adresses système 108 peut envoyer un signal de sélection supplémentaire à la SBMU 110 pour chaque circuit de mémoire non volatile supplémentaire utilisé, et la SBMU 110 peut envoyer un signal de sélection correspondant à un circuit de mémoire non volatile supplémentaire si nécessaire. Par exemple, un signal de sélection de décodeur 131 destiné à un deuxième circuit de mémoire non volatile peut être transmis du décodeur d'adresses système 108 à la SBMU 110, et la SBMU 110 peut envoyer en sortie le signal de sélection 141 au deuxième E circuit de mémoire non volatile (non illustré). Le fait d'avoir une seule unité telle la SBMU 110 pour contrôler les points d'arrêt logiciels destinés à de multiples circuits de mémoire non volatile est un avantage majeur de la présente invention, car ceci évite de dupliquer la logique de traitement ou la mémoire cache de la SBMU dans chaque circuit de mémoire non volatile supplémentaire, ce qui réduit ainsi sensiblement la logique et les registres nécessaires, ainsi que le coût du système. La figure 3 est un schéma d'un circuit de stockage et d'effacement de point d'arrêt 200 intégré à l'unité de gestion de point d'arrêt logiciel (SBMU) 110 de la figure 2. Ce circuit 200 est utilisé quand un agent de débogage souhaite stocker un point d'arrêt logiciel dans le circuit de NVM 106 ou quand cet agent de débogage souhaite restaurer l'instruction initiale dans le circuit de NVM 106 à l'emplacement de mémoire auquel est stocké le point d'arrêt logiciel. La SBMU 110 permet de stocker (créer) N points d'arrêt logiciels, en utilisant N jeux de registres dédiés dans la SBMU. Dans la description qui suit, le point d'arrêt logiciel stocké ou effacé est nommé I, et un ou plusieurs autres points d'arrêt logiciels sont nommés J, I et J étant des index dans la plage située entre les points d'arrêt 0 et (N-1). Un modèle de point d'arrêt logiciel est stocké dans un registre de modèle de point d'arrêt 202. Dans le mode de réalisation décrit, ce modèle de point d'arrêt est utilisé comme modèle pour tous les points d'arrêt stockés dans le circuit de NVM 106. Ce modèle, s'il est reconnu par le logiciel du microprocesseur pendant l'exécution normale du code, provoque une pause dans l'exécution du programme à des fins de débogage. Le modèle de point d'arrêt est transmis du registre 202 via le bus 204 (le bus 204 est équivalent au bus de sortie 142 sur la figure 2) vers le comparateur 206, qui compare ce modèle de point d'arrêt aux données reçues sur le bus d'écriture de données d'entrée 126. Les données transitant par le bus d'écriture de données 126 sont les données que le programme de débogage exécuté dans le microprocesseur 102 souhaite écrire dans le circuit de NVM 106. Si les données présentes sur le bus d'écriture 126 représentent un modèle de point d'arrêt, il s'agit alors d'une opération de stockage, dans laquelle le programme de débogage souhaite stocker le point d'arrêt à une adresse indiquée. Si les données sont d'autres données ne constituant pas le modèle de point d'arrêt, il est alors supposé qu'elles constituent une opération d'effacement, dans laquelle le programme de débogage souhaite restaurer les données initiales qui ont été stockées à l'adresse mémoire du point d'arrêt. Le comparateur 206 compare le modèle de point d'arrêt aux données et génère un drapeau de comparaison 208 qui indique si les deux entrées vers le comparateur sont égales (drapeau à l'état haut) ou non (drapeau à l'état bas). Si les données sur les deux entrées du comparateur sont égales, les données sur le bus d'écriture de données 126 correspondent au modèle de point d'arrêt logiciel. Les signaux de sélection en entrée des mémoires non volatiles 130 et 131 sont transmis par le décodeur d'adresses système 108, le signal 130 étant le signal de sélection destiné au circuit de NVM 106 et le signal 131 étant le signal de sélection destiné à un circuit de mémoire non volatile différent, s'il existe. Ces signaux sélectionnent l'une des mémoires non volatiles, dont le circuit de NVM 106, dont le microprocesseur souhaite lire les données. Si des circuits de mémoire non volatile supplémentaires sont utilisés, chaque circuit de mémoire supplémentaire peut alors avoir son propre signal, similaire aux signaux 130 et 131. Les signaux de sélection 130 et 131 (et tous les autres signaux de sélection) sont combinés logiquement à la porte OU 212 pour produire un signal de sélection global 214, indiquant qu'un circuit de mémoire non volatile a été sélectionné. Le drapeau de comparaison 208, le signal de commande de lecture/écriture 120 (avec une commande d'écriture ou une commande de lecture inversée, et issue du microprocesseur 102 comme illustré sur la figure 2) et le signal de sélection globale 214 sont transmis à la porte ET 216, qui génère une commande de stockage de point d'arrêt 218. Cette commande de stockage de point d'arrêt, si elle est à l'état vrai, indique que l'accès en écriture du programme de débogage au circuit de NVM 106 est une opération de stockage de point d'arrêt et que les caractéristiques de l'accès en écriture courant sur le bus 126 doivent être stockées. Un registre d'état de point d'arrêt 220 stocke un bit d'état ou étiquette , pour le point d'arrêt I; si ce bit est à 0, les registres du point d'arrêt I ne sont pas en cours d'utilisation et, si le bit est à 1, ces registres sont en cours d'utilisation. Le bit du registre d'état de point d'arrêt I 220 est transmis en sortie sur la ligne 222 à un inverseur 224, qui génère un signal drapeau 226. Ce signal drapeau 226, s'il est à l'état haut, indique que le jeu de registres du point d'arrêt I n'est pas utilisé. Il existe également (N-1) autres points d'arrêt logiciels qui peuvent être stockés dans ses registres dédiés de la SBMU 110. Chacun de ces autres points d'arrêt a un registre d'état de point d'arrêt similaire au registre 220 et un registre d'adresse similaire au registre d'adresse 236, ainsi que sa propre logique similaire au circuit 200, qui ne sont pas illustrés sur la figure 3. Tout autre point d'arrêt logiciel ayant été créé avant le point d'arrêt courant I est mentionné ici comme point d'arrêt J, J étant inférieur à I. Les bits de registre d'état 227 des registres d'état de point d'arrêt J sont soumis à une opération ET au niveau binaire à la porte ET 228, c'est-à-dire que le produit logique (ET) de tous ces bits d'état J est effectué. Un signal drapeau d'état 230 est généré depuis la porte ET 228 pour indiquer que tout l'ensemble précédent de registres J (J Le signal drapeau d'état 230, la commande de stockage de point d'arrêt 218 et le signal drapeau d'état 226 sont tous transmis à la porte ET 232 qui génère une commande de stockage de point d'arrêt I 234. La commande 234 est donc générée uniquement quand tous les points d'arrêt précédents sont utilisés, quand le registre de point d'arrêt courant est vacant pour stocker un point d'arrêt, et quand les données entrantes d'une opération d'écriture correspondent au modèle de point d'arrêt. La commande de stockage de point d'arrêt 234 est transmise de la porte ET 232 au registre d'adresse de point d'arrêt 1 236 et est utilisée pour permettre le stockage de la valeur du bus d'adresses d'entrée 124 dans le registre d'adresse 236. Les autres parties du circuit 200 sont utilisées quand un point d'arrêt logiciel doit être stocké ou effacé. Le bus d'adresses d'entrée 124 est comparé aux adresses stockées dans les registres de modèles de points d'arrêt. Ceci est accompli quand l'adresse 237 stockée dans le registre d'adresse de point d'arrêt 1 236 est transmise au comparateur 238 pour être comparée de manière permanente aux données sur le bus d'adresses 124. Un drapeau de comparaison 240 est généré par le comparateur 238 et ce drapeau indique si les données sur le bus d'adresses 124 correspondent ou non à l'adresse de point d'arrêt à laquelle le point d'arrêt logiciel I a été positionné. Si le drapeau de comparaison 240 est vrai, une correspondance s'est produite et l'action à exécuter est déterminée par le fait qu'il s'agit ou non d'un accès en écriture, pour effacer le point d'arrêt depuis le programme de débogage ou d'un accès en lecture pendant l'exécution du programme pour lire cette instruction à l'adresse de point d'arrêt. Cet accès en écriture ou en lecture est indiqué par le signal de commande 120. Si l'accès courant est un accès en écriture, le point d'arrêt associé I utilisé peut être effacé (si le modèle entrant n'est pas identique au modèle de point d'arrêt logiciel) ou stocké (si le modèle entrant est identique au modèle de point d'arrêt logiciel). Si l'accès courant est un accès en lecture, la SBMU 110 peut alors transférer le modèle de point d'arrêt logiciel stocké dans le registre de modèle de point d'arrêt 202 sur le bus de données de sortie 142 vers le multiplexeur de données binaires 112, comme illustré sur la figure 2, pour qu'il revienne ainsi au microprocesseur 102. Pour effacer le point d'arrêt logiciel I, le drapeau de comparaison de modèle de point d'arrêt logiciel correspondant 208 est transmis à un inverseur 250 pour être inversé, ce qui génère un drapeau 252 qui, s'il est à l'état haut, indique que les données sur le bus d'écriture de données entrantes 126 ne sont pas identiques au modèle de point d'arrêt logiciel, et qu'il s'agit donc une opération d'effacement. Le drapeau 252, le signal de commande d'entrée d'écriture 120 et le signal de sélection globale 214 sont transmis à la porte ET 254, qui génère une commande d'effacement de point d'arrêt 256. La commande d'effacement de point d'arrêt 256, le bit de registre d'état de point d'arrêt 1 222 (indiquant, s'il est à l'état haut, que le point d'arrêt I est utilisé) et le drapeau de comparaison d'adresse 240 (indiquant que les adresses des données à écrire et du registre d'adresse 236 correspondent) sont tous transmis à la porte ET 258, qui génère un signal d'effacement de point d'arrêt I 260. La commande d'effacement de point d'arrêt logiciel I 260 est donc active uniquement quand les registres de points d'arrêt I sont utilisés, quand le bus d'adresses en entrée correspond à l'adresse de point d'arrêt I et quand l'accès en écriture courant ne doit pas stocker un modèle de point d'arrêt. Lors du stockage ou de l'effacement d'un point d'arrêt I, le registre d'état de point d'arrêt 1 220 doit être positionné ou effacé, respectivement. Un registre d'état d'activation de gestion de point d'arrêt 262 stocke un état activé ou un état désactivé pour la gestion du point d'arrêt. Dans le mode de réalisation décrit, un point d'arrêt peut être stocké seulement quand ce registre 262 est activé. Généralement, le registre de gestion 262 est activé pendant le débogage. L'état de ce registre est transmis comme signal 264 à une porte ET 266. La commande de stockage de point d'arrêt I 234 et le bit de registre d'état de point d'arrêt 1 222 sont transmis à une porte OU 268, dont la sortie 271 est une commande de positionnement de bit de registre d'état de point d'arrêt transmise à la porte ET 266. La troisième entrée vers la porte ET 266 est la commande d'effacement de point d'arrêt 1 260 qui a été inversée par l'inverseur 270 sur la ligne 272. La porte ET 266 génère une commande de positionnement/effacement de bit de registre d'état de point d'arrêt 1274, qui est transmise au registre d'état de point d'arrêt I 220 pour définir son état. Ainsi, un état en cours d'utilisation de point d'arrêt I n'est créé dans le registre d'état de point d'arrêt 1 220 que lorsqu'une commande de stockage de point d'arrêt I 234 est active et lorsque la commande d'effacement de point d'arrêt 1 260 n'est pas active. Au contraire, le registre d'état de point d'arrêt I 220 n'est effacé que lorsqu'une commande d'effacement de point d'arrêt I 260 est active (ce qui est aussi le cas quand la gestion de point d'arrêt du système est désactivée via le registre 262). Quand le registre d'état de point d'arrêt I est effacé, le jeu de registres de points d'arrêt I est alors considéré comme effacé et une nouvelle adresse d'un nouveau point d'arrêt peut alors être écrite dans le registre d'adresse 236 (par-dessus l'ancienne adresse). La figure 4 est le schéma d'un circuit de transmission de point d'arrêt 300 intégré à l'unité de gestion de point d'arrêt logiciel (SBMU) 110 de la figure 2 pour insérer un modèle de point d'arrêt au lieu de l'instruction stockée, pendant un accès en lecture. Le modèle de point d'arrêt est inséré quand le microprocesseur 102 demande les données d'adresse de point d'arrêt, durant une opération de lecture du circuit de NVM 106. Quand le microprocesseur 102 (ou un autre circuit maître) exécute un accès en lecture à un emplacement de mémoire auquel un point d'arrêt logiciel a été précédemment positionné, le circuit 300 a pour rôle de transférer le modèle de point d'arrêt à placer sur le bus de données de lecture 136, au lieu des données de mémoire non volatile 106 auxquelles le microprocesseur 102 doit accéder. Le modèle de point d'arrêt est stocké dans le registre de modèle de point d'arrêt 202 (également illustré sur la figure 3) qui transmet en sortie le modèle de point d'arrêt sur le bus 142 vers le multiplexeur 112, comme illustré sur la figure 2. Le circuit 300 comprend une logique supplémentaire utilisée pour filtrer les signaux de sélection de multiples circuits de mémoire non volatile, tels le circuit de NVM 106, en générant le signal de sélection associé à la SBMU 110, qui est transmis au multiplexeur 112. Cette logique supplémentaire utilisée pour le filtrage des signaux de sélection est utilisée si une architecture multiplexée est utilisée pour le bus de données de lecture ou toute autre architecture, en raison du fait que la sélection des données ou leur activation (pour les bus trois états) nécessite ce filtrage. L'adresse stockée dans le registre d'adresse de point d'arrêt I 236 et le bus d'adresses entrant 124 est transmise à un comparateur 304, qui compare les signaux et génère un signal 306 de comparaison indiquant si les données sur le bus d'adresses 124 correspondent à l'adresse associée à l'emplacement I de point d'arrêt. Les signaux de sélection de mémoire non volatile 130 et 131 sont transmis à la porte OU 212 (figure 2) pour produire le signal de sélection de mémoire non volatile unique 214. Le signal de sélection 214, le signal de comparaison d'adresse de correspondance de point d'arrêt I 306, le signal de commande de lecture 312 provenant du microprocesseur 212 (qui est activé, c'est-à-dire à l'état haut, pendant les opérations de lecture) et le bit de registre d'état de point d'arrêt 1 222 provenant du registre d'état de point d'arrêt 1 220 sont transmis en entrée à la porte ET 314. La porte ET 314 génère le signal 316 qui indique si l'accès en lecture courant correspond à l'adresse de point d'arrêt I. Chacun des N points d'arrêt logiciels fournis par le système 100 nécessite un comparateur couplé à une porte ET utilisant les mêmes signaux d'entrée, semblables à ceux du comparateur 304 et de la porte ET 314, non illustrés sur la figure 4. Les adresses des autres points d'arrêt J utilisés dans la SBMU 110 sont comparées à l'accès en lecture courant par leurs comparateurs et portes ET respectifs. Tous les signaux résultants (similaires au signal 316), indiquant chacun si l'accès en lecture courant correspond à une adresse de point d'arrêt logiciel J (J étant différent de I), sont représentés par le bus 318 sur la figure 4 et sont transmis aux entrées d'une porte OU 320. Le signal de point d'arrêt 1 316 est également transmis en entrée à la porte OU 320 et la porte OU génère un signal 322 qui indique si l'accès en lecture courant correspond à un emplacement de point d'arrêt logiciel, c'est-à-dire correspond à l'adresse d'un point d'arrêt actuellement utilisé par le programme de débogage dans la SBMU 110. Le signal 322 est transmis en entrée à la porte ET 324 avec le drapeau d'état 264 depuis le registre d'état d'activation de gestion de point d'arrêt logiciel 262, qui indique si la gestion de point d'arrêt est activée, (le registre 262 est positionné suite à une configuration effectuée par le microprocesseur 102 ou à partir d'une configuration de test; la gestion de point d'arrêt et la SBMU 110 peuvent être activées ou désactivées (elles sont désactivées par défaut), de telle sorte que la fonction SBMU n'est activée que si nécessaire). La sortie de la porte ET 324 est un signal de sélection de données SBMU 143. Le signal de sélection 143 est transmis depuis la SBMU et est également transmis en entrée à un inverseur 330 qui génère un drapeau 332 indiquant s'il y a (drapeau à l'état bas) ou s'il n'y a pas (drapeau à l'état haut), un point d'arrêt positionné à l'adresse en cours d'accès. Le drapeau 332 est utilisé comme signal de porte pour les signaux de sélection 140 et 141, le drapeau 332 étant transmis en entrée à la porte ET 334 et en entrée à la porte ET 336 et le signal de sélection 130 est transmis en entrée à la porte ET 334 tandis que le signal de sélection 131 est transmis en entrée à la porte ET 336. Le drapeau 332 a ainsi pour rôle de ne laisser passer le signal de sélection de mémoire requis 130 vers le circuit de NVM 106 comme signal 140 (ou le signal 131 vers un circuit de mémoire non volatile différent comme signal 141) que si l'accès en lecture n'est pas effectué à un emplacement stockant. un point d'arrêt logiciel. Ceci permet au circuit de NVM 106 de transférer les données ne correspondant pas à un point d'arrêt stockées à l'adresse requise par le microprocesseur. Le signal de sélection SBMU 143 est reçu et utilisé par le multiplexeur de bus de données de lecture 112 pour amener le multiplexeur 112 à sélectionner le modèle de point d'arrêt reçu depuis la SBMU 110 sur le bus 142 à partir du registre de modèle de point d'arrêt lorsqu'un accès en lecture à une adresse de point d'arrêt est effectué, au lieu de sélectionner les données provenant du bus 134 reçues par le circuit de NVM 106 (le registre de modèle de point d'arrêt 202 envoie toujours de préférence le modèle de point d'arrêt en sortie). Le multiplexeur 112 envoie alors le modèle de point d'arrêt au microprocesseur 102 sur le bus 136, comme illustré sur la figure 2. La présente invention permet ainsi de positionner des points d'arrêt logiciels dans plusieurs circuits de mémoire différents, en utilisant un minimum de composants. La logique de la SBMU 110 est capable de gérer plusieurs points d'arrêt logiciels à une fréquence de système (vitesse maximale), sur un ou plusieurs circuits de mémoire, sans ajout de mémoire cache ni de logique complexe. Par exemple, la logique décrite ci- dessus sur les figures 3-4 permet de gérer N points d'arrêt logiciels et ne nécessite qu'un registre programmable capable de définir le modèle de point d'arrêt (programmé via le programme de débogage actuellement utilisé avec sa propre valeur spécifique de modèle de point d'arrêt), un comparateur 206 pour comparer les données obtenues durant un accès en écriture avec celles du modèle de point d'arrêt, N registres pour le stockage d'adresses, N bits de registre d'état 220 pour transférer l'état en cours d'utilisation aux points d'arrêt, et N comparateurs 238 pour comparer une adresse d'entrée aux adresses stockées dans les registres d'adresses. Dans des modes de réalisation alternatifs, des composants supplémentaires peuvent être intégrés. Par exemple, N registres (N étant le nombre de points d'arrêt) peuvent être présents pour mémoriser la taille du modèle de point d'arrêt écrit, en plus de l'adresse du point d'arrêt, si le point d'arrêt est différent d'une taille de données par défaut. Un registre d'état supplémentaire peut être intégré pour indiquer si le nombre maximal de points d'arrêt logiciels que la SBMU 110 est capable de gérer, ont été positionnés. En outre, des étapes de pipeline peuvent être incluses dans l'installation selon l'invention, si requis par l'architecture de bus de système, comme on le sait. Si ces étapes de pipeline sont utilisées, les bus et les lignes illustrées sur la figure 2 peuvent alors passer par un étage ou des étages de pipelines, avant ou après que leurs équivalents tels qu'illustrés sur les figures 3 ou 4. Par exemple, les bus et les lignes 120, 124, 130, 131 et 126 de la figure 2 peuvent passer par un étage de synchronisation (étage de pipeline) avant leur réception par les composants, comme illustré sur les figures 3 et 4. La figure 5 est un organigramme illustrant un procédé 400 de la présente invention pour la gestion de points d'arrêt logiciels pendant un accès en écriture à une mémoire non volatile, comme le circuit de NVM 16. Ce processus décrit le positionnement ou l'effacement d'un point d'arrêt logiciel, le processus comprenant la lecture d'un modèle de point d'arrêt précédemment créé est décrit ci-dessous sur la figure 6. Le procédé commence à l'étape 402 puis, à l'étape 404, la SBMU 110 reçoit une commande d'accès en écriture de point d'arrêt par le microprocesseur 102, généralement issue d'un agent de programme de débogage (généralement exécuté par un circuit séparé du microprocesseur) que l'utilisateur utilise pendant les procédures de débogage. L'accès en écriture comprend généralement une adresse en mémoire (transférée sur le bus d'adresses 124) et des données qui doivent être écrites à cette adresse (transférées sur le bus d'écriture de données 126). Bien qu'il s'agisse d'un circuit de mémoire non volatile 106 dans lequel il n'est pas possible d'écrire ou d'effacer simplement des données en cours de fonctionnement, le programme de débogage l'ignore et suppose qu'une écriture est possible. Par exemple, le programme de débogage peut utiliser un port JTAG pour transférer les données directement à un circuit de mémoire via le microprocesseur sans nécessiter qu'aucune application soit exécutée par le microprocesseur pour dialoguer avec la mémoire. L'agent de débogage peut vouloir, avec cet accès en écriture, positionner (c'est-à-dire, écrire) une instruction de point d'arrêt logiciel à une adresse particulière du circuit de NVM 106, désignée ici par adresse de point d'arrêt . Ceci entraîne généralement le remplacement de l'instruction initiale existant à l'adresse de point d'arrêt par l'instruction (ou modèle ) de point d'arrêt. (L'instruction initiale peut être stockée dans un emplacement de mémoire intermédiaire ou un registre pendant que le point d'arrêt est utilisé). Il est souhaitable de placer le modèle de point d'arrêt à un emplacement de mémoire auquel un accès sera effectué pendant l'exécution du programme stocké dans le circuit de NVM 106, en cours de débogage, et l'utilisateur désire interrompre l'exécution du programme à des fins de débogage, par exemple pour vérifier la valeur de variables ou d'emplacements de mémoire, examiner la sortie, etc., à un point désiré de l'exécution du programme. Lors d'opérations usuelles de positionnement de points d'arrêt logiciels, le microprocesseur copie généralement l'instruction initiale présente à l'adresse de point d'arrêt à un emplacement intermédiaire avant l'écriture du modèle de point d'arrêt à l'adresse de point d'arrêt. L'instruction initiale est l'une des instructions du programme exécuté (et mis au point). L'emplacement intermédiaire peut être situé n'importe où dans la mémoire ou dans une autre zone de stockage. En variante, le programme de débogage peut désirer enlever ou effacer un point d'arrêt logiciel précédemment écrit durant l'accès en écriture effectué à l'étape 404, en remplaçant le modèle de point d'arrêt par l'instruction initiale. À l'étape 406, la SBMU 110 récupère l'adresse et les données transmises pendant l'accès en écriture en direction du circuit de NVM 106, et compare la partie données de l'accès en écriture au modèle de point d'arrêt, que la SBMU 110 a stocké dans ses registres de modèles de point d'arrêt. On suppose ici que le modèle de point d'arrêt est unique et n'est semblable à aucune des données utilisées. À l'étape 408, il est vérifié si les données d'entrée pour l'accès en écriture sont identiques à celles du modèle de point d'arrêt. Si c'est le cas, le programme de débogage tente de positionner un point d'arrêt à l'adresse indiquée durant l'accès en écriture (adresse de point d'arrêt). Dans ce cas, à l'étape 410, la SBMU 110 stocke la partie adresse de l'accès en écriture dans une mémoire cache interne, comme le registre 236 dans le mode de réalisation de la figure 3, sous forme d'une adresse de point d'arrêt étiquetée. L'adresse est stockée uniquement dans un registre vacant ne contenant pas déjà un autre point d'arrêt logiciel en cours d'utilisation. Cette adresse est étiquetée, ce qui signifie que le point d'arrêt à cette adresse est utilisé et qu'aucun autre point d'arrêt ne peut être stocké à cette adresse. Par exemple, un registre d'état comme le registre 220 de la figure 3 peut être associé au registre d'adresse 202 et peut avoir un bit positionné comme étiquette. Le processus s'achève alors à l'étape 414. Si les données d'entrée ne correspondent pas au modèle de point d'arrêt à l'étape 408, le processus continue alors à l'étape 412. Ceci est supposé indiquer que le programme de débogage tente d'effacer le point d'arrêt en remplaçant le modèle de point d'arrêt à l'adresse indiquée durant l'accès en écriture par l'instruction initiale; l'instruction initiale est la partie données de l'accès en écriture. Dans ce cas, la SBMU 110 vide (libère) la mémoire cache stockant l'adresse de point d'arrêt qui correspond à l'adresse en entrée durant l'accès en écriture. Par exemple, dans le mode de réalisation de la figure 3, l'effacement du point d'arrêt est réalisé en vidant le registre d'état 236, associé à la mémoire cache d'adresse correspondante (l'adresse présente dans le registre d'adresse n'a pas à être effacée et une autre adresse de point d'arrêt peut être réécrite sur celle-ci). Pour préserver la simplicité de la logique et des fonctions de la SBMU et la compatibilité des fonctions du système, la SBMU n'examine pas l'instruction initiale (les données elles-mêmes) qui est comprise dans l'accès en écriture et suppose que, si le programme de débogage souhaite stocker à l'adresse de point d'arrêt des données qui ne sont pas le modèle de point d'arrêt, il s'agit de l'instruction initiale. À noter que, du fait que l'instruction initiale n'a jamais été vraiment remplacée par le modèle de point d'arrêt dans le circuit de NVM 106, l'instruction initiale transmise durant l'accès en écriture n'a pas à être écrite dans une mémoire. Le processus se termine alors à l'étape 414. Dans le mode de réalisation décrit, la SBMU 110 peut stocker N points d'arrêt, N étant inférieur de un au nombre de registres programmables (un registre est nécessaire pour programmer le modèle de point d'arrêt lié au programme de débogage utilisé). Si tous les registres disponibles stockent un point d'arrêt en cours d'utilisation, les points d'arrêt supplémentaires ne sont alors pas stockés. Cependant, aussitôt qu'un point d'arrêt logiciel est effacé, un nouveau point d'arrêt peut alors être positionné. La figure 6 est un organigramme illustrant un procédé 450 selon la présente invention pour la gestion de points d'arrêt logiciels pour l'accès en lecture à une mémoire non volatile pendant l'exécution du programme. Ce processus décrit la situation dans laquelle le microprocesseur 102 exécute un programme ayant des instructions de code stockées dans le circuit de NVM 106, une demande est effectuée pour lire l'adresse de point d'arrêt et un point d'arrêt logiciel est transmis au microprocesseur. Cet accès en lecture se produit pendant l'exécution du programme exécuté par le microprocesseur 102 et n'est généralement pas initialisé par l'agent de débogage. Si le microprocesseur accède à ce qu'il reconnaît être un modèle de point d'arrêt, il interrompt l'exécution, ce qui permet à l'utilisateur de déboguer le programme plus facilement. Le procédé démarre à l'étape 452 et à l'étape 454, la SBMU 110 reçoit une demande d'accès en lecture (extraction de code) qui est destinée aux données stockées dans le circuit de NVM 106. La demande d'extraction de code comprend l'adresse dans le circuit de NVM dont on souhaite extraire les données, présente sur le bus d'adresses 124 de la figure 2. À l'étape 456, la SBMU vérifie si l'adresse de la demande d'extraction correspond à l'une quelconque des adresses en mémoire cache étiquetées. Les adresses étiquetées sont les adresses utilisées pour stocker un point d'arrêt logiciel, et les points d'arrêt logiciels sont en réalité stockés dans une mémoire cache (tels les registres) dans la SBMU 110, comme décrit ci-dessus en référence à la figure 3, et non dans le circuit de NVM 106. Si l'adresse de la demande d'accès en lecture ne correspond à aucune des adresses étiquetées, l'adresse demandée ne contient pas de point d'arrêt et le processus continue à l'étape 458, à laquelle la SBMU 110 permet un accès en lecture normal des données à l'adresse demandée dans le circuit de NVM 106. Dans le mode de réalisation de la figure 2, la SBMU 110 peut transférer le signal de sélection 140 au circuit de NVM 106 pour permettre l'opération de lecture. Les données demandées à l'adresse demandée sont transmises par le circuit de NVM 106 au multiplexeur 112 et au microprocesseur via le bus de données de lecture 136. Le processus se termine à l'étape 462. Si l'adresse de la demande d'extraction ne correspond pas à une adresse étiquetée à l'étape 456, c'est que le microprocesseur 102 a demandé une adresse stockant un point d'arrêt et le processus continue à l'étape 460. À l'étape 460, la SBMU 110 ignore (ou passe outre) l'accès en lecture au circuit de NVM 106 et le remplace par le modèle de point d'arrêt quelles que soient les données à cette adresse dans le circuit de NVM. Le modèle de point d'arrêt, stocké dans un registre du SMBU, est transmis au multiplexeur 112, qui envoie ce modèle au microprocesseur 102 via le bus de données de lecture 136. Le processus se termine à l'étape 462. Le microprocesseur 102 exécute le modèle de point d'arrêt reçu et exécute les routines d'exception appropriées. Après l'exception, si l'instruction initiale (qui a été remplacée par le modèle de point d'arrêt) doit être exécutée, la demande d'accès en écriture pour restaurer l'instruction initiale (et effacer le point d'arrêt) peut être traitée par la SBMU, comme décrit ci- dessus en référence à la figure 4. De même, le processus de la figure 4 gère un accès en écriture pour positionner un point d'arrêt dans le circuit de NVM 106. À noter que la présente invention peut convenir à d'autres types de circuits de mémoire qui peuvent être volatiles, qui ne sont pas facilement utilisés avec des points d'arrêt logiciels et dans lesquels l'écriture est impossible par un simple accès en écriture du microprocesseur. Bien que la présente invention ait été décrite selon les modes de réalisàtion illustrés, un homme du métier détenant des compétences ordinaires reconnaîtra aisément que des variantes de ces modes de réalisation peuvent être réalisées et que ces variantes peuvent être réalisées selon l'esprit et la portée de la présente invention. De nombreuses modifications peuvent donc être effectuées par un homme du métier détenant des compétences ordinaires sans s'écarter de l'esprit et de la portée des revendications annexées. REVENDICATIONS 1. Système pour insérer un point d'arrêt logiciel dans une mémoire, comprenant: un microprocesseur; un circuit de mémoire accessible via un bus de 5 données et un bus d'adresses couplés au microprocesseur; et une logique de traitement couplée au circuit de mémoire et au microprocesseur, la logique de traitement permettant de positionner un point d'arrêt logiciel dans le circuit de mémoire en substituant à une valeur à lire dans le circuit de mémoire un modèle de point d'arrêt, le modèle de point d'arrêt étant transmis au microprocesseur via le bus de données au lieu de cette valeur. 2. Système selon la revendication 1 comprenant en outre un ou plusieurs circuits de mémoire supplémentaires couplés au microprocesseur, dans lequel la logique de traitement substitue à une valeur à lire le modèle de point d'arrêt, dans l'un quelconque des circuits de mémoire. 3. Système selon la revendication 2 dans lequel la logique de traitement transfère un signal de sélection à chaque circuit de mémoire couplé à la logique de traitement. 4. Système selon la revendication 2, ce système comprenant un multiplexeur couplé à chaque sortie des circuits de mémoire, dans lequel le multiplexeur envoie des données sur le bus de données depuis l'un quelconque des circuits de mémoire dans le microprocesseur. 5. Système selon la revendication 2 comprenant en outre un décodeur d'adresses système couplé au microprocesseur et transférant un signal de sélection à la logique de traitement pour chaque circuit de mémoire, la logique de traitement transmettant ce signal de sélection à chacun des circuits de mémoire. 6. Système selon la revendication 1 dans lequel le 10 circuit de mémoire est un circuit de mémoire non volatile. 7. Système selon la revendication 6 dans lequel le circuit de mémoire non volatile est une mémoire morte (ROM), une mémoire morte programmable électriquement (EPROM), une mémoire morte effaçable électriquement (EEPROM) ou une mémoire flash. 8. Système selon la revendication 1 dans lequel la 20 logique de traitement comprend un registre dédié qui stocke le modèle de point d'arrêt. 9. Système selon la revendication 1 dans lequel la logique de traitement comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du circuit de mémoire à laquelle le microprocesseur a déterminé que le modèle de point d'arrêt devait être stocké. 10. Système selon la revendication 9 dans lequel la logique de traitement comprend un registre d'état de point d'arrêt qui stocke un état indiquant si l'adresse dans le registre d'adresse de point d'arrêt est utilisée comme point d'arrêt logiciel. 11. Système selon la revendication 1 dans lequel la logique de traitement comprend un jeu de registres dédiés pour chaque point d'arrêt qui est stocké par la logique de traitement, la logique de traitement stockant une pluralité de points d'arrêt logiciels. 12. Procédé d'insertion d'un point d'arrêt logiciel destiné à être utilisé dans un circuit de mémoire, ce 10 procédé comprenant: la réception d'une valeur d'adresse depuis un microprocesseur durant l'accès en lecture du circuit de mémoire; et la substitution à une valeur de données stockée dans le circuit de mémoire d'un modèle de point d'arrêt et le transfert de ce modèle de point d'arrêt au microprocesseur. 13. Procédé selon la revendication 12 dans lequel le modèle de point d'arrêt est extrait d'une mémoire cache intégrée à la logique de traitement couplée au microprocesseur et au circuit de mémoire. 14. Procédé selon la revendication 12 comprenant en outre un ou plusieurs circuits de mémoire supplémentaires couplés au microprocesseur, dans lequel une valeur provenant de l'un quelconque des circuits de mémoire est remplacée par le modèle de point d'arrêt. 15. Procédé selon la revendication 12 dans lequel l'accès en lecture est demandé par le microprocesseur pendant l'exécution d'instructions de programme stockées dans le circuit de mémoire. 16. Procédé selon la revendication 15 dans lequel une exception est forcée après que le modèle de point d'arrêt a été reçu par le microprocesseur pour provoquer un arrêt pendant l'exécution des instructions du programme. 17. Procédé selon la revendication 12 comprenant en outre une comparaison de la valeur d'adresse à au moins une adresse de point d'arrêt stockée dans un registre de la logique de traitement couplée au microprocesseur et au circuit de mémoire, dans lequel la substitution à la valeur de données n'est effectuée que si la valeur d'adresse correspond à au moins une adresse de point d'arrêt. 18. Procédé selon la revendication 17 dans lequel la valeur de données issue du circuit de mémoire est transmise au microprocesseur si la valeur d'adresse ne correspond à aucune des adresses de points d'arrêt, dans lequel la valeur de données est stockée à une adresse du circuit de mémoire correspondant à la valeur d'adresse. 19. Procédé selon la revendication 12 dans lequel le circuit de mémoire est un circuit de mémoire non 25 volatile. 20. Procédé selon la revendication 19 dans laquelle le circuit de mémoire non volatile est une mémoire morte (ROM), une mémoire morte programmable effaçable (EPROM), une mémoire morte électriquement effaçable (EEPROM) ou une mémoire flash. 21. Procédé selon la revendication 13 dans lequel la logique de traitement comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du modèle de point d'arrêt transmise au microprocesseur. 22. Procédé selon la revendication 21 dans laquelle la logique de traitement comprend un registre d'état de point d'arrêt qui stocke un état indiquant si l'adresse dans le registre d'adresse de point d'arrêt est utilisée comme point d'arrêt logiciel. 23. Procédé pour insérer des points d'arrêt logiciels dans un circuit de mémoire, comprenant: la réception d'une adresse et de données pendant 15 l'accès en écriture depuis un microprocesseur dans le circuit de mémoire; le stockage de l'adresse dans la mémoire cache de point d'arrêt d'une unité de gestion de point d'arrêt si les données correspondent à un modèle de point d'arrêt; et l'effacement de l'adresse stockée dans la mémoire cache de point d'arrêt de l'unité de gestion de point d'arrêt si l'adresse stockée correspond à l'adresse reçue et que les données ne correspondent pas au modèle de point d'arrêt. 24. Procédé selon la revendication 23 dans lequel le stockage de l'adresse dans la mémoire cache de point d'arrêt comprend le stockage de l'adresse dans une mémoire disponible parmi une pluralité de mémoires caches de points d'arrêt, la mémoire cache de point d'arrêt disponible ne stockant pas une adresse de point d'arrêt logiciel différente. 25. Procédé selon la revendication 23 dans lequel l'effacement de l'adresse stockée comprend l'effacement d'un registre d'état de point d'arrêt de l'unité de gestion de point d'arrêt. 26. Procédé selon la revendication 23 dans lequel l'effacement de l'adresse stockée comprend l'effacement d'un registre parmi une pluralité de registres d'états de point d'arrêt, le registre d'état de point d'arrêt effacé étant associé à l'adresse reçue. 27. Procédé selon la revendication 23 dans lequel le circuit de mémoire est un circuit de mémoire parmi une pluralité de circuits de mémoire couplés au microprocesseur, chacun étant accessible par le microprocesseur. 28. Procédé selon la revendication 23 comprenant en 20 outre: la réception d'une adresse durant l'accès en lecture du microprocesseur au circuit de mémoire; et le transfert du modèle de point d'arrêt au microprocesseur, au lieu des données du circuit de mémoire, si l'adresse reçue durant l'accès en lecture correspond à une adresse stockée dans la mémoire cache de point d'arrêt de l'unité de gestion de point d'arrêt. 29. Procédé selon la revendication 28 dans lequel le 30 modèle de point d'arrêt est extrait d'un registre intégré à l'unité de gestion de point d'arrêt. 30. Procédé selon la revendication 23 dans lequel le circuit de mémoire est un circuit de mémoire non volatile. 31. Procédé selon la revendication 30 dans lequel le circuit de mémoire non volatile est une mémoire morte (ROM), une mémoire morte programmable électriquement (EPROM), une mémoire morte effaçable électriquement (EEPROM) ou une mémoire flash. 32. Procédé selon la revendication 23 dans lequel l'unité de gestion de point d'arrêt comprend un registre d'adresse de point d'arrêt qui stocke l'adresse du modèle de point d'arrêt transmis au microprocesseur. 33. Procédé selon la revendication 23 dans lequel l'adresse et les données reçues durant l'accès en écriture sont transmises par un programme de débogage qui désire positionner ou effacer un point d'arrêt logiciel dans le circuit de mémoire. 34. Procédé selon la revendication 33 dans lequel, lorsque le programme de débogage souhaite effacer le point d'arrêt logiciel, les données transmises durant l'accès en écriture représentent l'instruction initiale qui a été remplacée par le modèle de point d'arrêt. 35. Système pour insérer un point d'arrêt logiciel dans une mémoire, ce système comprenant: un circuit de mémoire accessible par un microprocesseur via un bus de données et un bus d'adresses; et une logique de traitement couplée au circuit de mémoire, au bus de données et au bus d'adresses, cette logique de traitement étant utilisée pour positionner un point d'arrêt logiciel dans le circuit de mémoire en substituant à une valeur à lire dans le circuit de mémoire un modèle de point d'arrêt, le modèle de point d'arrêt étant transmis au microprocesseur sur le bus de données au lieu de cette valeur. 36. Système selon la revendication 35 comprenant en outre un ou plusieurs circuits de mémoire supplémentaires couplés au microprocesseur, dans lequel la logique de traitement substitue à une valeur à lire un modèle de point d'arrêt dans n'importe lequel des circuits de mémoire. 37. Système selon la revendication 36 comprenant en outre un décodeur d'adresses système couplé au microprocesseur et envoyant un signal de sélection à la logique de traitement pour chaque circuit de mémoire, la logique de traitement envoyant un signal de sélection à chacun des circuits de mémoire. 38. Système selon la revendication 35 dans lequel le 25 circuit de mémoire est un circuit de mémoire non volatile. 39. Système selon la revendication 35 dans lequel la logique de traitement comprend un ensemble de registres dédiés à chaque point d'arrêt stocké par la logique de traitement, dans lequel la logiquement de traitement stocke une pluralité de points d'arrêt logiciels.